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
@@ -9,16 +9,34 @@
9
9
  * - normal remote-processing outcomes are returned as typed decisions instead
10
10
  * of being represented by Python control-flow exceptions.
11
11
  */
12
- import { Dater, Diger, Ilks, Prefixer, SerderKERI, TraitDex, Verfer, Vrsn_2_0, } from "cesr-ts";
13
- import { CueDeck } from "../core/cue-admission.js";
14
- import { Deck, DeckFullError } from "../core/deck.js";
15
- import { ValidationError } from "../core/errors.js";
16
- import { Kever } from "../core/kever.js";
17
- import { state as registryState, vcstate as credentialState } from "../core/protocol-vdr-eventing.js";
12
+ import { Dater, Diger, Ilks, ParserError, Prefixer, SerderKERI, TraitDex, Verfer, } from "cesr-ts";
13
+ import { Deck } from "../core/deck.js";
14
+ import { DatabaseOperationError, ValidationError } from "../core/errors.js";
15
+ import { acceptEscrow, dropEscrow, keepEscrow } from "../core/kel/kever-decisions.js";
16
+ import { Kever } from "../core/kel/kever.js";
17
+ import { consoleLogger } from "../core/logger.js";
18
+ import { projectRegistrySeal, state as registryState, vcstate as credentialState, } from "../core/protocol-vdr-eventing.js";
19
+ import { acceptReplyDecision, unverifiedReplyDecision, } from "../core/routing.js";
18
20
  import { dgKey } from "../db/core/keys.js";
19
- import { CapturedTelReplay } from "../db/tel-replay.js";
20
- import { encodeDateTimeToDater, makeNowIso8601 } from "../time/mod.js";
21
+ import { encodeDateTimeToDater, makeNowIso8601, timestampMicros } from "../time/mod.js";
22
+ import { backerThreshold, resolveBackerState } from "./backer-state.js";
23
+ import { credentialRecord } from "./credential-tsn-record.js";
24
+ import { qualifiedPrefix, registryRecord } from "./registry-tsn-record.js";
25
+ import { verifyTelAnchor } from "./tel-anchor.js";
21
26
  import { prepareTsnQuery } from "./tsn-query.js";
