keri-ts 1.0.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 (742) hide show
  1. package/README.md +23 -0
  2. package/esm/keri/npm/src/acdc/chaining.js +213 -0
  3. package/esm/keri/npm/src/acdc/dhking.js +716 -0
  4. package/esm/keri/npm/src/acdc/messaging.js +2 -0
  5. package/esm/keri/npm/src/acdc/observing.js +40 -7
  6. package/esm/keri/npm/src/acdc/regbasing.js +13 -2
  7. package/esm/keri/npm/src/acdc/regengine.js +71 -23
  8. package/esm/keri/npm/src/acdc/regeventing.js +163 -44
  9. package/esm/keri/npm/src/acdc/registering.js +93 -14
  10. package/esm/keri/npm/src/acdc/relating.js +59 -0
  11. package/esm/keri/npm/src/acdc/salting.js +720 -0
  12. package/esm/keri/npm/src/acdc/scheming.js +94 -39
  13. package/esm/keri/npm/src/acdc/unblinding.js +1042 -0
  14. package/esm/keri/npm/src/app/{authenticating.js → bootstrap/authenticating.js} +39 -18
  15. package/esm/keri/npm/src/app/bootstrap/bootstrapping.js +109 -0
  16. package/esm/keri/npm/src/app/{oobi-replies.js → bootstrap/oobi-replies.js} +8 -6
  17. package/esm/keri/npm/src/app/{oobiery.js → bootstrap/oobiery.js} +161 -75
  18. package/esm/keri/npm/src/app/credentials/credential-importing.js +201 -0
  19. package/esm/keri/npm/src/app/credentials/credential-proposals.js +120 -0
  20. package/esm/keri/npm/src/app/credentials/credential-revoking.js +165 -0
  21. package/esm/keri/npm/src/app/credentials/credential-workflows.js +365 -0
  22. package/esm/keri/npm/src/app/credentials/tel-publishing.js +27 -0
  23. package/esm/keri/npm/src/app/{verifying.js → credentials/verifying.js} +41 -6
  24. package/esm/keri/npm/src/app/delivery/forwarding.js +600 -0
  25. package/esm/keri/npm/src/app/delivery/introducing.js +68 -0
  26. package/esm/keri/npm/src/app/{reply-streams.js → delivery/reply-streams.js} +52 -7
  27. package/esm/keri/npm/src/app/delivery/respondant.js +159 -0
  28. package/esm/keri/npm/src/app/{stored-replies.js → delivery/stored-replies.js} +4 -4
  29. package/esm/keri/npm/src/app/exchanges/essr.js +111 -0
  30. package/esm/keri/npm/src/app/exchanges/exchange-messaging.js +66 -0
  31. package/esm/keri/npm/src/app/exchanges/exchanging.js +1354 -0
  32. package/esm/keri/npm/src/app/{configing.js → identity/configing.js} +4 -4
  33. package/esm/keri/npm/src/app/{delegating.js → identity/delegating.js} +99 -29
  34. package/esm/keri/npm/src/app/{endpoint-roleing.js → identity/endpoint-roleing.js} +36 -36
  35. package/esm/keri/npm/src/app/{habbing.js → identity/habbing.js} +232 -150
  36. package/esm/keri/npm/src/app/{keeping.js → identity/keeping.js} +60 -56
  37. package/esm/keri/npm/src/app/{organizing.js → identity/organizing.js} +47 -21
  38. package/esm/keri/npm/src/app/ipex/ipex-building.js +162 -0
  39. package/esm/keri/npm/src/app/{ipex-credentialing.js → ipex/ipex-credentialing.js} +142 -31
  40. package/esm/keri/npm/src/app/ipex/ipex-graph.js +243 -0
  41. package/esm/keri/npm/src/app/ipex/ipex-grouping.js +664 -0
  42. package/esm/keri/npm/src/app/{ipex-node-authentication.js → ipex/ipex-node-authentication.js} +83 -6
  43. package/esm/keri/npm/src/app/ipex/ipex-v2.js +692 -0
  44. package/esm/keri/npm/src/app/{ipexing.js → ipex/ipexing.js} +58 -1
  45. package/esm/keri/npm/src/app/mailbox/forward-handler.js +228 -0
  46. package/esm/keri/npm/src/app/{mailbox-director.js → mailbox/mailbox-director.js} +120 -15
  47. package/esm/keri/npm/src/app/mailbox/mailbox-poller.js +305 -0
  48. package/esm/keri/npm/src/app/mailbox/mailbox-sse.js +254 -0
  49. package/esm/keri/npm/src/app/{mailboxing.js → mailbox/mailboxing.js} +118 -67
  50. package/esm/keri/npm/src/app/mailbox/topic-routing.js +54 -0
  51. package/esm/keri/npm/src/app/multisig/group-members.js +173 -0
  52. package/esm/keri/npm/src/app/{grouping.js → multisig/grouping.js} +384 -70
  53. package/esm/keri/npm/src/app/multisig/multisig-messaging.js +164 -0
  54. package/esm/keri/npm/src/app/multisig/multisig-workflows.js +821 -0
  55. package/esm/keri/npm/src/app/{notifying.js → notifications/notifying.js} +8 -14
  56. package/esm/keri/npm/src/app/{signaling.js → notifications/signaling.js} +1 -1
  57. package/esm/keri/npm/src/app/{parsering.js → protocol/parsering.js} +86 -18
  58. package/esm/keri/npm/src/app/protocol/protocol-processing.js +245 -0
  59. package/esm/keri/npm/src/app/protocol/reactor.js +55 -0
  60. package/esm/keri/npm/src/app/{query-replies.js → queries/query-replies.js} +57 -6
  61. package/esm/keri/npm/src/app/queries/querying.js +306 -0
  62. package/esm/keri/npm/src/app/queries/witness-inquisitor.js +415 -0
  63. package/esm/keri/npm/src/app/{abortable.js → runtime/abortable.js} +43 -4
  64. package/esm/keri/npm/src/app/runtime/agent-runtime.js +633 -0
  65. package/esm/keri/npm/src/app/runtime/cue-runtime.js +61 -0
  66. package/esm/keri/npm/src/app/runtime/runtime-clock.js +6 -0
  67. package/esm/keri/npm/src/app/{byte-source.js → transport/byte-source.js} +36 -6
  68. package/esm/keri/npm/src/app/transport/cesr-egress.js +317 -0
  69. package/esm/keri/npm/src/app/{cesr-http.js → transport/cesr-http.js} +20 -55
  70. package/esm/keri/npm/src/app/transport/http-client.js +172 -0
  71. package/esm/keri/npm/src/app/transport/http-messenger.js +52 -0
  72. package/esm/keri/npm/src/app/transport/http-stream-messenger.js +60 -0
  73. package/esm/keri/npm/src/app/transport/httping.js +57 -0
  74. package/esm/keri/npm/src/app/transport/message-source.js +77 -0
  75. package/esm/keri/npm/src/app/transport/messengering.js +68 -0
  76. package/esm/keri/npm/src/app/{socket-source.js → transport/socket-source.js} +39 -2
  77. package/esm/keri/npm/src/app/transport/tcp-egress.js +377 -0
  78. package/esm/keri/npm/src/app/transport/tcp-messenger.js +162 -0
  79. package/esm/keri/npm/src/app/transport/tcp-stream-messenger.js +40 -0
  80. package/esm/keri/npm/src/app/transport/transport-error.js +14 -0
  81. package/esm/keri/npm/src/app/witness/http-endpoints.js +185 -0
  82. package/esm/keri/npm/src/app/witness/ingress.js +148 -0
  83. package/esm/keri/npm/src/app/witness/receipt-client.js +248 -0
  84. package/esm/keri/npm/src/app/witness/receipt-messages.js +29 -0
  85. package/esm/keri/npm/src/app/witness/receipting.js +323 -0
  86. package/esm/keri/npm/src/app/witness/registration.js +50 -0
  87. package/esm/keri/npm/src/cli/common/bootstrap.js +12 -0
  88. package/esm/keri/npm/src/{app/cli → cli}/common/context.js +47 -6
  89. package/esm/keri/npm/src/{app/cli → cli}/common/existing.js +9 -11
  90. package/esm/keri/npm/src/cli/common/parsing.js +279 -0
  91. package/esm/keri/npm/src/cli/common/passcode.js +66 -0
  92. package/esm/keri/npm/src/cli/common/tel-completion.js +24 -0
  93. package/esm/keri/npm/src/{app/cli → cli}/common/witness-auth.js +2 -2
  94. package/esm/keri/npm/src/cli/credentials/ipex.js +702 -0
  95. package/esm/keri/npm/src/cli/credentials/vc.js +399 -0
  96. package/esm/keri/npm/src/{app/cli → cli/endpoints}/did.js +63 -36
  97. package/esm/keri/npm/src/{app/cli → cli/endpoints}/ends.js +33 -28
  98. package/esm/keri/npm/src/{app/cli → cli/endpoints}/loc.js +16 -11
  99. package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +134 -0
  100. package/esm/keri/npm/src/{app/cli → cli/endpoints}/oobi.js +35 -32
  101. package/esm/keri/npm/src/{app/cli → cli/identity}/aid.js +8 -7
  102. package/esm/keri/npm/src/{app/cli → cli/identity}/challenge.js +60 -49
  103. package/esm/keri/npm/src/{app/cli → cli/identity}/delegate.js +61 -26
  104. package/esm/keri/npm/src/{app/cli → cli/identity}/export.js +9 -8
  105. package/esm/keri/npm/src/cli/identity/incept.js +181 -0
  106. package/esm/keri/npm/src/cli/identity/init.js +153 -0
  107. package/esm/keri/npm/src/cli/identity/interact.js +84 -0
  108. package/esm/keri/npm/src/{app/cli → cli/identity}/list.js +7 -6
  109. package/esm/keri/npm/src/{app/cli → cli/identity}/rotate.js +60 -57
  110. package/esm/keri/npm/src/cli/index.js +38 -0
  111. package/esm/keri/npm/src/{app/cli → cli/messaging}/exchange.js +24 -22
  112. package/esm/keri/npm/src/{app/cli → cli/messaging}/multisig.js +165 -156
  113. package/esm/keri/npm/src/{app/cli → cli/messaging}/notifications.js +26 -22
  114. package/esm/keri/npm/src/{app/cli → cli}/output.js +1 -1
  115. package/esm/keri/npm/src/{app/cli → cli/tools}/annotate.js +10 -4
  116. package/esm/keri/npm/src/{app/cli → cli/tools}/benchmark.js +15 -4
  117. package/esm/keri/npm/src/{app/cli → cli/tools}/db-dump.js +11 -10
  118. package/esm/keri/npm/src/{app/cli → cli/tools}/saidify.js +3 -2
  119. package/esm/keri/npm/src/{app/cli → cli/tools}/sign.js +16 -10
  120. package/esm/keri/npm/src/{app/cli → cli/tools}/verify.js +10 -10
  121. package/esm/keri/npm/src/core/attachment-countering.js +31 -1
  122. package/esm/keri/npm/src/core/{exchange-proofing.js → exchange/exchange-proofing.js} +32 -2
  123. package/esm/keri/npm/src/core/{protocol-exchanging.js → exchange/protocol-exchanging.js} +26 -4
  124. package/esm/keri/npm/src/core/genus-framing.js +44 -0
  125. package/esm/keri/npm/src/core/{eventing.js → kel/eventing.js} +57 -25
  126. package/esm/keri/npm/src/core/{kever-decisions.js → kel/kever-decisions.js} +24 -12
  127. package/esm/keri/npm/src/core/{kever.js → kel/kever.js} +4 -4
  128. package/esm/keri/npm/src/core/logger.js +3 -3
  129. package/esm/keri/npm/src/core/{kram-policy.js → mailbox/kram-policy.js} +14 -4
  130. package/esm/keri/npm/src/core/{kram-pruning.js → mailbox/kram-pruning.js} +3 -3
  131. package/esm/keri/npm/src/core/{kram-signatures.js → mailbox/kram-signatures.js} +1 -1
  132. package/esm/keri/npm/src/core/{kram-staging.js → mailbox/kram-staging.js} +6 -6
  133. package/esm/keri/npm/src/core/{kram-time.js → mailbox/kram-time.js} +4 -3
  134. package/esm/keri/npm/src/core/{kraming.js → mailbox/kraming.js} +2 -2
  135. package/esm/keri/npm/src/core/protocol-eventing.js +1 -1
  136. package/esm/keri/npm/src/core/protocol-serialization.js +9 -34
  137. package/esm/keri/npm/src/core/routing.js +52 -17
  138. package/esm/keri/npm/src/db/baser-defaults.js +11 -0
  139. package/esm/keri/npm/src/db/basing.js +89 -232
  140. package/esm/keri/npm/src/db/core/lmdber.js +102 -63
  141. package/esm/keri/npm/src/db/escrowing.js +73 -49
  142. package/esm/keri/npm/src/db/exchange/exchange-nests.js +54 -0
  143. package/esm/keri/npm/src/db/exchange/exchange-records.js +7 -0
  144. package/esm/keri/npm/src/db/index.js +5 -4
  145. package/esm/keri/npm/src/db/keeping.js +122 -3
  146. package/esm/keri/npm/src/db/{kram-factors.js → mailbox/kram-factors.js} +1 -1
  147. package/esm/keri/npm/src/db/{mailboxing.js → mailbox/mailboxing.js} +3 -3
  148. package/esm/keri/npm/src/db/reger.js +38 -29
  149. package/esm/keri/npm/src/db/{kel-replay.js → replay/kel-replay.js} +11 -4
  150. package/esm/keri/npm/src/db/{tel-replay.js → replay/tel-replay.js} +34 -0
  151. package/esm/keri/npm/src/db/{witness-replay.js → replay/witness-replay.js} +2 -2
  152. package/esm/keri/npm/src/db/subing.js +2 -3
  153. package/esm/keri/npm/src/did/webs/artifacts.js +15 -18
  154. package/esm/keri/npm/src/did/webs/designated-aliases.js +5 -7
  155. package/esm/keri/npm/src/did/webs/resolving.js +73 -56
  156. package/esm/keri/npm/src/library/index.js +1 -1
  157. package/esm/keri/npm/src/npm/cli.js +1 -1
  158. package/esm/keri/npm/src/npm/index.js +1 -1
  159. package/esm/keri/npm/src/runtime/index.js +79 -47
  160. package/esm/keri/npm/src/vdr/backer-state.js +55 -0
  161. package/esm/keri/npm/src/vdr/credential-tsn-record.js +59 -0
  162. package/esm/keri/npm/src/vdr/credentialing.js +84 -82
  163. package/esm/keri/npm/src/vdr/eventing.js +592 -204
  164. package/esm/keri/npm/src/vdr/registry-tsn-record.js +55 -0
  165. package/esm/keri/npm/src/vdr/revoking.js +90 -0
  166. package/esm/keri/npm/src/vdr/tel-anchor.js +29 -0
  167. package/esm/keri/npm/src/vdr/tel-publication.js +178 -0
  168. package/esm/keri/npm/src/{app/version.js → version.js} +2 -2
  169. package/package.json +5 -3
  170. package/types/_dnt.polyfills.d.ts +6 -0
  171. package/types/_dnt.polyfills.d.ts.map +1 -1
  172. package/types/acdc/chaining.d.ts +35 -0
  173. package/types/acdc/chaining.d.ts.map +1 -0
  174. package/types/acdc/dhking.d.ts +136 -0
  175. package/types/acdc/dhking.d.ts.map +1 -0
  176. package/types/acdc/messaging.d.ts.map +1 -1
  177. package/types/acdc/observing.d.ts +18 -7
  178. package/types/acdc/observing.d.ts.map +1 -1
  179. package/types/acdc/regbasing.d.ts +3 -1
  180. package/types/acdc/regbasing.d.ts.map +1 -1
  181. package/types/acdc/regengine.d.ts +9 -4
  182. package/types/acdc/regengine.d.ts.map +1 -1
  183. package/types/acdc/regeventing.d.ts +24 -7
  184. package/types/acdc/regeventing.d.ts.map +1 -1
  185. package/types/acdc/registering.d.ts +22 -6
  186. package/types/acdc/registering.d.ts.map +1 -1
  187. package/types/acdc/registraring.d.ts +1 -1
  188. package/types/acdc/registraring.d.ts.map +1 -1
  189. package/types/acdc/relating.d.ts +21 -0
  190. package/types/acdc/relating.d.ts.map +1 -0
  191. package/types/acdc/salting.d.ts +241 -0
  192. package/types/acdc/salting.d.ts.map +1 -0
  193. package/types/acdc/scheming.d.ts +1 -1
  194. package/types/acdc/scheming.d.ts.map +1 -1
  195. package/types/acdc/unblinding.d.ts +150 -0
  196. package/types/acdc/unblinding.d.ts.map +1 -0
  197. package/types/app/bootstrap/authenticating.d.ts +54 -0
  198. package/types/app/bootstrap/authenticating.d.ts.map +1 -0
  199. package/types/app/bootstrap/bootstrapping.d.ts +45 -0
  200. package/types/app/bootstrap/bootstrapping.d.ts.map +1 -0
  201. package/types/app/{oobi-replies.d.ts → bootstrap/oobi-replies.d.ts} +1 -1
  202. package/types/app/bootstrap/oobi-replies.d.ts.map +1 -0
  203. package/types/app/{oobiery.d.ts → bootstrap/oobiery.d.ts} +98 -25
  204. package/types/app/bootstrap/oobiery.d.ts.map +1 -0
  205. package/types/app/credentials/credential-importing.d.ts +29 -0
  206. package/types/app/credentials/credential-importing.d.ts.map +1 -0
  207. package/types/app/credentials/credential-proposals.d.ts +27 -0
  208. package/types/app/credentials/credential-proposals.d.ts.map +1 -0
  209. package/types/app/credentials/credential-revoking.d.ts +44 -0
  210. package/types/app/credentials/credential-revoking.d.ts.map +1 -0
  211. package/types/app/credentials/credential-workflows.d.ts +149 -0
  212. package/types/app/credentials/credential-workflows.d.ts.map +1 -0
  213. package/types/app/{schema-resolving.d.ts → credentials/schema-resolving.d.ts} +2 -2
  214. package/types/app/credentials/schema-resolving.d.ts.map +1 -0
  215. package/types/app/credentials/tel-publishing.d.ts +16 -0
  216. package/types/app/credentials/tel-publishing.d.ts.map +1 -0
  217. package/types/app/{verifying.d.ts → credentials/verifying.d.ts} +19 -7
  218. package/types/app/credentials/verifying.d.ts.map +1 -0
  219. package/types/app/delivery/forwarding.d.ts +227 -0
  220. package/types/app/delivery/forwarding.d.ts.map +1 -0
  221. package/types/app/delivery/introducing.d.ts +21 -0
  222. package/types/app/delivery/introducing.d.ts.map +1 -0
  223. package/types/app/delivery/reply-streams.d.ts +49 -0
  224. package/types/app/delivery/reply-streams.d.ts.map +1 -0
  225. package/types/app/delivery/respondant.d.ts +52 -0
  226. package/types/app/delivery/respondant.d.ts.map +1 -0
  227. package/types/app/{stored-replies.d.ts → delivery/stored-replies.d.ts} +1 -1
  228. package/types/app/delivery/stored-replies.d.ts.map +1 -0
  229. package/types/app/exchanges/essr.d.ts +53 -0
  230. package/types/app/exchanges/essr.d.ts.map +1 -0
  231. package/types/app/exchanges/exchange-messaging.d.ts +73 -0
  232. package/types/app/exchanges/exchange-messaging.d.ts.map +1 -0
  233. package/types/app/exchanges/exchanging.d.ts +379 -0
  234. package/types/app/exchanges/exchanging.d.ts.map +1 -0
  235. package/types/app/{challenging.d.ts → identity/challenging.d.ts} +3 -3
  236. package/types/app/identity/challenging.d.ts.map +1 -0
  237. package/types/app/{configing.d.ts → identity/configing.d.ts} +1 -1
  238. package/types/app/identity/configing.d.ts.map +1 -0
  239. package/types/app/{delegating.d.ts → identity/delegating.d.ts} +52 -15
  240. package/types/app/identity/delegating.d.ts.map +1 -0
  241. package/types/app/{endpoint-roleing.d.ts → identity/endpoint-roleing.d.ts} +24 -13
  242. package/types/app/identity/endpoint-roleing.d.ts.map +1 -0
  243. package/types/app/{habbing.d.ts → identity/habbing.d.ts} +73 -32
  244. package/types/app/identity/habbing.d.ts.map +1 -0
  245. package/types/app/{keeping.d.ts → identity/keeping.d.ts} +19 -5
  246. package/types/app/identity/keeping.d.ts.map +1 -0
  247. package/types/app/{organizing.d.ts → identity/organizing.d.ts} +19 -4
  248. package/types/app/identity/organizing.d.ts.map +1 -0
  249. package/types/app/ipex/ipex-building.d.ts +30 -0
  250. package/types/app/ipex/ipex-building.d.ts.map +1 -0
  251. package/types/app/{ipex-credentialing.d.ts → ipex/ipex-credentialing.d.ts} +33 -6
  252. package/types/app/ipex/ipex-credentialing.d.ts.map +1 -0
  253. package/types/app/ipex/ipex-graph.d.ts +28 -0
  254. package/types/app/ipex/ipex-graph.d.ts.map +1 -0
  255. package/types/app/ipex/ipex-grouping.d.ts +112 -0
  256. package/types/app/ipex/ipex-grouping.d.ts.map +1 -0
  257. package/types/app/{ipex-node-authentication.d.ts → ipex/ipex-node-authentication.d.ts} +10 -5
  258. package/types/app/ipex/ipex-node-authentication.d.ts.map +1 -0
  259. package/types/app/ipex/ipex-v2.d.ts +71 -0
  260. package/types/app/ipex/ipex-v2.d.ts.map +1 -0
  261. package/types/app/{ipexing.d.ts → ipex/ipexing.d.ts} +21 -6
  262. package/types/app/ipex/ipexing.d.ts.map +1 -0
  263. package/types/app/mailbox/forward-handler.d.ts +68 -0
  264. package/types/app/mailbox/forward-handler.d.ts.map +1 -0
  265. package/types/app/mailbox/mailbox-director.d.ts +252 -0
  266. package/types/app/mailbox/mailbox-director.d.ts.map +1 -0
  267. package/types/app/mailbox/mailbox-poller.d.ts +149 -0
  268. package/types/app/mailbox/mailbox-poller.d.ts.map +1 -0
  269. package/types/app/mailbox/mailbox-sse.d.ts +63 -0
  270. package/types/app/mailbox/mailbox-sse.d.ts.map +1 -0
  271. package/types/app/{mailboxing.d.ts → mailbox/mailboxing.d.ts} +92 -40
  272. package/types/app/mailbox/mailboxing.d.ts.map +1 -0
  273. package/types/app/mailbox/topic-routing.d.ts +18 -0
  274. package/types/app/mailbox/topic-routing.d.ts.map +1 -0
  275. package/types/app/multisig/group-members.d.ts +60 -0
  276. package/types/app/multisig/group-members.d.ts.map +1 -0
  277. package/types/app/{grouping.d.ts → multisig/grouping.d.ts} +142 -19
  278. package/types/app/multisig/grouping.d.ts.map +1 -0
  279. package/types/app/multisig/multisig-messaging.d.ts +97 -0
  280. package/types/app/multisig/multisig-messaging.d.ts.map +1 -0
  281. package/types/app/multisig/multisig-workflows.d.ts +85 -0
  282. package/types/app/multisig/multisig-workflows.d.ts.map +1 -0
  283. package/types/app/{notifying.d.ts → notifications/notifying.d.ts} +4 -5
  284. package/types/app/notifications/notifying.d.ts.map +1 -0
  285. package/types/app/notifications/signaling.d.ts.map +1 -0
  286. package/types/app/{parsering.d.ts → protocol/parsering.d.ts} +40 -11
  287. package/types/app/protocol/parsering.d.ts.map +1 -0
  288. package/types/app/{protocol-host-policy.d.ts → protocol/protocol-host-policy.d.ts} +1 -10
  289. package/types/app/protocol/protocol-host-policy.d.ts.map +1 -0
  290. package/types/app/protocol/protocol-processing.d.ts +140 -0
  291. package/types/app/protocol/protocol-processing.d.ts.map +1 -0
  292. package/types/app/protocol/reactor.d.ts +43 -0
  293. package/types/app/protocol/reactor.d.ts.map +1 -0
  294. package/types/app/queries/query-replies.d.ts +78 -0
  295. package/types/app/queries/query-replies.d.ts.map +1 -0
  296. package/types/app/queries/querying.d.ts +155 -0
  297. package/types/app/queries/querying.d.ts.map +1 -0
  298. package/types/app/queries/witness-inquisitor.d.ts +150 -0
  299. package/types/app/queries/witness-inquisitor.d.ts.map +1 -0
  300. package/types/app/runtime/abortable.d.ts +39 -0
  301. package/types/app/runtime/abortable.d.ts.map +1 -0
  302. package/types/app/runtime/agent-runtime.d.ts +348 -0
  303. package/types/app/runtime/agent-runtime.d.ts.map +1 -0
  304. package/types/app/runtime/cue-runtime.d.ts +33 -0
  305. package/types/app/runtime/cue-runtime.d.ts.map +1 -0
  306. package/types/app/runtime/runtime-clock.d.ts +28 -0
  307. package/types/app/runtime/runtime-clock.d.ts.map +1 -0
  308. package/types/app/runtime/runtime-turn.d.ts.map +1 -0
  309. package/types/app/transport/byte-source.d.ts +41 -0
  310. package/types/app/transport/byte-source.d.ts.map +1 -0
  311. package/types/app/transport/cesr-egress.d.ts +117 -0
  312. package/types/app/transport/cesr-egress.d.ts.map +1 -0
  313. package/types/app/{cesr-http.d.ts → transport/cesr-http.d.ts} +4 -27
  314. package/types/app/transport/cesr-http.d.ts.map +1 -0
  315. package/types/app/transport/http-client.d.ts +99 -0
  316. package/types/app/transport/http-client.d.ts.map +1 -0
  317. package/types/app/transport/http-messenger.d.ts +37 -0
  318. package/types/app/transport/http-messenger.d.ts.map +1 -0
  319. package/types/app/transport/http-stream-messenger.d.ts +30 -0
  320. package/types/app/transport/http-stream-messenger.d.ts.map +1 -0
  321. package/types/app/transport/httping.d.ts +19 -0
  322. package/types/app/transport/httping.d.ts.map +1 -0
  323. package/types/app/transport/message-source.d.ts +22 -0
  324. package/types/app/transport/message-source.d.ts.map +1 -0
  325. package/types/app/transport/messengering.d.ts +41 -0
  326. package/types/app/transport/messengering.d.ts.map +1 -0
  327. package/types/app/{socket-source.d.ts → transport/socket-source.d.ts} +8 -0
  328. package/types/app/transport/socket-source.d.ts.map +1 -0
  329. package/types/app/transport/tcp-egress.d.ts +118 -0
  330. package/types/app/transport/tcp-egress.d.ts.map +1 -0
  331. package/types/app/transport/tcp-messenger.d.ts +69 -0
  332. package/types/app/transport/tcp-messenger.d.ts.map +1 -0
  333. package/types/app/transport/tcp-stream-messenger.d.ts +25 -0
  334. package/types/app/transport/tcp-stream-messenger.d.ts.map +1 -0
  335. package/types/app/transport/transport-error.d.ts +12 -0
  336. package/types/app/transport/transport-error.d.ts.map +1 -0
  337. package/types/app/witness/http-endpoints.d.ts +77 -0
  338. package/types/app/witness/http-endpoints.d.ts.map +1 -0
  339. package/types/app/witness/ingress.d.ts +65 -0
  340. package/types/app/witness/ingress.d.ts.map +1 -0
  341. package/types/app/witness/receipt-client.d.ts +82 -0
  342. package/types/app/witness/receipt-client.d.ts.map +1 -0
  343. package/types/app/witness/receipt-messages.d.ts +21 -0
  344. package/types/app/witness/receipt-messages.d.ts.map +1 -0
  345. package/types/app/witness/receipting.d.ts +117 -0
  346. package/types/app/witness/receipting.d.ts.map +1 -0
  347. package/types/app/witness/registration.d.ts +27 -0
  348. package/types/app/witness/registration.d.ts.map +1 -0
  349. package/types/cli/common/bootstrap.d.ts +5 -0
  350. package/types/cli/common/bootstrap.d.ts.map +1 -0
  351. package/types/{app/cli → cli}/common/context.d.ts +10 -5
  352. package/types/cli/common/context.d.ts.map +1 -0
  353. package/types/{app/cli → cli}/common/existing.d.ts +2 -4
  354. package/types/cli/common/existing.d.ts.map +1 -0
  355. package/types/{app/cli → cli}/common/parsing.d.ts +26 -15
  356. package/types/cli/common/parsing.d.ts.map +1 -0
  357. package/types/cli/common/passcode.d.ts +9 -0
  358. package/types/cli/common/passcode.d.ts.map +1 -0
  359. package/types/cli/common/rendering.d.ts.map +1 -0
  360. package/types/cli/common/tel-completion.d.ts +8 -0
  361. package/types/cli/common/tel-completion.d.ts.map +1 -0
  362. package/types/{app/cli → cli}/common/witness-auth.d.ts +1 -1
  363. package/types/cli/common/witness-auth.d.ts.map +1 -0
  364. package/types/cli/credentials/ipex.d.ts +110 -0
  365. package/types/cli/credentials/ipex.d.ts.map +1 -0
  366. package/types/cli/credentials/vc.d.ts +42 -0
  367. package/types/cli/credentials/vc.d.ts.map +1 -0
  368. package/types/{app/cli → cli/endpoints}/did.d.ts +5 -1
  369. package/types/cli/endpoints/did.d.ts.map +1 -0
  370. package/types/{app/cli → cli/endpoints}/ends.d.ts +9 -1
  371. package/types/cli/endpoints/ends.d.ts.map +1 -0
  372. package/types/cli/endpoints/loc.d.ts.map +1 -0
  373. package/types/cli/endpoints/oobi-clean.d.ts +8 -0
  374. package/types/cli/endpoints/oobi-clean.d.ts.map +1 -0
  375. package/types/{app/cli → cli/endpoints}/oobi.d.ts +2 -0
  376. package/types/cli/endpoints/oobi.d.ts.map +1 -0
  377. package/types/cli/identity/aid.d.ts.map +1 -0
  378. package/types/{app/cli → cli/identity}/challenge.d.ts +5 -1
  379. package/types/cli/identity/challenge.d.ts.map +1 -0
  380. package/types/cli/identity/delegate.d.ts.map +1 -0
  381. package/types/cli/identity/export.d.ts.map +1 -0
  382. package/types/{app/cli → cli/identity}/incept.d.ts +2 -0
  383. package/types/cli/identity/incept.d.ts.map +1 -0
  384. package/types/{app/cli → cli/identity}/init.d.ts +2 -0
  385. package/types/cli/identity/init.d.ts.map +1 -0
  386. package/types/{app/cli → cli/identity}/interact.d.ts +2 -0
  387. package/types/cli/identity/interact.d.ts.map +1 -0
  388. package/types/cli/identity/list.d.ts.map +1 -0
  389. package/types/{app/cli → cli/identity}/rotate.d.ts +9 -2
  390. package/types/cli/identity/rotate.d.ts.map +1 -0
  391. package/types/cli/index.d.ts +39 -0
  392. package/types/cli/index.d.ts.map +1 -0
  393. package/types/{app/cli → cli/messaging}/exchange.d.ts +3 -1
  394. package/types/cli/messaging/exchange.d.ts.map +1 -0
  395. package/types/cli/messaging/multisig.d.ts +29 -0
  396. package/types/cli/messaging/multisig.d.ts.map +1 -0
  397. package/types/cli/messaging/notifications.d.ts.map +1 -0
  398. package/types/cli/output.d.ts.map +1 -0
  399. package/types/cli/tools/annotate-color.d.ts.map +1 -0
  400. package/types/cli/tools/annotate.d.ts.map +1 -0
  401. package/types/cli/tools/benchmark.d.ts.map +1 -0
  402. package/types/cli/tools/db-dump.d.ts.map +1 -0
  403. package/types/cli/tools/saidify.d.ts.map +1 -0
  404. package/types/{app/cli → cli/tools}/sign.d.ts +2 -0
  405. package/types/cli/tools/sign.d.ts.map +1 -0
  406. package/types/cli/tools/verify.d.ts.map +1 -0
  407. package/types/core/attachment-countering.d.ts +10 -1
  408. package/types/core/attachment-countering.d.ts.map +1 -1
  409. package/types/core/cues.d.ts +78 -21
  410. package/types/core/cues.d.ts.map +1 -1
  411. package/types/core/{exchange-proofing.d.ts → exchange/exchange-proofing.d.ts} +9 -2
  412. package/types/core/exchange/exchange-proofing.d.ts.map +1 -0
  413. package/types/core/{protocol-exchanging.d.ts → exchange/protocol-exchanging.d.ts} +10 -2
  414. package/types/core/exchange/protocol-exchanging.d.ts.map +1 -0
  415. package/types/core/genus-framing.d.ts +12 -0
  416. package/types/core/genus-framing.d.ts.map +1 -0
  417. package/types/core/{eventing.d.ts → kel/eventing.d.ts} +22 -10
  418. package/types/core/kel/eventing.d.ts.map +1 -0
  419. package/types/core/{kever-decisions.d.ts → kel/kever-decisions.d.ts} +21 -8
  420. package/types/core/kel/kever-decisions.d.ts.map +1 -0
  421. package/types/core/{kever.d.ts → kel/kever.d.ts} +2 -2
  422. package/types/core/kel/kever.d.ts.map +1 -0
  423. package/types/core/kel/witnesses.d.ts.map +1 -0
  424. package/types/core/logger.d.ts +1 -1
  425. package/types/core/logger.d.ts.map +1 -1
  426. package/types/core/{kram-auth.d.ts → mailbox/kram-auth.d.ts} +2 -2
  427. package/types/core/mailbox/kram-auth.d.ts.map +1 -0
  428. package/types/core/{kram-policy.d.ts → mailbox/kram-policy.d.ts} +2 -2
  429. package/types/core/mailbox/kram-policy.d.ts.map +1 -0
  430. package/types/core/{kram-pruning.d.ts → mailbox/kram-pruning.d.ts} +1 -1
  431. package/types/core/mailbox/kram-pruning.d.ts.map +1 -0
  432. package/types/core/{kram-signatures.d.ts → mailbox/kram-signatures.d.ts} +3 -3
  433. package/types/core/mailbox/kram-signatures.d.ts.map +1 -0
  434. package/types/core/{kram-staging.d.ts → mailbox/kram-staging.d.ts} +2 -2
  435. package/types/core/mailbox/kram-staging.d.ts.map +1 -0
  436. package/types/core/{kram-time.d.ts → mailbox/kram-time.d.ts} +2 -2
  437. package/types/core/mailbox/kram-time.d.ts.map +1 -0
  438. package/types/core/{kraming.d.ts → mailbox/kraming.d.ts} +5 -5
  439. package/types/core/mailbox/kraming.d.ts.map +1 -0
  440. package/types/core/mailbox/mailbox-topics.d.ts.map +1 -0
  441. package/types/core/protocol-eventing.d.ts.map +1 -1
  442. package/types/core/protocol-serialization.d.ts +1 -1
  443. package/types/core/protocol-serialization.d.ts.map +1 -1
  444. package/types/core/records.d.ts +1 -1
  445. package/types/core/records.d.ts.map +1 -1
  446. package/types/core/routing.d.ts +24 -4
  447. package/types/core/routing.d.ts.map +1 -1
  448. package/types/db/baser-defaults.d.ts +5 -0
  449. package/types/db/baser-defaults.d.ts.map +1 -0
  450. package/types/db/basing.d.ts +32 -44
  451. package/types/db/basing.d.ts.map +1 -1
  452. package/types/db/core/lmdber.d.ts +18 -13
  453. package/types/db/core/lmdber.d.ts.map +1 -1
  454. package/types/db/escrowing.d.ts +3 -1
  455. package/types/db/escrowing.d.ts.map +1 -1
  456. package/types/db/exchange/exchange-nests.d.ts +12 -0
  457. package/types/db/exchange/exchange-nests.d.ts.map +1 -0
  458. package/types/db/exchange/exchange-records.d.ts +38 -0
  459. package/types/db/exchange/exchange-records.d.ts.map +1 -0
  460. package/types/db/index.d.ts +5 -4
  461. package/types/db/index.d.ts.map +1 -1
  462. package/types/db/keeping.d.ts +19 -1
  463. package/types/db/keeping.d.ts.map +1 -1
  464. package/types/db/{kram-factors.d.ts → mailbox/kram-factors.d.ts} +2 -2
  465. package/types/db/mailbox/kram-factors.d.ts.map +1 -0
  466. package/types/db/{mailboxing.d.ts → mailbox/mailboxing.d.ts} +2 -2
  467. package/types/db/mailbox/mailboxing.d.ts.map +1 -0
  468. package/types/db/reger.d.ts +7 -6
  469. package/types/db/reger.d.ts.map +1 -1
  470. package/types/db/{kel-replay.d.ts → replay/kel-replay.d.ts} +1 -2
  471. package/types/db/replay/kel-replay.d.ts.map +1 -0
  472. package/types/db/{tel-replay.d.ts → replay/tel-replay.d.ts} +11 -1
  473. package/types/db/replay/tel-replay.d.ts.map +1 -0
  474. package/types/db/{witness-replay.d.ts → replay/witness-replay.d.ts} +1 -1
  475. package/types/db/replay/witness-replay.d.ts.map +1 -0
  476. package/types/db/subing.d.ts.map +1 -1
  477. package/types/did/keri/resolving.d.ts +1 -1
  478. package/types/did/keri/resolving.d.ts.map +1 -1
  479. package/types/did/webs/artifacts.d.ts +5 -5
  480. package/types/did/webs/artifacts.d.ts.map +1 -1
  481. package/types/did/webs/designated-aliases.d.ts +1 -2
  482. package/types/did/webs/designated-aliases.d.ts.map +1 -1
  483. package/types/did/webs/documenting.d.ts +1 -1
  484. package/types/did/webs/documenting.d.ts.map +1 -1
  485. package/types/did/webs/resolving.d.ts +13 -9
  486. package/types/did/webs/resolving.d.ts.map +1 -1
  487. package/types/library/index.d.ts +1 -1
  488. package/types/library/index.d.ts.map +1 -1
  489. package/types/npm/cli.d.ts +1 -1
  490. package/types/npm/cli.d.ts.map +1 -1
  491. package/types/npm/index.d.ts +1 -1
  492. package/types/npm/index.d.ts.map +1 -1
  493. package/types/runtime/index.d.ts +86 -51
  494. package/types/runtime/index.d.ts.map +1 -1
  495. package/types/vdr/backer-state.d.ts +22 -0
  496. package/types/vdr/backer-state.d.ts.map +1 -0
  497. package/types/vdr/credential-tsn-record.d.ts +13 -0
  498. package/types/vdr/credential-tsn-record.d.ts.map +1 -0
  499. package/types/vdr/credentialing.d.ts +16 -17
  500. package/types/vdr/credentialing.d.ts.map +1 -1
  501. package/types/vdr/eventing.d.ts +60 -18
  502. package/types/vdr/eventing.d.ts.map +1 -1
  503. package/types/vdr/registry-tsn-record.d.ts +6 -0
  504. package/types/vdr/registry-tsn-record.d.ts.map +1 -0
  505. package/types/vdr/revoking.d.ts +18 -0
  506. package/types/vdr/revoking.d.ts.map +1 -0
  507. package/types/vdr/tel-anchor.d.ts +10 -0
  508. package/types/vdr/tel-anchor.d.ts.map +1 -0
  509. package/types/vdr/tel-publication.d.ts +49 -0
  510. package/types/vdr/tel-publication.d.ts.map +1 -0
  511. package/types/vdr/tsn-query.d.ts +1 -1
  512. package/types/vdr/tsn-query.d.ts.map +1 -1
  513. package/types/{app/version.d.ts → version.d.ts} +2 -2
  514. package/types/version.d.ts.map +1 -0
  515. package/esm/keri/npm/src/app/agent-runtime.js +0 -544
  516. package/esm/keri/npm/src/app/cesr-egress.js +0 -294
  517. package/esm/keri/npm/src/app/cli/common/displaying.js +0 -43
  518. package/esm/keri/npm/src/app/cli/common/parsing.js +0 -215
  519. package/esm/keri/npm/src/app/cli/incept.js +0 -185
  520. package/esm/keri/npm/src/app/cli/index.js +0 -36
  521. package/esm/keri/npm/src/app/cli/init.js +0 -149
  522. package/esm/keri/npm/src/app/cli/interact.js +0 -72
  523. package/esm/keri/npm/src/app/cli/ipex.js +0 -519
  524. package/esm/keri/npm/src/app/cli/query.js +0 -142
  525. package/esm/keri/npm/src/app/cli/vc.js +0 -283
  526. package/esm/keri/npm/src/app/cli/verifier.js +0 -92
  527. package/esm/keri/npm/src/app/credential-workflows.js +0 -409
  528. package/esm/keri/npm/src/app/cue-runtime.js +0 -38
  529. package/esm/keri/npm/src/app/essr.js +0 -170
  530. package/esm/keri/npm/src/app/exchanging.js +0 -1001
  531. package/esm/keri/npm/src/app/forwarding.js +0 -936
  532. package/esm/keri/npm/src/app/group-members.js +0 -37
  533. package/esm/keri/npm/src/app/httping.js +0 -162
  534. package/esm/keri/npm/src/app/ipex-graph.js +0 -407
  535. package/esm/keri/npm/src/app/ipex-grouping.js +0 -276
  536. package/esm/keri/npm/src/app/ipex-v2.js +0 -438
  537. package/esm/keri/npm/src/app/mailbox-sse.js +0 -240
  538. package/esm/keri/npm/src/app/multisig-workflows.js +0 -457
  539. package/esm/keri/npm/src/app/querying.js +0 -775
  540. package/esm/keri/npm/src/app/reactor.js +0 -394
  541. package/esm/keri/npm/src/app/respondant.js +0 -358
  542. package/esm/keri/npm/src/app/runtime-services.js +0 -22
  543. package/esm/keri/npm/src/app/tcp-conversation.js +0 -85
  544. package/esm/keri/npm/src/app/tcp-egress.js +0 -251
  545. package/esm/keri/npm/src/app/verifier-agent.js +0 -443
  546. package/esm/keri/npm/src/app/witnessing.js +0 -914
  547. package/esm/keri/npm/src/core/index.js +0 -23
  548. package/esm/keri/npm/src/db/exchange-nests.js +0 -80
  549. package/esm/keri/npm/src/db/exchange-records.js +0 -7
  550. package/esm/keri/npm/src/db/payload-archive.js +0 -402
  551. package/esm/keri/npm/src/db/payload-store.js +0 -406
  552. package/esm/keri/npm/src/db/payload-view.js +0 -23
  553. package/esm/keri/npm/src/db/verifier-cueing.js +0 -132
  554. package/esm/keri/npm/src/vdr/credential-tsn.js +0 -230
  555. package/esm/keri/npm/src/vdr/registry-tsn.js +0 -217
  556. package/types/app/abortable.d.ts +0 -13
  557. package/types/app/abortable.d.ts.map +0 -1
  558. package/types/app/agent-runtime.d.ts +0 -221
  559. package/types/app/agent-runtime.d.ts.map +0 -1
  560. package/types/app/authenticating.d.ts +0 -36
  561. package/types/app/authenticating.d.ts.map +0 -1
  562. package/types/app/byte-source.d.ts +0 -16
  563. package/types/app/byte-source.d.ts.map +0 -1
  564. package/types/app/cesr-egress.d.ts +0 -45
  565. package/types/app/cesr-egress.d.ts.map +0 -1
  566. package/types/app/cesr-http.d.ts.map +0 -1
  567. package/types/app/challenging.d.ts.map +0 -1
  568. package/types/app/cli/aid.d.ts.map +0 -1
  569. package/types/app/cli/annotate-color.d.ts.map +0 -1
  570. package/types/app/cli/annotate.d.ts.map +0 -1
  571. package/types/app/cli/benchmark.d.ts.map +0 -1
  572. package/types/app/cli/challenge.d.ts.map +0 -1
  573. package/types/app/cli/common/context.d.ts.map +0 -1
  574. package/types/app/cli/common/displaying.d.ts +0 -12
  575. package/types/app/cli/common/displaying.d.ts.map +0 -1
  576. package/types/app/cli/common/existing.d.ts.map +0 -1
  577. package/types/app/cli/common/parsing.d.ts.map +0 -1
  578. package/types/app/cli/common/rendering.d.ts.map +0 -1
  579. package/types/app/cli/common/witness-auth.d.ts.map +0 -1
  580. package/types/app/cli/db-dump.d.ts.map +0 -1
  581. package/types/app/cli/delegate.d.ts.map +0 -1
  582. package/types/app/cli/did.d.ts.map +0 -1
  583. package/types/app/cli/ends.d.ts.map +0 -1
  584. package/types/app/cli/exchange.d.ts.map +0 -1
  585. package/types/app/cli/export.d.ts.map +0 -1
  586. package/types/app/cli/incept.d.ts.map +0 -1
  587. package/types/app/cli/index.d.ts +0 -37
  588. package/types/app/cli/index.d.ts.map +0 -1
  589. package/types/app/cli/init.d.ts.map +0 -1
  590. package/types/app/cli/interact.d.ts.map +0 -1
  591. package/types/app/cli/ipex.d.ts +0 -20
  592. package/types/app/cli/ipex.d.ts.map +0 -1
  593. package/types/app/cli/list.d.ts.map +0 -1
  594. package/types/app/cli/loc.d.ts.map +0 -1
  595. package/types/app/cli/multisig.d.ts +0 -12
  596. package/types/app/cli/multisig.d.ts.map +0 -1
  597. package/types/app/cli/notifications.d.ts.map +0 -1
  598. package/types/app/cli/oobi.d.ts.map +0 -1
  599. package/types/app/cli/output.d.ts.map +0 -1
  600. package/types/app/cli/query.d.ts +0 -12
  601. package/types/app/cli/query.d.ts.map +0 -1
  602. package/types/app/cli/rotate.d.ts.map +0 -1
  603. package/types/app/cli/saidify.d.ts.map +0 -1
  604. package/types/app/cli/sign.d.ts.map +0 -1
  605. package/types/app/cli/vc.d.ts +0 -20
  606. package/types/app/cli/vc.d.ts.map +0 -1
  607. package/types/app/cli/verifier.d.ts +0 -3
  608. package/types/app/cli/verifier.d.ts.map +0 -1
  609. package/types/app/cli/verify.d.ts.map +0 -1
  610. package/types/app/configing.d.ts.map +0 -1
  611. package/types/app/credential-workflows.d.ts +0 -113
  612. package/types/app/credential-workflows.d.ts.map +0 -1
  613. package/types/app/cue-runtime.d.ts +0 -12
  614. package/types/app/cue-runtime.d.ts.map +0 -1
  615. package/types/app/delegating.d.ts.map +0 -1
  616. package/types/app/endpoint-roleing.d.ts.map +0 -1
  617. package/types/app/essr.d.ts +0 -58
  618. package/types/app/essr.d.ts.map +0 -1
  619. package/types/app/exchanging.d.ts +0 -233
  620. package/types/app/exchanging.d.ts.map +0 -1
  621. package/types/app/forwarding.d.ts +0 -352
  622. package/types/app/forwarding.d.ts.map +0 -1
  623. package/types/app/group-members.d.ts +0 -12
  624. package/types/app/group-members.d.ts.map +0 -1
  625. package/types/app/grouping.d.ts.map +0 -1
  626. package/types/app/habbing.d.ts.map +0 -1
  627. package/types/app/httping.d.ts +0 -49
  628. package/types/app/httping.d.ts.map +0 -1
  629. package/types/app/ipex-credentialing.d.ts.map +0 -1
  630. package/types/app/ipex-graph.d.ts +0 -49
  631. package/types/app/ipex-graph.d.ts.map +0 -1
  632. package/types/app/ipex-grouping.d.ts +0 -43
  633. package/types/app/ipex-grouping.d.ts.map +0 -1
  634. package/types/app/ipex-node-authentication.d.ts.map +0 -1
  635. package/types/app/ipex-v2.d.ts +0 -46
  636. package/types/app/ipex-v2.d.ts.map +0 -1
  637. package/types/app/ipexing.d.ts.map +0 -1
  638. package/types/app/keeping.d.ts.map +0 -1
  639. package/types/app/mailbox-director.d.ts +0 -140
  640. package/types/app/mailbox-director.d.ts.map +0 -1
  641. package/types/app/mailbox-sse.d.ts +0 -32
  642. package/types/app/mailbox-sse.d.ts.map +0 -1
  643. package/types/app/mailboxing.d.ts.map +0 -1
  644. package/types/app/multisig-workflows.d.ts +0 -47
  645. package/types/app/multisig-workflows.d.ts.map +0 -1
  646. package/types/app/notifying.d.ts.map +0 -1
  647. package/types/app/oobi-replies.d.ts.map +0 -1
  648. package/types/app/oobiery.d.ts.map +0 -1
  649. package/types/app/organizing.d.ts.map +0 -1
  650. package/types/app/parsering.d.ts.map +0 -1
  651. package/types/app/protocol-host-policy.d.ts.map +0 -1
  652. package/types/app/query-replies.d.ts +0 -40
  653. package/types/app/query-replies.d.ts.map +0 -1
  654. package/types/app/querying.d.ts +0 -221
  655. package/types/app/querying.d.ts.map +0 -1
  656. package/types/app/reactor.d.ts +0 -138
  657. package/types/app/reactor.d.ts.map +0 -1
  658. package/types/app/reply-streams.d.ts +0 -20
  659. package/types/app/reply-streams.d.ts.map +0 -1
  660. package/types/app/respondant.d.ts +0 -63
  661. package/types/app/respondant.d.ts.map +0 -1
  662. package/types/app/runtime-services.d.ts +0 -26
  663. package/types/app/runtime-services.d.ts.map +0 -1
  664. package/types/app/runtime-turn.d.ts.map +0 -1
  665. package/types/app/schema-resolving.d.ts.map +0 -1
  666. package/types/app/signaling.d.ts.map +0 -1
  667. package/types/app/socket-source.d.ts.map +0 -1
  668. package/types/app/stored-replies.d.ts.map +0 -1
  669. package/types/app/tcp-conversation.d.ts +0 -27
  670. package/types/app/tcp-conversation.d.ts.map +0 -1
  671. package/types/app/tcp-egress.d.ts +0 -49
  672. package/types/app/tcp-egress.d.ts.map +0 -1
  673. package/types/app/verifier-agent.d.ts +0 -92
  674. package/types/app/verifier-agent.d.ts.map +0 -1
  675. package/types/app/verifying.d.ts.map +0 -1
  676. package/types/app/version.d.ts.map +0 -1
  677. package/types/app/witnessing.d.ts +0 -223
  678. package/types/app/witnessing.d.ts.map +0 -1
  679. package/types/core/eventing.d.ts.map +0 -1
  680. package/types/core/exchange-proofing.d.ts.map +0 -1
  681. package/types/core/index.d.ts +0 -24
  682. package/types/core/index.d.ts.map +0 -1
  683. package/types/core/kever-decisions.d.ts.map +0 -1
  684. package/types/core/kever.d.ts.map +0 -1
  685. package/types/core/kram-auth.d.ts.map +0 -1
  686. package/types/core/kram-policy.d.ts.map +0 -1
  687. package/types/core/kram-pruning.d.ts.map +0 -1
  688. package/types/core/kram-signatures.d.ts.map +0 -1
  689. package/types/core/kram-staging.d.ts.map +0 -1
  690. package/types/core/kram-time.d.ts.map +0 -1
  691. package/types/core/kraming.d.ts.map +0 -1
  692. package/types/core/mailbox-topics.d.ts.map +0 -1
  693. package/types/core/protocol-exchanging.d.ts.map +0 -1
  694. package/types/core/witnesses.d.ts.map +0 -1
  695. package/types/db/exchange-nests.d.ts +0 -15
  696. package/types/db/exchange-nests.d.ts.map +0 -1
  697. package/types/db/exchange-records.d.ts +0 -33
  698. package/types/db/exchange-records.d.ts.map +0 -1
  699. package/types/db/kel-replay.d.ts.map +0 -1
  700. package/types/db/kram-factors.d.ts.map +0 -1
  701. package/types/db/mailboxing.d.ts.map +0 -1
  702. package/types/db/payload-archive.d.ts +0 -70
  703. package/types/db/payload-archive.d.ts.map +0 -1
  704. package/types/db/payload-store.d.ts +0 -40
  705. package/types/db/payload-store.d.ts.map +0 -1
  706. package/types/db/payload-view.d.ts +0 -4
  707. package/types/db/payload-view.d.ts.map +0 -1
  708. package/types/db/tel-replay.d.ts.map +0 -1
  709. package/types/db/verifier-cueing.d.ts +0 -46
  710. package/types/db/verifier-cueing.d.ts.map +0 -1
  711. package/types/db/witness-replay.d.ts.map +0 -1
  712. package/types/vdr/credential-tsn.d.ts +0 -23
  713. package/types/vdr/credential-tsn.d.ts.map +0 -1
  714. package/types/vdr/registry-tsn.d.ts +0 -28
  715. package/types/vdr/registry-tsn.d.ts.map +0 -1
  716. /package/esm/keri/npm/src/app/{schema-resolving.js → credentials/schema-resolving.js} +0 -0
  717. /package/esm/keri/npm/src/app/{challenging.js → identity/challenging.js} +0 -0
  718. /package/esm/keri/npm/src/app/{protocol-host-policy.js → protocol/protocol-host-policy.js} +0 -0
  719. /package/esm/keri/npm/src/app/{runtime-turn.js → runtime/runtime-turn.js} +0 -0
  720. /package/esm/keri/npm/src/{app/cli → cli}/common/rendering.js +0 -0
  721. /package/esm/keri/npm/src/{app/cli → cli/tools}/annotate-color.js +0 -0
  722. /package/esm/keri/npm/src/core/{witnesses.js → kel/witnesses.js} +0 -0
  723. /package/esm/keri/npm/src/core/{kram-auth.js → mailbox/kram-auth.js} +0 -0
  724. /package/esm/keri/npm/src/core/{mailbox-topics.js → mailbox/mailbox-topics.js} +0 -0
  725. /package/types/app/{signaling.d.ts → notifications/signaling.d.ts} +0 -0
  726. /package/types/app/{runtime-turn.d.ts → runtime/runtime-turn.d.ts} +0 -0
  727. /package/types/{app/cli → cli}/common/rendering.d.ts +0 -0
  728. /package/types/{app/cli → cli/endpoints}/loc.d.ts +0 -0
  729. /package/types/{app/cli → cli/identity}/aid.d.ts +0 -0
  730. /package/types/{app/cli → cli/identity}/delegate.d.ts +0 -0
  731. /package/types/{app/cli → cli/identity}/export.d.ts +0 -0
  732. /package/types/{app/cli → cli/identity}/list.d.ts +0 -0
  733. /package/types/{app/cli → cli/messaging}/notifications.d.ts +0 -0
  734. /package/types/{app/cli → cli}/output.d.ts +0 -0
  735. /package/types/{app/cli → cli/tools}/annotate-color.d.ts +0 -0
  736. /package/types/{app/cli → cli/tools}/annotate.d.ts +0 -0
  737. /package/types/{app/cli → cli/tools}/benchmark.d.ts +0 -0
  738. /package/types/{app/cli → cli/tools}/db-dump.d.ts +0 -0
  739. /package/types/{app/cli → cli/tools}/saidify.d.ts +0 -0
  740. /package/types/{app/cli → cli/tools}/verify.d.ts +0 -0
  741. /package/types/core/{witnesses.d.ts → kel/witnesses.d.ts} +0 -0
  742. /package/types/core/{mailbox-topics.d.ts → mailbox/mailbox-topics.d.ts} +0 -0
@@ -1,936 +0,0 @@
1
- /**
2
- * Mailbox-first forwarding and polling support.
3
- *
4
- * KERIpy correspondence:
5
- * - ports the conceptual roles of `Poster`, `StreamPoster`, `ForwardHandler`,
6
- * and mailbox polling/query handling from `keri.app.forwarding` and
7
- * `keri.app.indirecting`
8
- *
9
- * Current `keri-ts` difference:
10
- * - delivery and polling are synchronous Effection operations instead of HIO
11
- * doers
12
- * - HTTP posting honors both KERIpy header mode and the Tufa-only body mode
13
- */
14
- import { attachmentPayload, collectPayload, concatBytes, Counter, Diger, framePayload, MtrDex, nestedPayload, parseBytes, parsePather, SerderACDC, SerderKERI, Vrsn_2_0, } from "cesr-ts";
15
- import { call, spawn } from "effection";
16
- import { ValidationError } from "../core/errors.js";
17
- import { CREDENTIAL_MAILBOX_TOPIC, DELEGATE_MAILBOX_TOPIC, OOBI_MAILBOX_TOPIC } from "../core/mailbox-topics.js";
18
- import { exchange } from "../core/protocol-exchanging.js";
19
- import { Roles } from "../core/roles.js";
20
- import { dgKey } from "../db/core/keys.js";
21
- import { abortable } from "./abortable.js";
22
- import { chunkBytes } from "./byte-source.js";
23
- import { attemptPostCesr, postCesr } from "./cesr-egress.js";
24
- import { buildCesrRequest } from "./cesr-http.js";
25
- import { closeResponseBody, fetchResponseHandleOrNull } from "./httping.js";
26
- import { consumeMailboxSse } from "./mailbox-sse.js";
27
- import { directDeliveryEndpoints, firstSortedEndpoint, mailboxDeliveryEndpoints, mailboxPollEndpoints, mailboxTopicKey, } from "./mailboxing.js";
28
- import { Organizer } from "./organizing.js";
29
- import { defaultRuntimeServices } from "./runtime-services.js";
30
- import { runtimeTurn } from "./runtime-turn.js";
31
- import { converseCesrTcp } from "./tcp-conversation.js";
32
- import { sendCesrTcp } from "./tcp-egress.js";
33
- /** Deliver prepared wire; explicit receiver lends same-socket intake, otherwise TCP drains output only. */
34
- export function* sendPreparedCesrTarget(target, services, signal, receiver) {
35
- if (target.kind === "tcp") {
36
- if (receiver) {
37
- yield* converseCesrTcp(target.url, target.message, {
38
- clock: services.clock,
39
- signal,
40
- replies: { reactor: receiver.reactor, local: true },
41
- });
42
- }
43
- else
44
- yield* sendCesrTcp(target.url, target.message, { clock: services.clock, signal });
45
- }
46
- else if (target.kind === "http") {
47
- yield* postCesrMessage(target.url, target.message, target.bodyMode, target.destination, services, signal);
48
- }
49
- }
50
- /** Preserve selected endpoint and signed bytes; TCP has no HTTP body framing mode. */
51
- function remoteCesrTarget(endpoint, message, bodyMode) {
52
- const base = { url: endpoint.url, destination: endpoint.eid, message };
53
- return new URL(endpoint.url).protocol === "tcp:" ? { ...base, kind: "tcp" } : { ...base, kind: "http", bodyMode };
54
- }
55
- /** Join a prepared target attempt; local completion or peer refusal never implies protocol acceptance. */
56
- export function* attemptPreparedCesrTarget(target, services, signal, receiver) {
57
- if (target.kind === "http") {
58
- const result = yield* attemptPostCesr(target.url, (signal) => chunkBytes(target.message, { signal }), {
59
- bodyMode: target.bodyMode,
60
- destination: target.destination,
61
- services,
62
- signal,
63
- });
64
- signal?.throwIfAborted();
65
- if (result.kind === "complete")
66
- return "complete";
67
- return "refused";
68
- }
69
- if (target.kind === "stored") {
70
- signal?.throwIfAborted();
71
- return "complete";
72
- }
73
- receiver
74
- ? yield* converseCesrTcp(target.url, target.message, {
75
- clock: services.clock,
76
- signal,
77
- replies: { ...receiver, local: true },
78
- })
79
- : yield* sendCesrTcp(target.url, target.message, { clock: services.clock, signal });
80
- signal?.throwIfAborted();
81
- return "complete";
82
- }
83
- /**
84
- * Mailbox-first postman for outbound EXN transport.
85
- *
86
- * Responsibilities:
87
- * - resolve recipient aliases against organizer/contact state
88
- * - route to all currently authorized recipient mailbox endpoints when present
89
- * - fall back to direct controller/agent endpoints, then one witness endpoint,
90
- * when no mailbox exists
91
- */
92
- export class Poster {
93
- constructor(hby, options = {}) {
94
- Object.defineProperty(this, "hby", {
95
- enumerable: true,
96
- configurable: true,
97
- writable: true,
98
- value: void 0
99
- });
100
- Object.defineProperty(this, "mailboxer", {
101
- enumerable: true,
102
- configurable: true,
103
- writable: true,
104
- value: void 0
105
- });
106
- Object.defineProperty(this, "organizer", {
107
- enumerable: true,
108
- configurable: true,
109
- writable: true,
110
- value: void 0
111
- });
112
- Object.defineProperty(this, "services", {
113
- enumerable: true,
114
- configurable: true,
115
- writable: true,
116
- value: void 0
117
- });
118
- const { mailboxer, services = defaultRuntimeServices } = options;
119
- this.hby = hby;
120
- this.mailboxer = mailboxer ?? null;
121
- this.organizer = new Organizer(hby);
122
- this.services = services;
123
- }
124
- /**
125
- * Resolve one CLI or user recipient input into the actual destination prefix.
126
- *
127
- * Resolution order matches the mailbox CLI mental model:
128
- * - exact known prefix wins
129
- * - otherwise exact organizer alias lookup is required
130
- */
131
- resolveRecipient(recipient) {
132
- if (this.hby.db.getKever(recipient)) {
133
- return recipient;
134
- }
135
- const matches = this.organizer.findExact("alias", recipient);
136
- if (matches.length === 0) {
137
- throw new ValidationError(`no contact found with alias '${recipient}'`);
138
- }
139
- if (matches.length > 1) {
140
- throw new ValidationError(`multiple contacts match alias '${recipient}', use prefix instead`);
141
- }
142
- return matches[0].id;
143
- }
144
- /**
145
- * Send one EXN through the mailbox-first delivery policy.
146
- *
147
- * Default policy:
148
- * - if recipient mailboxes exist, broadcast to all mailbox endpoints
149
- * - if no mailbox exists, send directly to controller/agent endpoints
150
- * - if no direct endpoints exist, fall back to one witness endpoint
151
- * - all mailbox targets are attempted; any failure is reported to the caller
152
- *
153
- * Current `keri-ts` difference:
154
- * - KERIpy `Poster` is queue/doer based
155
- * - here the caller drives one explicit operation and gets a structured
156
- * result back immediately
157
- * - optional receiver lends same-socket TCP intake; standalone TCP is transmit-only
158
- * - public callers own synchronous route/signing preparation and wire retention
159
- */
160
- *sendExchange(hab, args, receiver) {
161
- const recipient = this.resolveRecipient(args.recipient);
162
- const topic = args.topic ?? defaultTopicForRoute(args.route);
163
- if (topic.length === 0) {
164
- throw new ValidationError(`Unable to derive mailbox topic from route ${args.route}.`);
165
- }
166
- const embedded = args.embeds ?? {};
167
- const exchangeRecipient = args.exchangeRecipient === null ? undefined : args.exchangeRecipient ?? recipient;
168
- const [serder, attachments] = exchange(args.route, args.payload, {
169
- sender: hab.pre,
170
- recipient: exchangeRecipient,
171
- modifiers: args.modifiers,
172
- stamp: args.date,
173
- dig: args.dig,
174
- embeds: Object.keys(embedded).length > 0 ? embedded : undefined,
175
- });
176
- const message = concatBytes(hab.endorse(serder, { pipelined: false }), attachments);
177
- return yield* this.sendPreparedExchange(hab, {
178
- recipient,
179
- serder,
180
- message,
181
- topic,
182
- delivery: args.delivery,
183
- }, receiver);
184
- }
185
- /** Deliver the owner's signed exchange unchanged; recipient is already resolved and bytes remain borrowed through cleanup. */
186
- *sendPreparedExchange(hab, { recipient, serder, message, topic, delivery = "auto" }, receiver) {
187
- const deliveries = [];
188
- const mailboxEndpoints = delivery === "direct" ? [] : mailboxDeliveryEndpoints(hab, recipient);
189
- if (mailboxEndpoints.length > 0) {
190
- const failed = new Map();
191
- for (const endpoint of mailboxEndpoints) {
192
- try {
193
- yield* this.deliverMailboxTarget(hab, recipient, topic, message, endpoint, receiver);
194
- deliveries.push(endpoint.url);
195
- }
196
- catch (error) {
197
- failed.set(endpoint.eid, error instanceof Error ? error.message : String(error));
198
- }
199
- }
200
- if (failed.size > 0) {
201
- throw new ValidationError(`Exchange delivery failed for ${recipient}: ${[...failed.values()].join("; ")}; completed: ${deliveries.join(", ") || "none"}`);
202
- }
203
- return { serder, deliveries };
204
- }
205
- const directEndpoints = directDeliveryEndpoints(hab, recipient);
206
- if (directEndpoints.length > 0) {
207
- for (const endpoint of directEndpoints) {
208
- yield* sendPreparedCesrTarget(remoteCesrTarget(endpoint, message, this.hby.cesrBodyMode), this.services, undefined, receiver);
209
- deliveries.push(endpoint.url);
210
- }
211
- return { serder, deliveries };
212
- }
213
- if (delivery !== "direct") {
214
- const witnessEndpoint = firstSortedEndpoint(hab.endsFor(recipient)[Roles.witness]);
215
- if (witnessEndpoint) {
216
- yield* this.deliverWitnessTarget(hab, recipient, topic, message, witnessEndpoint, receiver);
217
- deliveries.push(witnessEndpoint.url);
218
- return { serder, deliveries };
219
- }
220
- }
221
- throw new ValidationError(`No end roles for ${recipient} to send evt=${serder.said ?? "<unknown>"}`);
222
- }
223
- /**
224
- * Send one raw CESR message through the same mailbox-first transport policy.
225
- *
226
- * This is used by delegation workflows where correctness depends on the
227
- * actual KEL bytes reaching the delegator or delegate, not on an EXN wrapper.
228
- * Optional Reactor lends TCP intake; caller owns preparation/retention before transport.
229
- */
230
- *sendBytes(hab, args, reactor) {
231
- const route = this.resolveBytesRoute(hab, args);
232
- const deliveries = [];
233
- const failed = new Map();
234
- for (let index = 0; index < route.targets.length; index++) {
235
- const endpoint = route.targets[index];
236
- try {
237
- const target = yield* this.prepareBytesTarget(hab, route, index, args.message);
238
- yield* sendPreparedCesrTarget(target, this.services, undefined, reactor ? { reactor } : undefined);
239
- deliveries.push(endpoint.url);
240
- }
241
- catch (error) {
242
- if (route.kind !== "mailbox")
243
- throw error;
244
- failed.set(endpoint.eid, error instanceof Error ? error.message : String(error));
245
- }
246
- }
247
- if (failed.size > 0) {
248
- throw new ValidationError(`CESR delivery failed for ${route.recipient}: ${[...failed.values()].join("; ")}; completed: ${deliveries.join(", ") || "none"}`);
249
- }
250
- return { deliveries };
251
- }
252
- /** Snapshot mailbox/direct/witness policy without opening transport or reading message bytes. */
253
- resolveBytesRoute(hab, args) {
254
- const recipient = this.resolveRecipient(args.recipient);
255
- const route = this.findBytesRoute(hab, { ...args, recipient, recipientIsPrefix: true });
256
- if (!route)
257
- throw new ValidationError(`No end roles for ${recipient} to send raw CESR payload.`);
258
- return route;
259
- }
260
- /** Same policy; parsed-prefix lookup bypasses aliases, absence is explicit, other failures propagate. */
261
- findBytesRoute(hab, args) {
262
- const recipient = args.recipientIsPrefix ? args.recipient : this.resolveRecipient(args.recipient);
263
- const topic = args.topic ?? "";
264
- const delivery = args.delivery ?? "auto";
265
- const base = { sender: hab.pre, recipient, topic, bodyMode: this.hby.cesrBodyMode };
266
- const mailboxes = delivery === "direct" ? [] : mailboxDeliveryEndpoints(hab, recipient);
267
- if (mailboxes.length > 0) {
268
- if (!topic)
269
- throw new ValidationError(`Mailbox delivery requires an explicit topic for ${recipient}.`);
270
- return { ...base, kind: "mailbox", targets: mailboxes };
271
- }
272
- if (delivery !== "direct" && topic && this.mailboxer && this.hby.db.prefixes.has(hab.pre)
273
- && this.hby.db.ends.get([recipient, Roles.mailbox, hab.pre])?.allowed) {
274
- return { ...base, kind: "local", targets: [{ eid: hab.pre, url: `local-mailbox:${hab.pre}` }] };
275
- }
276
- const direct = directDeliveryEndpoints(hab, recipient);
277
- if (direct.length > 0)
278
- return { ...base, kind: "direct", targets: direct };
279
- if (delivery !== "direct") {
280
- if (!topic) {
281
- throw new ValidationError(`Witness fallback delivery requires an explicit topic for ${recipient}.`);
282
- }
283
- const witness = firstSortedEndpoint(hab.endsFor(recipient)[Roles.witness]);
284
- if (witness)
285
- return { ...base, kind: "witness", targets: [witness] };
286
- }
287
- return null;
288
- }
289
- /** Prepare a target using the supplied wire and selected endpoint. */
290
- *prepareBytesTarget(hab, route, index, message) {
291
- if (hab.pre !== route.sender)
292
- throw new Error("CESR route belongs to another sender");
293
- const endpoint = route.targets[index];
294
- if (!Number.isSafeInteger(index) || !endpoint)
295
- throw new RangeError("Invalid CESR delivery target");
296
- if (route.kind !== "direct") {
297
- const forwarded = yield* this.prepareForwardedTarget(hab, route.recipient, route.topic, message, endpoint);
298
- return forwarded.kind === "http" ? { ...forwarded, bodyMode: route.bodyMode } : forwarded;
299
- }
300
- return remoteCesrTarget(endpoint, message, route.bodyMode);
301
- }
302
- /**
303
- * Deliver one message to one mailbox endpoint.
304
- *
305
- * Delivery modes:
306
- * - if the mailbox AID is local to this habery, store directly in
307
- * `Mailboxer`
308
- * - otherwise wrap in `/fwd` and post to the remote mailbox URL
309
- */
310
- *deliverMailboxTarget(hab, recipient, topic, message, endpoint, receiver) {
311
- yield* this.deliverForwardedTarget(hab, recipient, topic, message, endpoint, receiver);
312
- }
313
- /**
314
- * Deliver one message using the recipient's witness as a store-and-forward
315
- * fallback when no mailbox or direct endpoint exists.
316
- */
317
- *deliverWitnessTarget(hab, recipient, topic, message, endpoint, receiver) {
318
- yield* this.deliverForwardedTarget(hab, recipient, topic, message, endpoint, receiver);
319
- }
320
- /**
321
- * Deliver one `/fwd`-wrapped payload to a mailbox or witness endpoint.
322
- *
323
- * Local hosted targets store directly in `Mailboxer`; remote targets receive
324
- * KERIpy-style introduction material ahead of the forwarded payload.
325
- */
326
- *deliverForwardedTarget(hab, recipient, topic, message, endpoint, receiver) {
327
- const target = yield* this.prepareForwardedTarget(hab, recipient, topic, message, endpoint);
328
- yield* sendPreparedCesrTarget(target, this.services, undefined, receiver);
329
- }
330
- /** Prepare complete signed wire and its introduction before opening transport. */
331
- *prepareForwardedTarget(hab, recipient, topic, message, endpoint) {
332
- if (this.hby.db.prefixes.has(endpoint.eid)) {
333
- const stored = this.requireMailboxer().storeMsg(mailboxTopicKey(recipient, topic), mailboxReplyPayload(hab, recipient, topic, message));
334
- if (!stored)
335
- throw new Error("Mailbox publication did not complete");
336
- return { kind: "stored" };
337
- }
338
- const forwarded = yield* buildForwardedDelivery(hab, { recipient, topic, message });
339
- const intro = introduce(hab, endpoint.eid);
340
- return remoteCesrTarget(endpoint, concatBytes(intro, forwarded), this.hby.cesrBodyMode);
341
- }
342
- /** Require provider mailbox storage for local mailbox-target delivery. */
343
- requireMailboxer() {
344
- if (!this.mailboxer) {
345
- throw new ValidationError("Local mailbox delivery requires provider mailbox storage.");
346
- }
347
- return this.mailboxer;
348
- }
349
- }
350
- /**
351
- * Accepted `/fwd` route handler that stores embedded payloads in mailbox topics.
352
- *
353
- * This is the `keri-ts` mailbox-storage analogue to KERIpy's `ForwardHandler`.
354
- *
355
- * Authorization rule:
356
- * - the request-scoped mailbox AID passed with this message must currently be
357
- * authorized for the addressed recipient
358
- */
359
- export class ForwardHandler {
360
- constructor(mailboxDirector) {
361
- Object.defineProperty(this, "resource", {
362
- enumerable: true,
363
- configurable: true,
364
- writable: true,
365
- value: ForwardHandler.resource
366
- });
367
- /** This route binds a single v2 child body; recipient processors authenticate its evidence. */
368
- Object.defineProperty(this, "acceptsNests", {
369
- enumerable: true,
370
- configurable: true,
371
- writable: true,
372
- value: true
373
- });
374
- Object.defineProperty(this, "mailboxDirector", {
375
- enumerable: true,
376
- configurable: true,
377
- writable: true,
378
- value: void 0
379
- });
380
- this.mailboxDirector = mailboxDirector;
381
- }
382
- /**
383
- * Verify that the embedded exchange has the mailbox modifiers and one
384
- * extractable forwarded payload.
385
- */
386
- verify(args) {
387
- const modifiers = args.serder.ked?.q;
388
- if (typeof modifiers?.pre !== "string" || typeof modifiers?.topic !== "string")
389
- return false;
390
- if (args.serder.pvrsn.major < 2) {
391
- return !args.nests?.length && extractForwardedMessage(args.serder, args.attachments) !== null;
392
- }
393
- if (args.nests?.length !== 1)
394
- return false;
395
- const signed = args.serder.a?.evt;
396
- const child = args.nests[0].body;
397
- if (typeof signed !== "string" || !(child instanceof SerderKERI || child instanceof SerderACDC))
398
- return false;
399
- try {
400
- return child.verify() && new Diger({ qb64: signed }).verify(child.raw);
401
- }
402
- catch {
403
- return false;
404
- }
405
- }
406
- /**
407
- * Store one forwarded payload when the receiving host is allowed to act as
408
- * the recipient's async correspondence store.
409
- *
410
- * Accepted host shapes:
411
- * - explicit mailbox provider authorized in `ends.`
412
- * - recipient witness host from the accepted KEL witness set
413
- * - recipient agent host authorized in `ends.`
414
- *
415
- * Controller endpoints stay excluded here because they are direct
416
- * correspondence destinations, not store-and-forward hosts.
417
- */
418
- handle(args) {
419
- const modifiers = args.serder.ked?.q;
420
- const recipient = typeof modifiers?.pre === "string" ? modifiers.pre : null;
421
- const topic = typeof modifiers?.topic === "string" ? modifiers.topic : null;
422
- const child = args.serder.pvrsn.major >= 2 ? args.nests?.[0] : undefined;
423
- const forwarded = child ? null : extractForwardedMessage(args.serder, args.attachments);
424
- const mailboxAid = args.mailboxAid;
425
- if (!recipient || !topic || (!child && !forwarded)) {
426
- return;
427
- }
428
- const hby = this.mailboxDirector.hby;
429
- const recipientKever = hby.db.getKever(recipient);
430
- if (!recipientKever) {
431
- return;
432
- }
433
- if (mailboxAid) {
434
- if (!hostCanStoreForwardRecipient(hby, recipient, recipientKever, mailboxAid)) {
435
- return;
436
- }
437
- }
438
- else if (!hasLocalStoreForwardHost(hby, recipient, recipientKever)) {
439
- return;
440
- }
441
- if (child) {
442
- // Mailbox LMDB accepts a finite row; collect one child, never the whole exchange stream.
443
- return abortable(async (signal) => {
444
- const wire = await collectPayload(nestedPayload(child, Vrsn_2_0), signal);
445
- signal.throwIfAborted();
446
- this.mailboxDirector.publish(recipient, topic, wire);
447
- });
448
- }
449
- this.mailboxDirector.publish(recipient, topic, forwarded);
450
- }
451
- }
452
- Object.defineProperty(ForwardHandler, "resource", {
453
- enumerable: true,
454
- configurable: true,
455
- writable: true,
456
- value: "/fwd"
457
- });
458
- function hostCanStoreForwardRecipient(hby, recipient, recipientKever, hostAid) {
459
- // A local host may store forwarded traffic only when it is an authorized
460
- // witness/mailbox/agent for the recipient. This keeps mailbox storage from
461
- // becoming a generic unauthenticated relay.
462
- if (recipientKever.wits.includes(hostAid)) {
463
- return true;
464
- }
465
- for (const role of [Roles.mailbox, Roles.agent]) {
466
- const end = hby.db.ends.get([recipient, role, hostAid]);
467
- if (end?.allowed || end?.enabled) {
468
- return true;
469
- }
470
- }
471
- return false;
472
- }
473
- function hasLocalStoreForwardHost(hby, recipient, recipientKever) {
474
- // Check all local prefixes because a multi-role runtime can host a mailbox
475
- // AID that is distinct from the controller currently processing the EXN.
476
- for (const hostAid of hby.db.prefixes) {
477
- if (hostCanStoreForwardRecipient(hby, recipient, recipientKever, hostAid)) {
478
- return true;
479
- }
480
- }
481
- return false;
482
- }
483
- /**
484
- * Local/remote mailbox consumer for forwarded EXN topics.
485
- *
486
- * Current scope:
487
- * - replays locally stored mailbox topics for local habitat prefixes
488
- * - polls configured remote mailbox or witness endpoints with `mbx` queries
489
- * - lends retrieved records to the composed consumer; protocol intake stays outside
490
- */
491
- export class MailboxPoller {
492
- constructor(hby, mailboxDirector, options = {}) {
493
- Object.defineProperty(this, "hby", {
494
- enumerable: true,
495
- configurable: true,
496
- writable: true,
497
- value: void 0
498
- });
499
- Object.defineProperty(this, "mailboxDirector", {
500
- enumerable: true,
501
- configurable: true,
502
- writable: true,
503
- value: void 0
504
- });
505
- Object.defineProperty(this, "timeoutPolicy", {
506
- enumerable: true,
507
- configurable: true,
508
- writable: true,
509
- value: void 0
510
- });
511
- Object.defineProperty(this, "services", {
512
- enumerable: true,
513
- configurable: true,
514
- writable: true,
515
- value: void 0
516
- });
517
- Object.defineProperty(this, "pollTransport", {
518
- enumerable: true,
519
- configurable: true,
520
- writable: true,
521
- value: void 0
522
- });
523
- Object.defineProperty(this, "localCursors", {
524
- enumerable: true,
525
- configurable: true,
526
- writable: true,
527
- value: new Map()
528
- });
529
- const { timeouts, services = defaultRuntimeServices, pollTransport = defaultMailboxPollTransport, } = options;
530
- this.hby = hby;
531
- this.mailboxDirector = mailboxDirector;
532
- this.timeoutPolicy = normalizeMailboxPollingTimeoutPolicy(timeouts);
533
- this.services = services;
534
- this.pollTransport = pollTransport;
535
- }
536
- /** Register one mailbox topic that this poller should retrieve. */
537
- registerTopic(topic) {
538
- this.mailboxDirector.registerTopic(topic);
539
- }
540
- /**
541
- * Poll forever, streaming typed batches into one sink.
542
- *
543
- * Each remote endpoint progresses independently, and awaits the consumer before
544
- * reading the next event or advancing its persisted cursor.
545
- */
546
- *pollDo(onBatch) {
547
- const remoteWorkers = new Map();
548
- try {
549
- while (true) {
550
- const topics = this.mailboxDirector.registeredTopics();
551
- yield* this.syncRemoteWorkers(remoteWorkers, onBatch, topics);
552
- if (topics.length > 0) {
553
- for (const pre of this.hby.prefixes) {
554
- const local = this.readLocalMailbox(pre, topics);
555
- if (local.length > 0) {
556
- yield* call(() => onBatch({ source: "local", pre, messages: local }));
557
- }
558
- }
559
- }
560
- yield* runtimeTurn();
561
- }
562
- }
563
- finally {
564
- for (const task of [...remoteWorkers.values()].reverse()) {
565
- yield* task.halt();
566
- }
567
- }
568
- }
569
- /**
570
- * Read locally stored mailbox traffic from the shared `Mailboxer`.
571
- *
572
- * Local cursors are in-memory only because they are scoped to the current
573
- * runtime process, unlike remote mailbox progress tracked in `tops.`.
574
- */
575
- readLocalMailbox(pre, topics) {
576
- if (!this.mailboxDirector.hasMailboxStore()) {
577
- return [];
578
- }
579
- const cursor = this.localCursor(pre);
580
- const messages = [];
581
- for (const topic of topics) {
582
- for (const item of this.mailboxDirector.topicIter(pre, topic, cursor[topic] ?? 0)) {
583
- cursor[topic] = item.idx + 1;
584
- messages.push(item.msg);
585
- }
586
- }
587
- return messages;
588
- }
589
- /** Return the in-memory local mailbox cursor map for one local prefix. */
590
- localCursor(pre) {
591
- const current = this.localCursors.get(pre);
592
- if (current) {
593
- return current;
594
- }
595
- const created = {};
596
- this.localCursors.set(pre, created);
597
- return created;
598
- }
599
- /** Stream one remote response through its consumer before recording cursor progress. */
600
- *pollRemoteEndpointOnce(target, endpoint, onBatch) {
601
- const cursor = this.mailboxDirector.remoteQueryCursor(target.targetPre, endpoint.eid);
602
- // deno-lint-ignore no-this-alias -- Generator callbacks have no lexical this.
603
- const self = this;
604
- yield* this.pollTransport.poll({
605
- hab: target.signerHab,
606
- targetPre: target.targetPre,
607
- endpoint,
608
- topics: cursor,
609
- bodyMode: this.hby.cesrBodyMode,
610
- timeouts: mailboxFetchTimeoutPolicy(this.timeoutPolicy),
611
- services: this.services,
612
- }, function* (message) {
613
- yield* call(() => onBatch({ source: "remote", pre: target.targetPre, eid: endpoint.eid, messages: [message.msg] }));
614
- self.mailboxDirector.updateRemoteCursor(target.targetPre, endpoint.eid, message.topic, message.idx);
615
- });
616
- }
617
- /** Keep one long-lived worker running for each currently configured remote endpoint. */
618
- *syncRemoteWorkers(remoteWorkers, onBatch, topics) {
619
- const active = new Set();
620
- if (topics.length > 0) {
621
- for (const target of this.remotePollTargets()) {
622
- for (const endpoint of mailboxPollEndpoints(this.hby, target.hab)) {
623
- const workerKey = `${target.targetPre}:${endpoint.key}`;
624
- active.add(workerKey);
625
- if (remoteWorkers.has(workerKey)) {
626
- continue;
627
- }
628
- const task = yield* spawn(() => this.remoteEndpointWorker(target, endpoint, onBatch));
629
- remoteWorkers.set(workerKey, task);
630
- }
631
- }
632
- }
633
- for (const [workerKey, task] of [...remoteWorkers.entries()]) {
634
- if (active.has(workerKey)) {
635
- continue;
636
- }
637
- yield* task.halt();
638
- remoteWorkers.delete(workerKey);
639
- }
640
- }
641
- /**
642
- * Poll one remote endpoint continuously in the long-lived runtime shape.
643
- *
644
- * This keeps KERIpy's "one poller per endpoint" behavior while preserving
645
- * `keri-ts`'s split between mailbox transport and runtime parser ownership.
646
- */
647
- *remoteEndpointWorker(target, endpoint, onBatch) {
648
- while (true) {
649
- yield* this.pollRemoteEndpointOnce(target, endpoint, onBatch);
650
- yield* runtimeTurn();
651
- }
652
- }
653
- remotePollTargets() {
654
- const targets = [];
655
- for (const hab of this.hby.habs.values()) {
656
- const signerHab = this.pollSignerHab(hab);
657
- if (!signerHab) {
658
- continue;
659
- }
660
- targets.push({ hab, targetPre: hab.pre, signerHab });
661
- }
662
- return targets;
663
- }
664
- pollSignerHab(hab) {
665
- if (!this.hby.db.groups.has(hab.pre)) {
666
- return hab;
667
- }
668
- const mid = this.hby.db.getHab(hab.pre)?.mid;
669
- if (!mid) {
670
- return null;
671
- }
672
- return this.hby.habs.get(mid) ?? null;
673
- }
674
- }
675
- Object.defineProperty(MailboxPoller, "DefaultTimeoutPolicy", {
676
- enumerable: true,
677
- configurable: true,
678
- writable: true,
679
- value: Object.freeze({
680
- requestOpenTimeoutMs: 5_000,
681
- maxPollDurationMs: 30_000,
682
- })
683
- });
684
- Object.defineProperty(MailboxPoller, "ReadIdleTimeoutMs", {
685
- enumerable: true,
686
- configurable: true,
687
- writable: true,
688
- value: 500
689
- });
690
- /**
691
- * Build a signed legacy embed or v2 nested `/fwd` envelope for one complete message.
692
- *
693
- * The caller is responsible for any surrounding introduction or end-role
694
- * material that should travel with the forwarded request.
695
- */
696
- function* buildForwardedDelivery(hab, args) {
697
- const frames = parseBytes(args.message);
698
- if (frames.length !== 1)
699
- throw new ValidationError("Forwarding requires one complete CESR message.");
700
- const child = frames[0];
701
- if (child.body.pvrsn.major >= 2 || (child.gvrsn?.major ?? 1) >= 2) {
702
- const [serder] = exchange("/fwd", {
703
- evt: new Diger({ code: MtrDex.Blake3_256, raw: Diger.digest(child.body.raw, MtrDex.Blake3_256) }).qb64,
704
- }, {
705
- sender: hab.pre,
706
- modifiers: { pre: args.recipient, topic: transportMailboxTopic(args.topic) },
707
- pvrsn: Vrsn_2_0,
708
- });
709
- // Capture the signer before the codec reader yields; child proofs remain independent.
710
- const [outer] = parseBytes(hab.endorse(serder, { pipelined: false, gvrsn: Vrsn_2_0, genusify: true }));
711
- return yield* abortable((signal) => collectPayload(framePayload({ ...outer, nests: [child] }), signal));
712
- }
713
- const message = concatBytes(child.body.raw, yield* abortable((signal) => collectPayload(attachmentPayload(child), signal)));
714
- const [serder, attachments] = exchange("/fwd", {}, {
715
- sender: hab.pre,
716
- modifiers: { pre: args.recipient, topic: transportMailboxTopic(args.topic) },
717
- embeds: { evt: message },
718
- });
719
- const endorsed = hab.endorse(serder, { pipelined: false });
720
- return concatBytes(endorsed, attachments);
721
- }
722
- /**
723
- * Include the sender's latest KEL before locally stored `/reply` payloads.
724
- *
725
- * KERIpy's `Revery` escrows transferable replies whose signer establishment
726
- * event is unknown. Python KLI does not route that escrow's follow-up query cue
727
- * during the bounded `kli query` command, so a local mailbox host must provide
728
- * the verification context with the reply itself for rotated `/ksn` replies.
729
- */
730
- function mailboxReplyPayload(hab, recipient, topic, message) {
731
- if (topic !== "/reply" && topic !== "reply") {
732
- return message;
733
- }
734
- const introduction = introduce(hab, recipient);
735
- return introduction.length === 0 ? message : concatBytes(introduction, message);
736
- }
737
- /**
738
- * Borrow a Hab/store for lazy introduction output, preserving target KEL, oldest
739
- * delegator first, then endpoint/location replies. Capture begins on iteration.
740
- * No source is opened when a witness/receipt already makes introduction unnecessary.
741
- * Native proof/key copies and the large-history transport caller remain separately qualified.
742
- */
743
- export function introductionMessages(hab, remote) {
744
- const endpoints = hab.replyEndRoleMessages(hab.pre);
745
- return {
746
- *[Symbol.iterator]() {
747
- const kever = hab.kever;
748
- if (!kever || kever.wits.includes(remote))
749
- return;
750
- const latestSaid = kever.serder.said;
751
- if (!latestSaid || remoteAlreadyReceiptedLatestEvent(hab, remote, latestSaid))
752
- return;
753
- const captured = hab.db.replay(hab.pre);
754
- if (captured)
755
- yield* captured;
756
- yield* endpoints;
757
- },
758
- };
759
- }
760
- /** Collect the introduction required by the existing finite query/forwarding path. */
761
- export function introduce(hab, remote) {
762
- return concatBytes(...introductionMessages(hab, remote));
763
- }
764
- function remoteAlreadyReceiptedLatestEvent(hab, remote, said) {
765
- const keys = [
766
- dgKey(hab.pre, said),
767
- dgKey(remote, said),
768
- ];
769
- for (const key of keys) {
770
- if (hab.db.vrcs.get(key).some(([prefixer]) => prefixer.qb64 === remote)) {
771
- return true;
772
- }
773
- if (hab.db.rcts.get(key).some(([prefixer]) => prefixer.qb64.startsWith(remote))) {
774
- return true;
775
- }
776
- }
777
- return false;
778
- }
779
- /** Derive the default mailbox topic from the first non-empty route segment. */
780
- function defaultTopicForRoute(route) {
781
- if (route.startsWith("/delegate")) {
782
- return DELEGATE_MAILBOX_TOPIC;
783
- }
784
- if (route === "/oobis") {
785
- return OOBI_MAILBOX_TOPIC;
786
- }
787
- if (route.startsWith("/ipex/")) {
788
- return CREDENTIAL_MAILBOX_TOPIC;
789
- }
790
- const trimmed = route.replace(/^\/+/, "");
791
- return trimmed.split("/")[0] ?? "";
792
- }
793
- /** KERIpy pollers query protocol mailbox topics with a leading slash. */
794
- function pollMailboxTopic(topic) {
795
- if (topic.length === 0 || topic.startsWith("/")) {
796
- return topic;
797
- }
798
- return `/${topic}`;
799
- }
800
- /** KERIpy `/fwd` modifiers use the bare topic name, e.g. `multisig`. */
801
- function transportMailboxTopic(topic) {
802
- return topic.replace(/^\/+/, "");
803
- }
804
- /**
805
- * Public helper for deriving mailbox topic defaults from one EXN route.
806
- *
807
- * This stays exported because CLI and runtime call sites both need one shared
808
- * answer for "which mailbox topic should this route land in by default?"
809
- */
810
- export function mailboxTopicForRoute(route) {
811
- return pollMailboxTopic(defaultTopicForRoute(route));
812
- }
813
- function extractForwardedMessage(serder, attachments) {
814
- const embeds = serder.ked?.e;
815
- const evt = embeds?.evt;
816
- if (!evt || typeof evt !== "object" || Array.isArray(evt)) {
817
- return null;
818
- }
819
- // Rebuild the embedded event from SAD plus only the attachment material
820
- // pathed to `/e/evt`; other pathed groups belong to the outer `/fwd` message.
821
- const embedded = embeddedSerderRaw(evt);
822
- const messageParts = [embedded];
823
- for (const attachment of attachments) {
824
- const atc = forwardedAttachmentForPath(attachment.raw, "/e/evt");
825
- if (atc) {
826
- messageParts.push(atc);
827
- }
828
- }
829
- return concatBytes(...messageParts);
830
- }
831
- function embeddedSerderRaw(sad) {
832
- const version = typeof sad.v === "string" ? sad.v : "";
833
- if (version.startsWith("ACDC")) {
834
- return new SerderACDC({ sad, verify: false }).raw;
835
- }
836
- return new SerderKERI({ sad }).raw;
837
- }
838
- /**
839
- * Extract the forwarded attachment bytes for the embedded `/e/evt` path.
840
- *
841
- * Forwarded attachment groups can carry multiple pathed attachments, so the
842
- * path filter keeps mailbox reconstruction focused on the embedded event.
843
- */
844
- function forwardedAttachmentForPath(raw, path) {
845
- if (raw.length === 0) {
846
- return null;
847
- }
848
- const counter = new Counter({ qb64b: raw });
849
- const offset = counter.fullSize;
850
- const pather = parsePather(raw.slice(offset), "txt");
851
- if (pather.path !== path) {
852
- return null;
853
- }
854
- return raw.slice(offset + pather.fullSize);
855
- }
856
- const defaultMailboxPollTransport = {
857
- *poll(args, consume) {
858
- // A completed long poll releases its HTTP resource before the next poll begins.
859
- return yield* call(() => fetchMailboxMessages(args.hab, args.targetPre, args.endpoint.eid, args.endpoint.url, args.topics, args.bodyMode, args.timeouts, args.services, consume));
860
- },
861
- };
862
- /**
863
- * Query one remote mailbox endpoint and parse any returned mailbox SSE events.
864
- *
865
- * The query cursor values are "next wanted" ordinals, matching `mbx`
866
- * semantics.
867
- */
868
- function* fetchMailboxMessages(hab, targetPre, src, url, topics, bodyMode, timeouts, services, consume) {
869
- const query = hab.query(targetPre, src, { route: "mbx", q: { topics } });
870
- const handle = yield* fetchMailboxQueryResponse(url, query, bodyMode, src, timeouts.requestOpenTimeoutMs, services);
871
- if (!handle) {
872
- return;
873
- }
874
- const { response, controller } = handle;
875
- if (!response.ok) {
876
- yield* closeResponseBody(response);
877
- return;
878
- }
879
- yield* consumeMailboxSse(response, controller, consume, {
880
- idleTimeoutMs: timeouts.readIdleTimeoutMs,
881
- maxDurationMs: timeouts.maxReadDurationMs,
882
- services,
883
- });
884
- }
885
- /**
886
- * Issue one mailbox `mbx` poll request and return the live response handle.
887
- *
888
- * The helper owns only the request lifecycle:
889
- * - build one CESR-over-HTTP mailbox query request
890
- * - apply the pre-response timeout policy
891
- * - return `null` when that timeout expires before any response arrives
892
- *
893
- * Message parsing and SSE body policy remain with `fetchMailboxMessages(...)`.
894
- */
895
- function* fetchMailboxQueryResponse(url, query, bodyMode, destination, timeoutMs, services = defaultRuntimeServices) {
896
- const request = buildCesrRequest(query, {
897
- bodyMode,
898
- destination,
899
- });
900
- return yield* fetchResponseHandleOrNull(url, {
901
- method: "POST",
902
- headers: request.headers,
903
- body: request.body,
904
- }, { timeoutMs, services });
905
- }
906
- function normalizeMailboxPollingTimeoutPolicy(overrides) {
907
- const defaults = MailboxPoller.DefaultTimeoutPolicy;
908
- return Object.freeze({
909
- requestOpenTimeoutMs: positiveTimeoutMs(overrides?.requestOpenTimeoutMs, defaults.requestOpenTimeoutMs),
910
- maxPollDurationMs: positiveTimeoutMs(overrides?.maxPollDurationMs, defaults.maxPollDurationMs),
911
- });
912
- }
913
- function mailboxFetchTimeoutPolicy(timeouts) {
914
- return {
915
- requestOpenTimeoutMs: timeouts.requestOpenTimeoutMs,
916
- maxReadDurationMs: timeouts.maxPollDurationMs,
917
- readIdleTimeoutMs: MailboxPoller.ReadIdleTimeoutMs,
918
- };
919
- }
920
- function positiveTimeoutMs(value, fallback) {
921
- return typeof value === "number" && Number.isFinite(value) && value > 0 ? Math.floor(value) : fallback;
922
- }
923
- /** Post finite mailbox/EXN caller bytes through the shared progressive, scope-owned sender. */
924
- export function* postCesrMessage(url, body, bodyMode, destination, services = defaultRuntimeServices, signal) {
925
- yield* postCesr(url, (signal) => chunkBytes(body, { signal }), {
926
- bodyMode,
927
- destination,
928
- services,
929
- signal,
930
- });
931
- }
932
- /** Shared EXN send helper used by CLI commands that want KERIpy-style behavior. */
933
- export function* sendExchangeMessage(hby, hab, args) {
934
- const poster = new Poster(hby);
935
- return yield* poster.sendExchange(hab, args);
936
- }