27
+ /** Carry an existing pending decision across Tever's constructor-only boundary. */
28
+ class PendingTelInception extends Error {
29
+ /** @param decision Recoverable inception outcome retained in its existing protocol escrow. */
30
+ constructor(decision) {
31
+ super(decision.reason);
32
+ Object.defineProperty(this, "decision", {
33
+ enumerable: true,
34
+ configurable: true,
35
+ writable: true,
36
+ value: decision
37
+ });
38
+ }
39
+ }
22
40
  function okSaid(serder) {
23
41
  if (!serder.said) {
24
42
  throw new ValidationError("TEL event missing SAID.");
@@ -110,6 +128,55 @@ function stringListField(data, field) {
110
128
  const value = data[field];
111
129
  return Array.isArray(value) && value.every((item) => typeof item === "string") ? [...value] : [];
112
130
  }
131
+ /**
132
+ * Validate VCP identity, ordinal, backer policy and configuration without writes.
133
+ * Existing constructor overrides retain their KERIpy semantics: an explicit true
134
+ * or a signed configuration trait enables the corresponding registry policy.
135
+ */
136
+ export function validateRegistryInception(serder, noBackers, estOnly) {
137
+ if (serder.ilk !== Ilks.vcp)
138
+ throw new ValidationError(`Expected vcp got ${String(serder.ilk)}.`);
139
+ const ked = okKed(serder);
140
+ const issuer = stringField(ked, "ii");
141
+ if (!issuer)
142
+ throw new ValidationError("Registry inception missing ii.");
143
+ const prefixer = new Prefixer({ qb64: okPre(serder) });
144
+ const sn = okSn(serder);
145
+ if (sn !== 0)
146
+ throw new ValidationError(`Invalid vcp sn=${sn}.`);
147
+ const baks = stringListField(ked, "b");
148
+ if (!unique(baks))
149
+ throw new ValidationError(`Invalid duplicate baks=${baks}.`);
150
+ const toad = backerThreshold(ked.bt);
151
+ if (toad === null)
152
+ throw new ValidationError("Invalid registry backer threshold.");
153
+ validateBackerThreshold(toad, baks);
154
+ const cnfg = stringListField(ked, "c");
155
+ const backerless = (noBackers ?? false) || cnfg.includes(TraitDex.NoBackers);
156
+ if (backerless && baks.length > 0)
157
+ throw new ValidationError("NoBackers registry may not configure baks.");
158
+ return {
159
+ issuer,
160
+ prefixer,
161
+ baks,
162
+ toad,
163
+ noBackers: backerless,
164
+ estOnly: (estOnly ?? false) || cnfg.includes(TraitDex.EstOnly),
165
+ };
166
+ }
167
+ /** Enforce the same exact quorum bounds for inception, rotation and endorsement admission. */
168
+ function validateBackerThreshold(toad, baks) {
169
+ if (!Number.isSafeInteger(toad) || toad < 0)
170
+ throw new ValidationError("Invalid registry backer threshold.");
171
+ if (baks.length === 0) {
172
+ if (toad !== 0)
173
+ throw new ValidationError(`Invalid toad=${toad} for empty backer set.`);
174
+ }
175
+ else if (toad < 1 || toad > baks.length) {
176
+ throw new ValidationError(`Invalid toad=${toad} for baks=${baks}.`);
177
+ }
178
+ }
179
+ /** Leave untrusted fields unknown until each lookup checks the fields it consumes. */
113
180
  function sealRecord(value) {
114
181
  return typeof value === "object" && value !== null && !Array.isArray(value) ? value : null;
115
182
  }
@@ -123,9 +190,9 @@ function serderForTel(reger, pre, said) {
123
190
  /**
124
191
  * Registry transaction event verifier.
125
192
  *
126
- * `Tever` owns accepted TEL state for one registry. It writes durable TEL
127
- * artifacts through `Reger`; `Tevery` owns routing, cache insertion, and escrow
128
- * replay.
193
+ * `Tever` carries registry state and evaluates/writes one private admission
194
+ * candidate through `Reger`. Input policy is supplied for that admission rather
195
+ * than cached. `Tevery` owns transactions, accepted cache publication, cues and replay.
129
196
  */
130
197
  export class Tever {
131
198
  constructor(options) {
@@ -141,18 +208,6 @@ export class Tever {
141
208
  writable: true,
142
209
  value: void 0
143
210
  });
144
- Object.defineProperty(this, "local", {
145
- enumerable: true,
146
- configurable: true,
147
- writable: true,
148
- value: void 0
149
- });
150
- Object.defineProperty(this, "cues", {
151
- enumerable: true,
152
- configurable: true,
153
- writable: true,
154
- value: void 0
155
- });
156
211
  Object.defineProperty(this, "version", {
157
212
  enumerable: true,
158
213
  configurable: true,
@@ -233,8 +288,6 @@ export class Tever {
233
288
  });
234
289
  this.db = options.db;
235
290
  this.reger = options.reger;
236
- this.local = options.local ?? false;
237
- this.cues = options.cues ?? new Deck();
238
291
  if (options.rsr) {
239
292
  this.version = { major: 1, minor: 0 };
240
293
  this.reload(options.rsr);
@@ -248,8 +301,16 @@ export class Tever {
248
301
  }
249
302
  this.version = options.serder.pvrsn;
250
303
  this.regk = options.regk ?? okPre(options.serder);
251
- this.incept(options.serder);
252
- this.config(options.serder, options.noBackers, options.estOnly);
304
+ const inception = validateRegistryInception(options.serder, options.noBackers, options.estOnly);
305
+ this.pre = inception.issuer;
306
+ this.prefixer = inception.prefixer;
307
+ this.sn = 0;
308
+ this.baks = inception.baks;
309
+ this.toad = inception.toad;
310
+ this.noBackers = inception.noBackers;
311
+ this.estOnly = inception.estOnly;
312
+ this.ilk = Ilks.vcp;
313
+ this.serder = options.serder;
253
314
  const checked = this.valAnchorBigs({
254
315
  serder: options.serder,
255
316
  seqner: options.seqner ?? null,
@@ -257,9 +318,10 @@ export class Tever {
257
318
  bigers: options.bigers ?? [],
258
319
  toad: this.toad,
259
320
  baks: this.baks,
321
+ local: options.local ?? false,
260
322
  });
261
323
  if (checked.kind !== "accept") {
262
- throw new ValidationError(checked.reason);
324
+ throw new PendingTelInception(checked.decision);
263
325
  }
264
326
  this.logEvent({
265
327
  pre: this.prefixer.qb64,
@@ -288,7 +350,10 @@ export class Tever {
288
350
  this.prefixer = new Prefixer({ qb64: regk });
289
351
  this.sn = parseInt(rsr.s ?? "0", 16);
290
352
  this.ilk = (rsr.et ?? Ilks.vcp);
291
- this.toad = parseInt(rsr.bt ?? "0", 16);
353
+ const toad = backerThreshold(rsr.bt);
354
+ if (toad === null)
355
+ throw new DatabaseOperationError("Stored registry backer threshold is invalid.");
356
+ this.toad = toad;
292
357
  this.baks = [...(rsr.b ?? [])];
293
358
  this.noBackers = (rsr.c ?? []).includes(TraitDex.NoBackers);
294
359
  this.estOnly = (rsr.c ?? []).includes(TraitDex.EstOnly);
@@ -332,7 +397,7 @@ export class Tever {
332
397
  const [number, diger] = anchor;
333
398
  const eilk = this.noBackers ? (digs.length === 1 ? Ilks.iss : Ilks.rev) : (digs.length === 1 ? Ilks.bis : Ilks.brv);
334
399
  const ked = okKed(serder);
335
- const ra = this.noBackers ? {} : sealRecord(ked.ra) ?? {};
400
+ const ra = this.noBackers ? {} : projectRegistrySeal(ked.ra);
336
401
  return credentialState(vci, said, vcsn, this.regk, eilk, { s: Number(number.num), d: diger.qb64 }, {
337
402
  ra,
338
403
  dts: typeof ked.dt === "string" ? ked.dt : undefined,
@@ -343,9 +408,9 @@ export class Tever {
343
408
  const count = this.reger.tels.cntOn(vci, 0);
344
409
  return count === 0 ? null : count - 1;
345
410
  }
346
- /** Apply TEL input; the internal recorder preserves owned-cue publication failures through router catches. */
347
- update(args, recordCueFailure) {
348
- let cueFailure;
411
+ /** Apply TEL input; the internal recorder preserves publication failures through router catches. */
412
+ update(args, recordPublicationFailure) {
413
+ let publicationFailure;
349
414
  try {
350
415
  const serder = args.serder;
351
416
  const ilk = telIlk(serder);
@@ -357,60 +422,21 @@ export class Tever {
357
422
  return this.issue(serder, sn, args);
358
423
  }
359
424
  if (ilk === Ilks.rev || ilk === Ilks.brv) {
360
- return this.revoke(serder, sn, args, this.cues instanceof CueDeck
361
- ? (error) => {
362
- cueFailure = { error };
363
- recordCueFailure?.(error);
364
- }
365
- : undefined);
425
+ return this.revoke(serder, sn, args, (error) => {
426
+ publicationFailure = { error };
427
+ recordPublicationFailure?.(error);
428
+ });
366
429
  }
367
430
  return reject(`Unsupported TEL ilk=${ilk}.`, serder, this.regk);
368
431
  }
369
432
  catch (error) {
370
- if (cueFailure && cueFailure.error === error)
433
+ if (publicationFailure && publicationFailure.error === error)
434
+ throw error;
435
+ if (!(error instanceof ValidationError) && !(error instanceof ParserError))
371
436
  throw error;
372
437
  return reject(error instanceof Error ? error.message : String(error), args.serder, this.regk);
373
438
  }
374
439
  }
375
- incept(serder) {
376
- const ked = okKed(serder);
377
- const pre = stringField(ked, "ii");
378
- if (!pre) {
379
- throw new ValidationError("Registry inception missing ii.");
380
- }
381
- this.pre = pre;
382
- this.prefixer = new Prefixer({ qb64: okPre(serder) });
383
- this.sn = okSn(serder);
384
- if (this.sn !== 0) {
385
- throw new ValidationError(`Invalid vcp sn=${this.sn}.`);
386
- }
387
- this.cuts = [];
388
- this.adds = [];
389
- const baks = stringListField(ked, "b");
390
- if (!unique(baks)) {
391
- throw new ValidationError(`Invalid duplicate baks=${baks}.`);
392
- }
393
- this.baks = baks;
394
- const toad = parseInt(stringField(ked, "bt") ?? "0", 16);
395
- this.validateToad(toad, baks);
396
- this.toad = toad;
397
- this.ilk = Ilks.vcp;
398
- this.serder = serder;
399
- }
400
- config(serder, noBackers, estOnly) {
401
- const cnfg = stringListField(okKed(serder), "c");
402
- this.noBackers = noBackers ?? false;
403
- this.estOnly = estOnly ?? false;
404
- if (cnfg.includes(TraitDex.NoBackers)) {
405
- this.noBackers = true;
406
- }
407
- if (cnfg.includes(TraitDex.EstOnly)) {
408
- this.estOnly = true;
409
- }
410
- if (this.noBackers && this.baks.length > 0) {
411
- throw new ValidationError("NoBackers registry may not configure baks.");
412
- }
413
- }
414
440
  updateRotation(serder, sn, args) {
415
441
  if (this.noBackers) {
416
442
  return reject("Backerless registry cannot rotate TEL backers.", serder, this.regk);
@@ -426,6 +452,7 @@ export class Tever {
426
452
  bigers: args.wigers ?? [],
427
453
  toad: rotated.toad,
428
454
  baks: rotated.baks,
455
+ local: args.local ?? false,
429
456
  });
430
457
  if (checked.kind !== "accept") {
431
458
  return checked.decision;
@@ -474,12 +501,16 @@ export class Tever {
474
501
  }
475
502
  const next = this.baks.filter((bak) => !cuts.includes(bak));
476
503
  next.push(...adds);
477
- const toad = parseInt(stringField(ked, "bt") ?? "0", 16);
504
+ const toad = backerThreshold(ked.bt);
505
+ if (toad === null)
506
+ return reject("Invalid registry backer threshold.", serder, this.regk);
478
507
  try {
479
- this.validateToad(toad, next);
508
+ validateBackerThreshold(toad, next);
480
509
  }
481
510
  catch (error) {
482
- return reject(error instanceof Error ? error.message : String(error), serder, this.regk);
511
+ if (!(error instanceof ValidationError) && !(error instanceof ParserError))
512
+ throw error;
513
+ return reject(error.message, serder, this.regk);
483
514
  }
484
515
  return { kind: "rotated", toad, baks: next, cuts, adds };
485
516
  }
@@ -508,10 +539,11 @@ export class Tever {
508
539
  if (this.noBackers) {
509
540
  return reject("Backer issue is invalid against backerless registry.", serder, this.regk);
510
541
  }
511
- const state = this.getBackerState(okKed(serder), serder);
512
- if (state.kind === "reject") {
513
- return state;
514
- }
542
+ const state = resolveBackerState(this.reger, this.regk, okKed(serder).ra);
543
+ if (state.kind === "reject")
544
+ return reject(state.reason, serder, this.regk);
545
+ if (state.kind === "missing")
546
+ return escrow("outOfOrder", state.reason, serder, this.regk);
515
547
  const checked = this.valAnchorBigs({
516
548
  serder,
517
549
  seqner: args.seqner ?? null,
@@ -519,6 +551,7 @@ export class Tever {
519
551
  bigers: args.wigers ?? [],
520
552
  toad: state.toad,
521
553
  baks: state.baks,
554
+ local: args.local ?? false,
522
555
  });
523
556
  if (checked.kind !== "accept") {
524
557
  return checked.decision;
@@ -533,7 +566,7 @@ export class Tever {
533
566
  });
534
567
  return accept(serder, this.regk);
535
568
  }
536
- revoke(serder, sn, args, recordCueFailure) {
569
+ revoke(serder, sn, args, recordPublicationFailure) {
537
570
  const vci = okPre(serder);
538
571
  const prior = digestForTel(this.reger, vci, sn - 1);
539
572
  if (prior === null) {
@@ -553,16 +586,17 @@ export class Tever {
553
586
  this.escrowALEvent(serder, args.seqner ?? null, args.saider ?? null);
554
587
  return escrow("anchorless", "Missing KEL anchor for TEL revoke.", serder, this.regk);
555
588
  }
556
- this.logRevoked(serder, sn, args, undefined, recordCueFailure);
589
+ this.logRevoked(serder, sn, args, undefined, recordPublicationFailure);
557
590
  return accept(serder, this.regk);
558
591
  }
559
592
  if (this.noBackers) {
560
593
  return reject("Backer revoke is invalid against backerless registry.", serder, this.regk);
561
594
  }
562
- const state = this.getBackerState(okKed(serder), serder);
563
- if (state.kind === "reject") {
564
- return state;
565
- }
595
+ const state = resolveBackerState(this.reger, this.regk, okKed(serder).ra);
596
+ if (state.kind === "reject")
597
+ return reject(state.reason, serder, this.regk);
598
+ if (state.kind === "missing")
599
+ return escrow("outOfOrder", state.reason, serder, this.regk);
566
600
  const checked = this.valAnchorBigs({
567
601
  serder,
568
602
  seqner: args.seqner ?? null,
@@ -570,66 +604,45 @@ export class Tever {
570
604
  bigers: args.wigers ?? [],
571
605
  toad: state.toad,
572
606
  baks: state.baks,
607
+ local: args.local ?? false,
573
608
  });
574
609
  if (checked.kind !== "accept") {
575
610
  return checked.decision;
576
611
  }
577
- this.logRevoked(serder, sn, args, checked.bigers, recordCueFailure);
612
+ this.logRevoked(serder, sn, args, checked.bigers, recordPublicationFailure);
578
613
  return accept(serder, this.regk);
579
614
  }
580
- /** Admit the actual revocation cue before accepted TEL writes; publication follows the existing log boundary. */
581
- logRevoked(serder, sn, args, bigers, recordCueFailure) {
582
- let prepared;
615
+ /** Persist accepted revocation evidence; Tevery publishes its cue after commit. */
616
+ logRevoked(serder, sn, args, bigers, recordPublicationFailure) {
583
617
  try {
584
- try {
585
- const cue = { kin: "revoked", serder };
586
- prepared = this.cues instanceof CueDeck ? this.cues.prepare([cue]) : undefined;
587
- if (!prepared)
588
- this.cues.checkSpace();
589
- this.logEvent({
590
- pre: okPre(serder),
591
- sn,
592
- serder,
593
- seqner: args.seqner ?? null,
594
- saider: args.saider ?? null,
595
- bigers,
596
- });
597
- if (prepared)
598
- prepared.publish();
599
- else
600
- this.cues.push(cue);
601
- }
602
- finally {
603
- prepared?.release();
604
- }
618
+ this.logEvent({
619
+ pre: okPre(serder),
620
+ sn,
621
+ serder,
622
+ seqner: args.seqner ?? null,
623
+ saider: args.saider ?? null,
624
+ bigers,
625
+ });
605
626
  }
606
627
  catch (error) {
607
- recordCueFailure?.(error);
628
+ recordPublicationFailure?.(error);
608
629
  throw error;
609
630
  }
610
631
  }
611
- validateToad(toad, baks) {
612
- if (baks.length === 0) {
613
- if (toad !== 0) {
614
- throw new ValidationError(`Invalid toad=${toad} for empty backer set.`);
615
- }
616
- }
617
- else if (toad < 1 || toad > baks.length) {
618
- throw new ValidationError(`Invalid toad=${toad} for baks=${baks}.`);
619
- }
620
- }
621
632
  valAnchorBigs(args) {
622
633
  const verfers = args.baks.map((bak) => new Verfer({ qb64: bak }));
623
- const verified = Kever.verifyIndexedSignatures(args.serder.raw, args.bigers, verfers).sigers;
634
+ const verified = Kever.verifyIndexedSignatures(args.serder.raw,
635
+ // Every arrival and retry verifies the union against this exact historical cohort.
636
+ [...this.reger.tibs.get(dgKey(okPre(args.serder), okSaid(args.serder))), ...args.bigers], verfers).sigers;
624
637
  if (!this.verifyAnchor(args.serder, args.seqner, args.saider)) {
625
638
  this.escrowALEvent(args.serder, args.seqner, args.saider, verified, [...args.baks]);
626
639
  const decision = escrow("anchorless", "Missing KEL anchor for TEL event.", args.serder, this.regk);
627
640
  return { kind: "escrow", decision, reason: decision.reason };
628
641
  }
629
- if (!this.local && args.baks.length > 0) {
630
- this.validateToad(args.toad, args.baks);
642
+ if (!args.local && args.baks.length > 0) {
643
+ validateBackerThreshold(args.toad, args.baks);
631
644
  if (verified.length < args.toad) {
632
- this.escrowPWEvent(args.serder, args.seqner, args.saider, verified);
645
+ this.escrowPWEvent(args.serder, args.seqner, args.saider, verified, args.baks);
633
646
  const decision = escrow("partialWitness", `TEL event does not satisfy backer threshold ${args.toad}.`, args.serder, this.regk);
634
647
  return { kind: "escrow", decision, reason: decision.reason };
635
648
  }
@@ -637,38 +650,19 @@ export class Tever {
637
650
  return { kind: "accept", bigers: verified };
638
651
  }
639
652
  verifyAnchor(serder, seqner, saider) {
640
- if (!seqner || !saider) {
641
- return false;
642
- }
643
- const anchorSaid = this.db.kels.getLast(this.pre, Number(seqner.num));
644
- if (!anchorSaid || anchorSaid !== saider.qb64) {
645
- return false;
646
- }
647
- const anchor = this.db.getEvtSerder(this.pre, anchorSaid);
648
- if (!anchor || anchor.said !== saider.qb64) {
649
- return false;
650
- }
651
- const anchorKed = okKed(anchor);
652
- const seals = Array.isArray(anchorKed.a) ? anchorKed.a : [];
653
- if (seals.length !== 1) {
654
- return false;
655
- }
656
- const seal = sealRecord(seals[0]);
657
- return seal?.i === serder.pre
658
- && seal?.s === serder.snh
659
- && seal?.d === serder.said;
653
+ return verifyTelAnchor(this.db, this.pre, serder, seqner, saider);
660
654
  }
661
655
  /** Retain partial-witness evidence with its qualified source ordinal. */
662
- escrowPWEvent(serder, seqner, saider, bigers = []) {
656
+ escrowPWEvent(serder, seqner, saider, bigers = [], baks = []) {
663
657
  const pre = okPre(serder);
664
658
  const said = okSaid(serder);
665
659
  const key = dgKey(pre, said);
666
660
  if (seqner && saider) {
667
661
  this.reger.ancs.put(key, [seqner, new Diger({ qb64: saider.qb64 })]);
668
662
  }
669
- if (bigers.length > 0) {
670
- this.reger.tibs.pin(key, [...bigers]);
671
- }
663
+ this.reger.tibs.pin(key, [...bigers]);
664
+ this.reger.baks.rem(key);
665
+ this.reger.baks.put(key, [...baks]);
672
666
  this.reger.tvts.put(key, serder.raw);
673
667
  this.reger.twes.put(pre, okSn(serder), said);
674
668
  }
@@ -680,9 +674,7 @@ export class Tever {
680
674
  if (seqner && saider) {
681
675
  this.reger.ancs.put(key, [seqner, new Diger({ qb64: saider.qb64 })]);
682
676
  }
683
- if (bigers.length > 0) {
684
- this.reger.tibs.pin(key, [...bigers]);
685
- }
677
+ this.reger.tibs.pin(key, [...bigers]);
686
678
  if (baks.length > 0) {
687
679
  this.reger.baks.rem(key);
688
680
  this.reger.baks.put(key, [...baks]);
@@ -690,21 +682,6 @@ export class Tever {
690
682
  this.reger.tvts.put(key, serder.raw);
691
683
  this.reger.taes.put(pre, okSn(serder), said);
692
684
  }
693
- getBackerState(ked, serder) {
694
- const ra = sealRecord(ked.ra);
695
- const regi = typeof ra?.i === "string" ? ra.i : null;
696
- const regd = typeof ra?.d === "string" ? ra.d : null;
697
- if (!regi || !regd || regi !== this.prefixer.qb64) {
698
- return reject("Backer TEL event registry anchor mismatch.", serder, this.regk);
699
- }
700
- const rserder = serderForTel(this.reger, regi, regd);
701
- if (!rserder) {
702
- return reject("Backer TEL event references missing registry state.", serder, this.regk);
703
- }
704
- const toad = parseInt(stringField(okKed(rserder), "bt") ?? "0", 16);
705
- const baks = this.reger.baks.get(dgKey(regi, regd));
706
- return { kind: "backers", toad, baks };
707
- }
708
685
  /** Persist accepted TEL evidence and the exact qualified source seal. */
709
686
  logEvent(args) {
710
687
  const said = okSaid(args.serder);
@@ -714,9 +691,7 @@ export class Tever {
714
691
  }
715
692
  // Keep the qualified Number; widening it here would alter v2 replay evidence.
716
693
  this.reger.ancs.put(key, [args.seqner, new Diger({ qb64: args.saider.qb64 })]);
717
- if (args.bigers && args.bigers.length > 0) {
718
- this.reger.tibs.pin(key, [...args.bigers]);
719
- }
694
+ this.reger.tibs.pin(key, [...(args.bigers ?? [])]);
720
695
  if (args.baks && args.baks.length > 0) {
721
696
  this.reger.baks.rem(key);
722
697
  this.reger.baks.put(key, [...args.baks]);
@@ -727,14 +702,20 @@ export class Tever {
727
702
  }
728
703
  }
729
704
  /**
730
- * TEL event router and escrow reprocessor.
705
+ * TEL event and transaction-state notice processor.
731
706
  *
732
707
  * `Tevery` owns registry-key routing, expected sequence checks, accepted
733
708
  * `Tever` cache persistence, and replay of anchorless/out-of-order TEL
734
- * escrows.
709
+ * escrows, plus TSN reply admission and dependency retries.
735
710
  */
736
711
  export class Tevery {
737
712
  constructor(options) {
713
+ Object.defineProperty(this, "rvy", {
714
+ enumerable: true,
715
+ configurable: true,
716
+ writable: true,
717
+ value: void 0
718
+ });
738
719
  Object.defineProperty(this, "db", {
739
720
  enumerable: true,
740
721
  configurable: true,
@@ -765,6 +746,7 @@ export class Tevery {
765
746
  writable: true,
766
747
  value: void 0
767
748
  });
749
+ this.rvy = options.rvy;
768
750
  this.db = options.db;
769
751
  this.reger = options.reger;
770
752
  this.local = options.local ?? false;
@@ -787,79 +769,131 @@ export class Tevery {
787
769
  this.tevers.set(state.i, new Tever({
788
770
  db: this.db,
789
771
  reger: this.reger,
790
- local: this.local,
791
- cues: this.cues,
792
772
  rsr: state,
793
773
  }));
794
774
  this.registries.add(state.i);
795
775
  }
796
776
  }
777
+ /** Decide and persist under one owned writer, then publish accepted cache state and cues. */
797
778
  processEvent(args) {
798
- let cueFailure;
779
+ if (this.reger.inWriteTransaction) {
780
+ throw new Error("Tevery must own the TEL transaction; process events outside caller-owned writers");
781
+ }
782
+ let accepted;
783
+ let publicationFailure;
784
+ let decision;
799
785
  try {
800
- const serder = args.serder;
801
- const ilk = telIlk(serder);
802
- const pre = okPre(serder);
803
- const sn = okSn(serder);
804
- const regk = Tevery.registryKey(serder);
805
- if (!this.lax) {
806
- if (this.local && !this.registries.has(regk)) {
807
- return reject(`Nonlocal TEL event regk=${regk} in local mode.`, serder, regk);
786
+ decision = this.reger.env.transactionSync(() => {
787
+ const serder = args.serder;
788
+ const ilk = telIlk(serder);
789
+ const pre = okPre(serder);
790
+ const sn = okSn(serder);
791
+ const regk = Tevery.registryKey(serder);
792
+ if (!this.lax) {
793
+ if (this.local && !this.registries.has(regk)) {
794
+ return reject(`Nonlocal TEL event regk=${regk} in local mode.`, serder, regk);
795
+ }
796
+ if (!this.local && this.registries.has(regk)) {
797
+ return reject(`Local TEL event regk=${regk} in nonlocal mode.`, serder, regk);
798
+ }
808
799
  }
809
- if (!this.local && this.registries.has(regk)) {
810
- return reject(`Local TEL event regk=${regk} in nonlocal mode.`, serder, regk);
800
+ // Work on a private candidate from accepted storage, never a shared cached state machine.
801
+ const stored = this.reger.states.get(regk);
802
+ const tever = stored ? new Tever({ db: this.db, reger: this.reger, rsr: stored }) : undefined;
803
+ if (!tever) {
804
+ if (ilk !== Ilks.vcp) {
805
+ this.escrowOOEvent(serder, args.seqner ?? null, args.saider ?? null, args.wigers ?? []);
806
+ return escrow("outOfOrder", "TEL event arrived before registry inception.", serder, regk);
807
+ }
808
+ try {
809
+ const next = new Tever({
810
+ serder,
811
+ seqner: args.seqner ?? null,
812
+ saider: args.saider ?? null,
813
+ bigers: args.wigers ?? [],
814
+ db: this.db,
815
+ reger: this.reger,
816
+ regk,
817
+ local: this.local,
818
+ });
819
+ this.reger.states.pin(regk, next.state());
820
+ accepted = next;
821
+ return accept(serder, regk);
822
+ }
823
+ catch (error) {
824
+ // Constructor admission persists missing evidence in its real protocol escrow.
825
+ if (error instanceof PendingTelInception)
826
+ return error.decision;
827
+ throw error;
828
+ }
811
829
  }
812
- }
813
- const tever = this.tevers.get(regk);
814
- if (!tever) {
815
- if (ilk !== Ilks.vcp) {
816
- this.escrowOOEvent(serder, args.seqner ?? null, args.saider ?? null);
817
- return escrow("outOfOrder", "TEL event arrived before registry inception.", serder, regk);
830
+ if (ilk === Ilks.vcp)
831
+ return this.processAcceptedDuplicate(args, regk);
832
+ const expected = ilk === Ilks.vrt ? tever.sn + 1 : (tever.vcSn(pre) ?? -1) + 1;
833
+ if (sn > expected) {
834
+ this.escrowOOEvent(serder, args.seqner ?? null, args.saider ?? null, args.wigers ?? []);
835
+ return escrow("outOfOrder", `TEL event sn=${sn} expected=${expected}.`, serder, regk);
818
836
  }
819
- const next = new Tever({
820
- serder,
821
- seqner: args.seqner ?? null,
822
- saider: args.saider ?? null,
823
- bigers: args.wigers ?? [],
824
- db: this.db,
825
- reger: this.reger,
826
- regk,
827
- local: this.local,
828
- cues: this.cues,
837
+ if (sn < expected)
838
+ return this.processAcceptedDuplicate(args, regk);
839
+ const result = tever.update({ ...args, local: this.local }, (error) => {
840
+ publicationFailure = { error };
829
841
  });
830
- this.cacheTever(regk, next);
831
- return accept(serder, regk);
832
- }
833
- if (ilk === Ilks.vcp) {
834
- return duplicate("Registry inception already accepted.", serder, regk);
835
- }
836
- const expected = ilk === Ilks.vrt ? tever.sn + 1 : (tever.vcSn(pre) ?? -1) + 1;
837
- if (sn > expected) {
838
- this.escrowOOEvent(serder, args.seqner ?? null, args.saider ?? null);
839
- return escrow("outOfOrder", `TEL event sn=${sn} expected=${expected}.`, serder, regk);
840
- }
841
- if (sn < expected) {
842
- return duplicate(`TEL event sn=${sn} older than expected=${expected}.`, serder, regk);
843
- }
844
- const decision = tever.update(args, (error) => {
845
- cueFailure = { error };
842
+ if (result.kind === "escrow" && result.escrow === "outOfOrder") {
843
+ this.escrowOOEvent(serder, args.seqner ?? null, args.saider ?? null, args.wigers ?? []);
844
+ }
845
+ if (result.kind === "accept" && ilk === Ilks.vrt) {
846
+ this.reger.states.pin(regk, tever.state());
847
+ accepted = tever;
848
+ }
849
+ return result;
846
850
  });
847
- if (decision.kind === "accept" && ilk === Ilks.vrt) {
848
- this.cacheTever(regk, tever);
849
- }
850
- return decision;
851
851
  }
852
852
  catch (error) {
853
- if (error instanceof DeckFullError || (cueFailure && cueFailure.error === error))
853
+ if (publicationFailure && publicationFailure.error === error)
854
+ throw error;
855
+ if (!(error instanceof ValidationError) && !(error instanceof ParserError))
854
856
  throw error;
855
857
  return reject(error instanceof Error ? error.message : String(error), args.serder);
856
858
  }
859
+ if (accepted)
860
+ this.tevers.set(accepted.regk, accepted);
861
+ if (decision.kind === "accept" && (decision.ilk === Ilks.rev || decision.ilk === Ilks.brv)) {
862
+ // Keep publication outside semantic error conversion and after the writer has committed.
863
+ this.cues.push({ kin: "revoked", serder: args.serder });
864
+ }
865
+ return decision;
857
866
  }
858
- /** Serve legacy TEL replay or an ordered TSN pair with independent receiver verification.
867
+ /** Add valid late backer receipts to an exact accepted event without reapplying its business state. */
868
+ processAcceptedDuplicate(args, regk) {
869
+ const { serder } = args;
870
+ const pre = okPre(serder), sn = okSn(serder), said = okSaid(serder);
871
+ if (this.reger.tels.getOn(pre, sn)?.qb64 !== said) {
872
+ return reject("TEL event conflicts with the accepted coordinate.", serder, regk);
873
+ }
874
+ if (args.wigers?.length && serder.ilk !== Ilks.iss && serder.ilk !== Ilks.rev) {
875
+ const seal = serder.ilk === Ilks.vcp || serder.ilk === Ilks.vrt
876
+ ? { i: pre, s: serder.snh, d: said }
877
+ : okKed(serder).ra;
878
+ const state = resolveBackerState(this.reger, regk, seal);
879
+ if (state.kind !== "backers") {
880
+ throw new DatabaseOperationError("Accepted TEL event has no accepted backer cohort.");
881
+ }
882
+ const key = dgKey(pre, said);
883
+ const verified = Kever.verifyIndexedSignatures(serder.raw, [...this.reger.tibs.get(key), ...args.wigers], state.baks.map((bak) => new Verfer({ qb64: bak }))).sigers;
884
+ this.reger.tibs.pin(key, verified);
885
+ }
886
+ return duplicate("TEL event already accepted.", serder, regk);
887
+ }
888
+ /**
889
+ * Serve legacy TEL replay or an ordered TSN pair with independent receiver verification.
859
890
  * Actual 714 leaves query signature validation TODO. Requester material identifies the destination;
860
- * optional KRAM and sender policy remain separate. Replay output uses the reference's default v2 genus.
891
+ * optional KRAM and sender policy remain separate. Replay uses the parsed request genus;
892
+ * direct callers default to the body-declared context and may select another genus explicitly.
893
+ *
894
+ * @param args TEL query body, authenticated source and nontransferable cigar evidence.
861
895
  */
862
- processQuery({ serder, source, cigars }) {
896
+ processQuery({ serder, source, cigars, gvrsn }) {
863
897
  if (serder.route === "tsn") {
864
898
  const result = prepareTsnQuery({ serder, source, cigars }, this.tevers);
865
899
  if (result.kind === "drop")
@@ -874,26 +908,336 @@ export class Tevery {
874
908
  if (!dest)
875
909
  return { kind: "drop", reason: "missingAuthentication" };
876
910
  const query = serder.ked?.q;
877
- if (!query || typeof query.ri !== "string" || !query.ri || typeof query.src !== "string" || !query.src
878
- || typeof query.i !== "string")
911
+ if (!query || typeof query !== "object" || Array.isArray(query)
912
+ || !("ri" in query) || typeof query.ri !== "string" || !query.ri
913
+ || !("src" in query) || typeof query.src !== "string" || !query.src
914
+ || !("i" in query) || typeof query.i !== "string")
879
915
  return { kind: "drop", reason: "invalidQuery" };
880
- const management = this.reger.replay(query.ri, { gvrsn: Vrsn_2_0, genusify: true });
881
- const credential = query.i ? this.reger.replay(query.i, { gvrsn: Vrsn_2_0, genusify: true }) : null;
882
- const messages = CapturedTelReplay.pair(management, credential);
883
- if (!messages)
916
+ const selected = gvrsn ?? serder.gvrsn ?? serder.pvrsn;
917
+ const settings = { gvrsn: selected, genusify: selected.major >= 2 };
918
+ const management = this.reger.replay(query.ri, settings);
919
+ const credential = query.i ? this.reger.replay(query.i, settings) : null;
920
+ if (!management && !credential)
884
921
  return;
922
+ const messages = {
923
+ *[Symbol.iterator]() {
924
+ if (management)
925
+ yield* management;
926
+ if (credential)
927
+ yield* credential;
928
+ },
929
+ };
885
930
  this.cues.push({
886
931
  kin: "replay",
887
932
  querySaid: serder.said ?? undefined,
888
933
  src: query.src,
889
934
  dest,
890
- messages,
935
+ msgs: messages,
936
+ });
937
+ }
938
+ /** Register both semantic TSN routes against this processor, as KERIpy Tevery does. */
939
+ registerReplyRoutes(router) {
940
+ this.replyVerifier();
941
+ router.addRoute("/tsn/registry/{aid}", this, "RegistryTxnState");
942
+ router.addRoute("/tsn/credential/{aid}", this, "CredentialTxnState");
943
+ }
944
+ /** TEL-only processors have no implicit reply verifier or TSN capability. */
945
+ replyVerifier() {
946
+ if (!this.rvy)
947
+ throw new TypeError("Transaction-state notice processing requires Revery.");
948
+ return this.rvy;
949
+ }
950
+ /** Admit a registry TSN using independent attester proof, accepted trust and current TEL correspondence. */
951
+ processReplyRegistryTxnState({ serder, diger, route, aid, cigars = [], tsgs = [] }) {
952
+ const rvy = this.replyVerifier();
953
+ const record = registryRecord(serder.ked?.a);
954
+ const stamp = serder.ked?.dt;
955
+ if (!record || !qualifiedPrefix(aid) || typeof stamp !== "string" || timestampMicros(stamp) === null
956
+ || route !== `/tsn/registry/${aid}`
957
+ || serder.said !== diger.qb64 || !serder.verify()) {
958
+ return unverifiedReplyDecision("Invalid registry transaction-state notice.");
959
+ }
960
+ const regk = record.i, issuer = record.ii, sn = Number.parseInt(record.s, 16);
961
+ const previous = this.reger.txnsb.current([regk, aid]);
962
+ const disposeIncoming = () => {
963
+ if (previous?.qb64 !== diger.qb64)
964
+ rvy.removeReply(diger);
965
+ };
966
+ const reject = (reason) => {
967
+ disposeIncoming();
968
+ return unverifiedReplyDecision(reason);
969
+ };
970
+ const saved = this.reger.states.get(regk);
971
+ const stored = saved ? registryRecord(saved.asDict()) : null;
972
+ if (saved && !stored)
973
+ throw new Error("Corrupt stored registry state.");
974
+ if (stored && (stored.ii !== issuer || BigInt(`0x${stored.s}`) > BigInt(sn))) {
975
+ return reject("Mismatched issuer or stale registry state.");
976
+ }
977
+ const kever = this.db.getKever(issuer, { refresh: true });
978
+ let queryCues = [];
979
+ const escrow = (typ, query, proof) => {
980
+ const isNew = !this.reger.txnsb.hasStateNotice(typ, regk, aid, diger);
981
+ const cues = !isNew || !query
982
+ ? []
983
+ : typ === "registry-mae"
984
+ ? [{ kin: "query", pre: issuer, src: aid, route: "logs", q: {} }]
985
+ : [{ kin: "query", pre: issuer, src: aid, route: "tels", q: { ri: regk, i: "" } }];
986
+ if (proof)
987
+ rvy.writeReply(proof);
988
+ const added = this.reger.txnsb.escrowStateNotice({
989
+ typ,
990
+ pre: regk,
991
+ aid,
992
+ serder,
993
+ diger,
994
+ dater: new Dater({ qb64: encodeDateTimeToDater(stamp) }),
995
+ cigars,
996
+ tsgs,
997
+ });
998
+ if (added !== isNew)
999
+ throw new Error("Registry escrow membership changed before publication");
1000
+ // Broker now owns copied pending proof; retain prior accepted BADA evidence in Baser.
1001
+ disposeIncoming();
1002
+ if (queryCues.length)
1003
+ rvy.cues.extend(queryCues);
1004
+ if (cues.length)
1005
+ rvy.cues.extend(cues);
1006
+ return {
1007
+ kind: "unverified",
1008
+ reason: "dependencyPending",
1009
+ family: typ,
1010
+ message: "Registry state dependency unavailable.",
1011
+ };
1012
+ };
1013
+ if (!kever)
1014
+ return escrow("registry-mae", true);
1015
+ const watchers = new Set();
1016
+ for (const [, habitat] of this.db.getHabItemIter()) {
1017
+ for (const watcher of habitat.watchers ?? [])
1018
+ watchers.add(watcher);
1019
+ }
1020
+ const trusted = aid === issuer || watchers.has(aid)
1021
+ || (!!stored && (stored.c.includes(TraitDex.NoBackers) ? kever.wits : stored.b).includes(aid));
1022
+ if (!trusted && stored)
1023
+ return reject("Untrusted registry state attester.");
1024
+ if (previous && (!this.db.sdts.get([previous.qb64]) || !this.db.rpys.get([previous.qb64]))) {
1025
+ throw new Error("Corrupt prior registry reply evidence.");
1026
+ }
1027
+ const proof = rvy.decideReply({
1028
+ serder,
1029
+ saider: diger,
1030
+ route,
1031
+ aid,
1032
+ cigars,
1033
+ tsgs,
1034
+ osaider: previous?.qb64 === diger.qb64 ? null : previous,
1035
+ retainPrevious: true,
1036
+ externalEscrow: true,
1037
+ });
1038
+ queryCues = proof.cues;
1039
+ if (proof.kind !== "accept") {
1040
+ if (proof.reason === "proofPending")
1041
+ return escrow("registry-mae", false, proof);
1042
+ rvy.writeReply(proof);
1043
+ if (queryCues.length)
1044
+ rvy.cues.extend(queryCues);
1045
+ return reject("Unverified registry state attester.");
1046
+ }
1047
+ const accepted = this.reger.tels.getOn(regk, sn);
1048
+ if (!accepted)
1049
+ return escrow("registry-ooo", true, proof);
1050
+ const raw = this.reger.tvts.get(dgKey(regk, accepted.qb64));
1051
+ if (!raw || !stored || stored.d !== accepted.qb64)
1052
+ throw new Error("Corrupt accepted registry TEL state.");
1053
+ const event = new SerderKERI({ raw });
1054
+ if (!event.verify() || event.said !== accepted.qb64 || event.pre !== regk || event.sn !== sn) {
1055
+ throw new Error("Corrupt accepted registry TEL body.");
1056
+ }
1057
+ if (!trusted || accepted.qb64 !== record.d)
1058
+ return reject("Registry state does not match accepted TEL.");
1059
+ // Receiver-generated record time is descriptive; configuration and state fields must agree.
1060
+ const fields = ["vn", "i", "s", "d", "ii", "et", "bt", "b", "c"];
1061
+ if (fields.some((key) => JSON.stringify(record[key]) !== JSON.stringify(stored[key]))) {
1062
+ return reject("Registry state metadata mismatch.");
1063
+ }
1064
+ const dater = new Dater({ qb64: encodeDateTimeToDater(stamp) });
1065
+ const cues = [{ kin: "txnStateSaved", record }];
1066
+ rvy.writeReply(proof);
1067
+ this.reger.txnsb.updateReply(aid, serder, diger, dater);
1068
+ if (previous?.qb64 !== diger.qb64)
1069
+ rvy.removeReply(previous);
1070
+ if (queryCues.length)
1071
+ rvy.cues.extend(queryCues);
1072
+ if (cues.length)
1073
+ rvy.cues.extend(cues);
1074
+ return acceptReplyDecision();
1075
+ }
1076
+ /** Admit a credential TSN against its own proof, registry dependency and current TEL/anchor commitments. */
1077
+ processReplyCredentialTxnState({ serder, diger, route, aid, cigars = [], tsgs = [] }) {
1078
+ const rvy = this.replyVerifier();
1079
+ const record = credentialRecord(serder.ked?.a);
1080
+ const stamp = serder.ked?.dt;
1081
+ if (!record || !qualifiedPrefix(aid) || typeof stamp !== "string" || timestampMicros(stamp) === null
1082
+ || route !== `/tsn/credential/${aid}` || serder.said !== diger.qb64 || !serder.verify())
1083
+ return unverifiedReplyDecision("Invalid credential transaction-state notice.");
1084
+ const vci = record.i, regk = record.ri, sn = Number.parseInt(record.s, 16);
1085
+ const previous = this.reger.txnsb.current([vci, aid]);
1086
+ const disposeIncoming = () => {
1087
+ if (previous?.qb64 !== diger.qb64)
1088
+ rvy.removeReply(diger);
1089
+ };
1090
+ const reject = (reason) => {
1091
+ disposeIncoming();
1092
+ return unverifiedReplyDecision(reason);
1093
+ };
1094
+ const saved = this.reger.states.get(regk);
1095
+ const stored = saved ? registryRecord(saved.asDict()) : null;
1096
+ if (saved && !stored)
1097
+ throw new Error("Corrupt stored registry state.");
1098
+ const issuer = stored?.ii ?? aid;
1099
+ let queryCues = [];
1100
+ const escrow = (typ, query, proof) => {
1101
+ const isNew = !this.reger.txnsb.hasStateNotice(typ, vci, aid, diger);
1102
+ const cues = !isNew || !query
1103
+ ? []
1104
+ : typ === "credential-mae"
1105
+ ? [{ kin: "query", pre: issuer, src: aid, route: "logs", q: {} }]
1106
+ : [{
1107
+ kin: "query",
1108
+ pre: issuer,
1109
+ src: aid,
1110
+ route: "tels",
1111
+ q: { ri: regk, i: typ === "credential-mre" ? "" : vci },
1112
+ }];
1113
+ if (proof)
1114
+ rvy.writeReply(proof);
1115
+ const added = this.reger.txnsb.escrowStateNotice({
1116
+ typ,
1117
+ pre: vci,
1118
+ aid,
1119
+ serder,
1120
+ diger,
1121
+ dater: new Dater({ qb64: encodeDateTimeToDater(stamp) }),
1122
+ cigars,
1123
+ tsgs,
1124
+ });
1125
+ if (added !== isNew)
1126
+ throw new Error("Credential escrow membership changed before publication");
1127
+ disposeIncoming();
1128
+ if (queryCues.length)
1129
+ rvy.cues.extend(queryCues);
1130
+ if (cues.length)
1131
+ rvy.cues.extend(cues);
1132
+ return {
1133
+ kind: "unverified",
1134
+ reason: "dependencyPending",
1135
+ family: typ,
1136
+ message: "Credential state dependency unavailable.",
1137
+ };
1138
+ };
1139
+ const regsn = record.ra.s === undefined ? 0 : Number.parseInt(record.ra.s, 16);
1140
+ if (!stored || Number.parseInt(stored.s, 16) < regsn)
1141
+ return escrow("credential-mre", true);
1142
+ const tever = new Tever({ db: this.db, reger: this.reger, rsr: stored });
1143
+ if (!tever.serder.verify() || tever.serder.said !== stored.d
1144
+ || this.reger.tels.getOn(regk, tever.sn)?.qb64 !== stored.d)
1145
+ throw new Error("Corrupt accepted registry TEL state.");
1146
+ const kever = this.db.getKever(issuer, { refresh: true });
1147
+ if (!kever)
1148
+ return escrow("credential-mae", true);
1149
+ const watchers = new Set();
1150
+ for (const [, habitat] of this.db.getHabItemIter()) {
1151
+ for (const watcher of habitat.watchers ?? [])
1152
+ watchers.add(watcher);
1153
+ }
1154
+ if (aid !== issuer && !watchers.has(aid)
1155
+ && !(stored.c.includes(TraitDex.NoBackers) ? kever.wits : stored.b).includes(aid)) {
1156
+ return reject("Untrusted credential state attester.");
1157
+ }
1158
+ if (previous && (!this.db.sdts.get([previous.qb64]) || !this.db.rpys.get([previous.qb64]))) {
1159
+ throw new Error("Corrupt prior credential reply evidence.");
1160
+ }
1161
+ const proof = rvy.decideReply({
1162
+ serder,
1163
+ saider: diger,
1164
+ route,
1165
+ aid,
1166
+ cigars,
1167
+ tsgs,
1168
+ osaider: previous?.qb64 === diger.qb64 ? null : previous,
1169
+ retainPrevious: true,
1170
+ externalEscrow: true,
891
1171
  });
1172
+ queryCues = proof.cues;
1173
+ if (proof.kind !== "accept") {
1174
+ if (proof.reason === "proofPending")
1175
+ return escrow("credential-mae", false, proof);
1176
+ rvy.writeReply(proof);
1177
+ if (queryCues.length)
1178
+ rvy.cues.extend(queryCues);
1179
+ return reject("Unverified credential state attester.");
1180
+ }
1181
+ const accepted = this.reger.tels.getOn(vci, sn);
1182
+ if (!accepted)
1183
+ return escrow("credential-ooo", true, proof);
1184
+ const current = tever.vcState(vci);
1185
+ const raw = this.reger.tvts.get(dgKey(vci, accepted.qb64));
1186
+ if (!raw || !current)
1187
+ throw new Error("Corrupt accepted credential TEL state.");
1188
+ const event = new SerderKERI({ raw });
1189
+ if (!event.verify() || event.pre !== vci || event.sn !== sn || event.said !== accepted.qb64) {
1190
+ throw new Error("Corrupt accepted credential TEL body.");
1191
+ }
1192
+ if (Tevery.registryKey(event) !== regk)
1193
+ return reject("Credential belongs to a different registry.");
1194
+ const fields = ["vn", "i", "s", "d", "ri", "dt", "et"];
1195
+ if (accepted.qb64 !== record.d || fields.some((key) => JSON.stringify(record[key]) !== JSON.stringify(current[key]))
1196
+ || ["s", "d"].some((key) => record.a[key] !== current.a[key])
1197
+ || ["i", "s", "d"].some((key) => record.ra[key] !== current.ra[key]))
1198
+ return reject("Credential state does not match current accepted TEL and anchors.");
1199
+ const cues = [{ kin: "txnStateSaved", record }];
1200
+ rvy.writeReply(proof);
1201
+ this.reger.txnsb.updateReply(aid, serder, diger, new Dater({ qb64: encodeDateTimeToDater(stamp) }));
1202
+ if (previous?.qb64 !== diger.qb64)
1203
+ rvy.removeReply(previous);
1204
+ if (queryCues.length)
1205
+ rvy.cues.extend(queryCues);
1206
+ if (cues.length)
1207
+ rvy.cues.extend(cues);
1208
+ return acceptReplyDecision();
892
1209
  }
1210
+ /**
1211
+ * Retry TEL dependencies, then each complete captured TSN family horizon.
1212
+ * Pages bound materialization; new rows beyond the captured horizon wait for a
1213
+ * later sweep. The synchronous turn can outlast an asynchronous caller deadline.
1214
+ */
893
1215
  processEscrows() {
894
1216
  this.processEscrowAnchorless();
895
1217
  this.processEscrowOutOfOrders();
1218
+ this.retryDependencyEscrow("partialWitness", this.reger.twes);
1219
+ if (!this.rvy)
1220
+ return;
1221
+ for (const typ of ["registry-mae", "registry-ooo", "credential-mre", "credential-mae", "credential-ooo"]) {
1222
+ let done = false;
1223
+ while (!done) {
1224
+ const page = this.reger.txnsb.retryStateNotices(typ, (args) => {
1225
+ const decision = typ.startsWith("registry-")
1226
+ ? this.processReplyRegistryTxnState(args)
1227
+ : this.processReplyCredentialTxnState(args);
1228
+ if (decision.kind === "accept")
1229
+ return acceptEscrow();
1230
+ if (decision.reason === "dependencyPending") {
1231
+ // The new family owns the retained evidence; removing this index is not rejection.
1232
+ return decision.family === typ ? keepEscrow("recoverableError") : acceptEscrow();
1233
+ }
1234
+ return dropEscrow("processingError", decision.message);
1235
+ });
1236
+ done = page.done;
1237
+ }
1238
+ }
896
1239
  }
1240
+ /** Retry out-of-order TEL events; report terminal removal after its index write succeeds. */
897
1241
  processEscrowOutOfOrders() {
898
1242
  const entries = [...this.reger.oots.getAllItemIter()];
899
1243
  for (const [keys, sn, dig] of entries) {
@@ -902,7 +1246,15 @@ export class Tevery {
902
1246
  const raw = this.reger.tvts.get(key);
903
1247
  const couple = this.reger.ancs.get(key);
904
1248
  if (raw === null || couple === null) {
905
- this.reger.oots.remOn(pre, sn, dig);
1249
+ if (this.reger.oots.remOn(pre, sn, dig)) {
1250
+ consoleLogger.warn("Tevery ejected out-of-order TEL event from escrow", {
1251
+ family: "outOfOrder",
1252
+ pre,
1253
+ sn,
1254
+ said: dig,
1255
+ reason: raw === null ? "missingEvent" : "missingSourceSeal",
1256
+ });
1257
+ }
906
1258
  continue;
907
1259
  }
908
1260
  const [seqner, saider] = couple;
@@ -915,11 +1267,25 @@ export class Tevery {
915
1267
  if (decision.kind === "escrow" && decision.escrow === "outOfOrder") {
916
1268
  continue;
917
1269
  }
918
- this.reger.oots.remOn(pre, sn, dig);
1270
+ const removed = this.reger.oots.remOn(pre, sn, dig);
1271
+ if (removed && decision.kind === "reject") {
1272
+ consoleLogger.warn("Tevery ejected out-of-order TEL event from escrow", {
1273
+ family: "outOfOrder",
1274
+ pre,
1275
+ sn,
1276
+ said: dig,
1277
+ reason: decision.reason,
1278
+ });
1279
+ }
919
1280
  }
920
1281
  }
1282
+ /** Retry anchorless TEL events; missing source seals remain pending rather than being ejected. */
921
1283
  processEscrowAnchorless() {
922
- const entries = [...this.reger.taes.getAllItemIter()];
1284
+ this.retryDependencyEscrow("anchorless", this.reger.taes);
1285
+ }
1286
+ /** Retry each retained body with its accumulated proofs; commit before removing the old family index. */
1287
+ retryDependencyEscrow(family, table) {
1288
+ const entries = [...table.getAllItemIter()];
923
1289
  for (const [keys, sn, dig] of entries) {
924
1290
  const pre = keys[0] ?? "";
925
1291
  const key = dgKey(pre, dig);
@@ -927,7 +1293,15 @@ export class Tevery {
927
1293
  const couple = this.reger.ancs.get(key);
928
1294
  if (raw === null || couple === null) {
929
1295
  if (raw === null) {
930
- this.reger.taes.remOn(pre, sn, dig);
1296
+ if (table.remOn(pre, sn, dig)) {
1297
+ consoleLogger.warn("Tevery ejected TEL dependency escrow", {
1298
+ family,
1299
+ pre,
1300
+ sn,
1301
+ said: dig,
1302
+ reason: "missingEvent",
1303
+ });
1304
+ }
931
1305
  }
932
1306
  continue;
933
1307
  }
@@ -938,10 +1312,19 @@ export class Tevery {
938
1312
  saider,
939
1313
  wigers: this.reger.tibs.get(key),
940
1314
  });
941
- if (decision.kind === "escrow" && decision.escrow === "anchorless") {
1315
+ if (decision.kind === "escrow" && decision.escrow === family) {
942
1316
  continue;
943
1317
  }
944
- this.reger.taes.remOn(pre, sn, dig);
1318
+ const removed = table.remOn(pre, sn, dig);
1319
+ if (removed && decision.kind === "reject") {
1320
+ consoleLogger.warn("Tevery ejected TEL dependency escrow", {
1321
+ family,
1322
+ pre,
1323
+ sn,
1324
+ said: dig,
1325
+ reason: decision.reason,
1326
+ });
1327
+ }
945
1328
  }
946
1329
  }
947
1330
  static registryKey(serder) {
@@ -960,7 +1343,7 @@ export class Tevery {
960
1343
  case Ilks.bis:
961
1344
  case Ilks.brv: {
962
1345
  const ra = sealRecord(okKed(serder).ra);
963
- const regk = typeof ra?.i === "string" ? ra.i : null;
1346
+ const regk = ra && "i" in ra && typeof ra.i === "string" ? ra.i : null;
964
1347
  if (!regk) {
965
1348
  throw new ValidationError("Backer TEL event missing ra.i.");
966
1349
  }
@@ -968,15 +1351,14 @@ export class Tevery {
968
1351
  }
969
1352
  }
970
1353
  }
971
- cacheTever(regk, tever) {
972
- this.tevers.set(regk, tever);
973
- this.reger.states.pin(regk, tever.state());
974
- }
975
1354
  /** Preserve the original source seal while waiting for earlier TEL events. */
976
- escrowOOEvent(serder, seqner, saider) {
1355
+ escrowOOEvent(serder, seqner, saider, bigers = []) {
977
1356
  const pre = okPre(serder);
978
1357
  const said = okSaid(serder);
979
1358
  const key = dgKey(pre, said);
1359
+ // The historical roster may be unavailable. Retain candidates, then verify
1360
+ // their union in valAnchorBigs before any threshold or acceptance decision.
1361
+ this.reger.tibs.put(key, bigers);
980
1362
  this.reger.tvts.put(key, serder.raw);
981
1363
  if (seqner && saider) {
982
1364
  this.reger.ancs.put(key, [seqner, new Diger({ qb64: saider.qb64 })]);