keri-ts 2.0.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/README.md +30 -2
  2. package/esm/keri/npm/src/acdc/authoring.js +195 -0
  3. package/esm/keri/npm/src/acdc/chaining.js +223 -89
  4. package/esm/keri/npm/src/acdc/custody.js +164 -0
  5. package/esm/keri/npm/src/acdc/dhking.js +244 -32
  6. package/esm/keri/npm/src/acdc/observing.js +2 -2
  7. package/esm/keri/npm/src/acdc/regbasing.js +30 -29
  8. package/esm/keri/npm/src/acdc/regengine.js +4 -6
  9. package/esm/keri/npm/src/acdc/registering.js +13 -10
  10. package/esm/keri/npm/src/acdc/registraring.js +4 -9
  11. package/esm/keri/npm/src/acdc/salting.js +143 -26
  12. package/esm/keri/npm/src/acdc/scheming.js +93 -54
  13. package/esm/keri/npm/src/acdc/unblinding.js +120 -99
  14. package/esm/keri/npm/src/app/bootstrap/authenticating.js +4 -6
  15. package/esm/keri/npm/src/app/bootstrap/oobi-resolving.js +41 -0
  16. package/esm/keri/npm/src/app/bootstrap/oobiery.js +5 -7
  17. package/esm/keri/npm/src/app/credentials/credential-revoking.js +1 -0
  18. package/esm/keri/npm/src/app/credentials/credential-workflows.js +2 -0
  19. package/esm/keri/npm/src/app/credentials/registry-settling.js +44 -0
  20. package/esm/keri/npm/src/app/credentials/root-replicating.js +131 -0
  21. package/esm/keri/npm/src/app/credentials/root-replicator.js +198 -0
  22. package/esm/keri/npm/src/app/credentials/tel-completion.js +36 -0
  23. package/esm/keri/npm/src/app/credentials/verifying.js +12 -3
  24. package/esm/keri/npm/src/app/delivery/forwarding.js +64 -9
  25. package/esm/keri/npm/src/app/exchanges/exchanging.js +24 -15
  26. package/esm/keri/npm/src/app/identity/challenging.js +50 -0
  27. package/esm/keri/npm/src/app/identity/configing.js +17 -43
  28. package/esm/keri/npm/src/app/identity/delegating.js +77 -77
  29. package/esm/keri/npm/src/app/identity/delegation-approval.js +333 -0
  30. package/esm/keri/npm/src/app/identity/event-completion.js +154 -0
  31. package/esm/keri/npm/src/app/identity/habbing.js +183 -41
  32. package/esm/keri/npm/src/app/identity/keeping.js +78 -5
  33. package/esm/keri/npm/src/app/identity/lmdb-habery.js +12 -0
  34. package/esm/keri/npm/src/app/ipex/group-ipex.js +327 -0
  35. package/esm/keri/npm/src/app/ipex/group-issuance.js +902 -0
  36. package/esm/keri/npm/src/app/ipex/ipex-admitting.js +120 -0
  37. package/esm/keri/npm/src/app/ipex/ipex-conversation.js +197 -0
  38. package/esm/keri/npm/src/app/ipex/ipex-discloser.js +591 -0
  39. package/esm/keri/npm/src/app/ipex/ipex-granting.js +93 -0
  40. package/esm/keri/npm/src/app/ipex/ipex-graph.js +7 -70
  41. package/esm/keri/npm/src/app/ipex/ipex-grouping.js +42 -16
  42. package/esm/keri/npm/src/app/ipex/ipex-v2.js +21 -5
  43. package/esm/keri/npm/src/app/ipex/ipexing.js +1 -1
  44. package/esm/keri/npm/src/app/ipex/issuance.js +888 -0
  45. package/esm/keri/npm/src/app/ipex/pending-presentations.js +46 -0
  46. package/esm/keri/npm/src/app/ipex/presentation-files.js +200 -0
  47. package/esm/keri/npm/src/app/ipex/presenting.js +401 -0
  48. package/esm/keri/npm/src/app/ipex/receive-issuance.js +86 -0
  49. package/esm/keri/npm/src/app/ipex/unblinding-workflow.js +660 -0
  50. package/esm/keri/npm/src/app/mailbox/ipex-arrival.js +103 -0
  51. package/esm/keri/npm/src/app/mailbox/kel-publisher.js +322 -0
  52. package/esm/keri/npm/src/app/mailbox/kel-publishing.js +65 -0
  53. package/esm/keri/npm/src/app/mailbox/kel-submission.js +24 -0
  54. package/esm/keri/npm/src/app/mailbox/mailbox-admin.js +208 -0
  55. package/esm/keri/npm/src/app/mailbox/mailbox-poller.js +212 -47
  56. package/esm/keri/npm/src/app/mailbox/mailboxing.js +15 -14
  57. package/esm/keri/npm/src/app/multisig/counseling.js +482 -0
  58. package/esm/keri/npm/src/app/multisig/group-members.js +32 -0
  59. package/esm/keri/npm/src/app/multisig/grouping.js +4 -3
  60. package/esm/keri/npm/src/app/multisig/multisig-workflows.js +101 -141
  61. package/esm/keri/npm/src/app/multisig/proposals.js +281 -0
  62. package/esm/keri/npm/src/app/multisig/proposing.js +122 -0
  63. package/esm/keri/npm/src/app/notifications/notifying.js +5 -9
  64. package/esm/keri/npm/src/app/notifications/signaling.js +5 -5
  65. package/esm/keri/npm/src/app/protocol/parsering.js +26 -1
  66. package/esm/keri/npm/src/app/protocol/protocol-processing.js +44 -6
  67. package/esm/keri/npm/src/app/queries/query-workflows.js +98 -0
  68. package/esm/keri/npm/src/app/queries/witness-inquisitor.js +2 -2
  69. package/esm/keri/npm/src/app/runtime/agent-runtime.js +113 -65
  70. package/esm/keri/npm/src/app/runtime/cue-runtime.js +3 -6
  71. package/esm/keri/npm/src/app/runtime/delivery-outbox.js +87 -0
  72. package/esm/keri/npm/src/app/runtime/doing.js +17 -0
  73. package/esm/keri/npm/src/app/runtime/ipex-auxiliaries.js +207 -0
  74. package/esm/keri/npm/src/app/runtime/operation-owners.js +151 -0
  75. package/esm/keri/npm/src/app/runtime/retry-backoff.js +93 -0
  76. package/esm/keri/npm/src/app/runtime/workflow-contract.js +80 -0
  77. package/esm/keri/npm/src/app/transport/byte-source.js +6 -42
  78. package/esm/keri/npm/src/app/transport/cesr-egress.js +77 -13
  79. package/esm/keri/npm/src/app/transport/file-bytes.js +41 -0
  80. package/esm/keri/npm/src/app/transport/http-client.js +25 -6
  81. package/esm/keri/npm/src/app/transport/http-messenger.js +14 -9
  82. package/esm/keri/npm/src/app/transport/message-source.js +1 -1
  83. package/esm/keri/npm/src/app/transport/messengering.js +3 -4
  84. package/esm/keri/npm/src/app/transport/node-http-client.js +21 -0
  85. package/esm/keri/npm/src/app/transport/tcp-dialer.js +14 -0
  86. package/esm/keri/npm/src/app/witness/http-endpoints.js +4 -4
  87. package/esm/keri/npm/src/app/witness/receipt-client.js +2 -2
  88. package/esm/keri/npm/src/cli/common/context.js +2 -2
  89. package/esm/keri/npm/src/cli/common/event-completion.js +49 -0
  90. package/esm/keri/npm/src/cli/common/existing.js +3 -5
  91. package/esm/keri/npm/src/cli/common/runtime-workers.js +23 -0
  92. package/esm/keri/npm/src/cli/credentials/ipex.js +159 -191
  93. package/esm/keri/npm/src/cli/credentials/vc.js +53 -72
  94. package/esm/keri/npm/src/cli/endpoints/did.js +12 -3
  95. package/esm/keri/npm/src/cli/endpoints/oobi-clean.js +4 -3
  96. package/esm/keri/npm/src/cli/endpoints/oobi.js +12 -15
  97. package/esm/keri/npm/src/cli/identity/challenge.js +9 -35
  98. package/esm/keri/npm/src/cli/identity/delegate.js +81 -258
  99. package/esm/keri/npm/src/cli/identity/incept.js +17 -34
  100. package/esm/keri/npm/src/cli/identity/init.js +4 -3
  101. package/esm/keri/npm/src/cli/identity/interact.js +7 -19
  102. package/esm/keri/npm/src/cli/identity/rotate.js +10 -38
  103. package/esm/keri/npm/src/cli/index.js +3 -1
  104. package/esm/keri/npm/src/cli/messaging/exchange.js +2 -2
  105. package/esm/keri/npm/src/cli/messaging/group-join.js +79 -0
  106. package/esm/keri/npm/src/cli/messaging/group-wait.js +88 -0
  107. package/esm/keri/npm/src/cli/messaging/multisig.js +187 -250
  108. package/esm/keri/npm/src/cli/messaging/root-copy-lines.js +31 -0
  109. package/esm/keri/npm/src/cli/tools/annotate.js +2 -1
  110. package/esm/keri/npm/src/cli/tools/benchmark.js +2 -1
  111. package/esm/keri/npm/src/cli/tools/db-dump.js +1 -4
  112. package/esm/keri/npm/src/core/bytes.js +9 -0
  113. package/esm/keri/npm/src/core/kel/delegation-ancestry.js +92 -0
  114. package/esm/keri/npm/src/core/kel/eventing.js +67 -12
  115. package/esm/keri/npm/src/core/kel/kever.js +11 -9
  116. package/esm/keri/npm/src/core/mailbox/kram-policy.js +41 -9
  117. package/esm/keri/npm/src/core/mailbox/kram-pruning.js +15 -22
  118. package/esm/keri/npm/src/core/mailbox/kram-staging.js +2 -2
  119. package/esm/keri/npm/src/core/mailbox/kraming.js +2 -0
  120. package/esm/keri/npm/src/core/records.js +23 -0
  121. package/esm/keri/npm/src/core/routing.js +15 -2
  122. package/esm/keri/npm/src/db/basing.js +183 -205
  123. package/esm/keri/npm/src/db/core/dber.js +1062 -0
  124. package/esm/keri/npm/src/db/core/index.js +4 -2
  125. package/esm/keri/npm/src/db/core/indexeddb-persistence.js +221 -0
  126. package/esm/keri/npm/src/db/core/lmdb-opener.js +30 -0
  127. package/esm/keri/npm/src/db/core/lmdber.js +199 -1067
  128. package/esm/keri/npm/src/db/core/memstore.js +532 -0
  129. package/esm/keri/npm/src/db/core/path-manager.js +109 -223
  130. package/esm/keri/npm/src/db/core/store-owner.js +104 -0
  131. package/esm/keri/npm/src/db/core/webdber.js +252 -0
  132. package/esm/keri/npm/src/db/escrowing.js +2 -2
  133. package/esm/keri/npm/src/db/exchange/exchange-nests.js +3 -2
  134. package/esm/keri/npm/src/db/indexeddb.js +98 -0
  135. package/esm/keri/npm/src/db/keeping.js +38 -123
  136. package/esm/keri/npm/src/db/koming.js +1 -1
  137. package/esm/keri/npm/src/db/lmdb-stores.js +68 -0
  138. package/esm/keri/npm/src/db/lmdb.js +6 -0
  139. package/esm/keri/npm/src/db/mailbox/mailboxing.js +12 -65
  140. package/esm/keri/npm/src/db/noting.js +11 -55
  141. package/esm/keri/npm/src/db/reger.js +43 -105
  142. package/esm/keri/npm/src/db/replay/witness-replay.js +2 -20
  143. package/esm/keri/npm/src/db/store-lock.js +150 -0
  144. package/esm/keri/npm/src/db/subing.js +1 -1
  145. package/esm/keri/npm/src/npm/db-indexeddb.browser.js +2 -0
  146. package/esm/keri/npm/src/npm/db-indexeddb.js +3 -0
  147. package/esm/keri/npm/src/npm/db-lmdb.js +3 -0
  148. package/esm/keri/npm/src/npm/db.browser.js +2 -0
  149. package/esm/keri/npm/src/npm/index.browser.js +9 -0
  150. package/esm/keri/npm/src/npm/runtime-node.js +3 -0
  151. package/esm/keri/npm/src/npm/runtime-web.browser.js +2 -0
  152. package/esm/keri/npm/src/npm/runtime-web.js +3 -0
  153. package/esm/keri/npm/src/npm/runtime.browser.js +2 -0
  154. package/esm/keri/npm/src/runtime/index.js +58 -12
  155. package/esm/keri/npm/src/runtime/node.js +14 -0
  156. package/esm/keri/npm/src/runtime/web/output-barrier.js +47 -0
  157. package/esm/keri/npm/src/runtime/web/persistent-storage.js +37 -0
  158. package/esm/keri/npm/src/runtime/web.js +10 -0
  159. package/esm/keri/npm/src/vdr/eventing.js +1 -1
  160. package/esm/keri/npm/src/vdr/tel-publication.js +19 -3
  161. package/esm/keri/npm/src/version.js +2 -2
  162. package/package.json +24 -4
  163. package/types/acdc/authoring.d.ts +54 -0
  164. package/types/acdc/authoring.d.ts.map +1 -0
  165. package/types/acdc/chaining.d.ts +56 -6
  166. package/types/acdc/chaining.d.ts.map +1 -1
  167. package/types/acdc/custody.d.ts +77 -0
  168. package/types/acdc/custody.d.ts.map +1 -0
  169. package/types/acdc/dhking.d.ts +94 -3
  170. package/types/acdc/dhking.d.ts.map +1 -1
  171. package/types/acdc/regbasing.d.ts +11 -6
  172. package/types/acdc/regbasing.d.ts.map +1 -1
  173. package/types/acdc/regengine.d.ts.map +1 -1
  174. package/types/acdc/registering.d.ts +8 -4
  175. package/types/acdc/registering.d.ts.map +1 -1
  176. package/types/acdc/registraring.d.ts.map +1 -1
  177. package/types/acdc/salting.d.ts +59 -7
  178. package/types/acdc/salting.d.ts.map +1 -1
  179. package/types/acdc/scheming.d.ts +2 -0
  180. package/types/acdc/scheming.d.ts.map +1 -1
  181. package/types/acdc/unblinding.d.ts +58 -19
  182. package/types/acdc/unblinding.d.ts.map +1 -1
  183. package/types/app/bootstrap/authenticating.d.ts +3 -1
  184. package/types/app/bootstrap/authenticating.d.ts.map +1 -1
  185. package/types/app/bootstrap/oobi-resolving.d.ts +92 -0
  186. package/types/app/bootstrap/oobi-resolving.d.ts.map +1 -0
  187. package/types/app/bootstrap/oobiery.d.ts +3 -1
  188. package/types/app/bootstrap/oobiery.d.ts.map +1 -1
  189. package/types/app/credentials/credential-revoking.d.ts +3 -0
  190. package/types/app/credentials/credential-revoking.d.ts.map +1 -1
  191. package/types/app/credentials/credential-workflows.d.ts +5 -0
  192. package/types/app/credentials/credential-workflows.d.ts.map +1 -1
  193. package/types/app/credentials/registry-settling.d.ts +85 -0
  194. package/types/app/credentials/registry-settling.d.ts.map +1 -0
  195. package/types/app/credentials/root-replicating.d.ts +97 -0
  196. package/types/app/credentials/root-replicating.d.ts.map +1 -0
  197. package/types/app/credentials/root-replicator.d.ts +105 -0
  198. package/types/app/credentials/root-replicator.d.ts.map +1 -0
  199. package/types/app/credentials/tel-completion.d.ts +55 -0
  200. package/types/app/credentials/tel-completion.d.ts.map +1 -0
  201. package/types/app/credentials/verifying.d.ts +2 -1
  202. package/types/app/credentials/verifying.d.ts.map +1 -1
  203. package/types/app/delivery/forwarding.d.ts +16 -0
  204. package/types/app/delivery/forwarding.d.ts.map +1 -1
  205. package/types/app/exchanges/exchanging.d.ts +2 -0
  206. package/types/app/exchanges/exchanging.d.ts.map +1 -1
  207. package/types/app/identity/challenging.d.ts +54 -0
  208. package/types/app/identity/challenging.d.ts.map +1 -1
  209. package/types/app/identity/configing.d.ts +7 -5
  210. package/types/app/identity/configing.d.ts.map +1 -1
  211. package/types/app/identity/delegating.d.ts +21 -4
  212. package/types/app/identity/delegating.d.ts.map +1 -1
  213. package/types/app/identity/delegation-approval.d.ts +228 -0
  214. package/types/app/identity/delegation-approval.d.ts.map +1 -0
  215. package/types/app/identity/event-completion.d.ts +151 -0
  216. package/types/app/identity/event-completion.d.ts.map +1 -0
  217. package/types/app/identity/habbing.d.ts +90 -7
  218. package/types/app/identity/habbing.d.ts.map +1 -1
  219. package/types/app/identity/keeping.d.ts +50 -4
  220. package/types/app/identity/keeping.d.ts.map +1 -1
  221. package/types/app/identity/lmdb-habery.d.ts +6 -0
  222. package/types/app/identity/lmdb-habery.d.ts.map +1 -0
  223. package/types/app/ipex/group-ipex.d.ts +247 -0
  224. package/types/app/ipex/group-ipex.d.ts.map +1 -0
  225. package/types/app/ipex/group-issuance.d.ts +281 -0
  226. package/types/app/ipex/group-issuance.d.ts.map +1 -0
  227. package/types/app/ipex/ipex-admitting.d.ts +47 -0
  228. package/types/app/ipex/ipex-admitting.d.ts.map +1 -0
  229. package/types/app/ipex/ipex-conversation.d.ts +195 -0
  230. package/types/app/ipex/ipex-conversation.d.ts.map +1 -0
  231. package/types/app/ipex/ipex-discloser.d.ts +156 -0
  232. package/types/app/ipex/ipex-discloser.d.ts.map +1 -0
  233. package/types/app/ipex/ipex-granting.d.ts +145 -0
  234. package/types/app/ipex/ipex-granting.d.ts.map +1 -0
  235. package/types/app/ipex/ipex-graph.d.ts +4 -4
  236. package/types/app/ipex/ipex-graph.d.ts.map +1 -1
  237. package/types/app/ipex/ipex-grouping.d.ts +18 -0
  238. package/types/app/ipex/ipex-grouping.d.ts.map +1 -1
  239. package/types/app/ipex/ipex-v2.d.ts +11 -2
  240. package/types/app/ipex/ipex-v2.d.ts.map +1 -1
  241. package/types/app/ipex/ipexing.d.ts +3 -0
  242. package/types/app/ipex/ipexing.d.ts.map +1 -1
  243. package/types/app/ipex/issuance.d.ts +443 -0
  244. package/types/app/ipex/issuance.d.ts.map +1 -0
  245. package/types/app/ipex/pending-presentations.d.ts +25 -0
  246. package/types/app/ipex/pending-presentations.d.ts.map +1 -0
  247. package/types/app/ipex/presentation-files.d.ts +47 -0
  248. package/types/app/ipex/presentation-files.d.ts.map +1 -0
  249. package/types/app/ipex/presenting.d.ts +298 -0
  250. package/types/app/ipex/presenting.d.ts.map +1 -0
  251. package/types/app/ipex/receive-issuance.d.ts +99 -0
  252. package/types/app/ipex/receive-issuance.d.ts.map +1 -0
  253. package/types/app/ipex/unblinding-workflow.d.ts +255 -0
  254. package/types/app/ipex/unblinding-workflow.d.ts.map +1 -0
  255. package/types/app/mailbox/ipex-arrival.d.ts +104 -0
  256. package/types/app/mailbox/ipex-arrival.d.ts.map +1 -0
  257. package/types/app/mailbox/kel-publisher.d.ts +141 -0
  258. package/types/app/mailbox/kel-publisher.d.ts.map +1 -0
  259. package/types/app/mailbox/kel-publishing.d.ts +70 -0
  260. package/types/app/mailbox/kel-publishing.d.ts.map +1 -0
  261. package/types/app/mailbox/kel-submission.d.ts +18 -0
  262. package/types/app/mailbox/kel-submission.d.ts.map +1 -0
  263. package/types/app/mailbox/mailbox-admin.d.ts +113 -0
  264. package/types/app/mailbox/mailbox-admin.d.ts.map +1 -0
  265. package/types/app/mailbox/mailbox-poller.d.ts +92 -3
  266. package/types/app/mailbox/mailbox-poller.d.ts.map +1 -1
  267. package/types/app/mailbox/mailboxing.d.ts +4 -1
  268. package/types/app/mailbox/mailboxing.d.ts.map +1 -1
  269. package/types/app/multisig/counseling.d.ts +196 -0
  270. package/types/app/multisig/counseling.d.ts.map +1 -0
  271. package/types/app/multisig/group-members.d.ts +20 -0
  272. package/types/app/multisig/group-members.d.ts.map +1 -1
  273. package/types/app/multisig/grouping.d.ts +39 -20
  274. package/types/app/multisig/grouping.d.ts.map +1 -1
  275. package/types/app/multisig/multisig-workflows.d.ts +93 -23
  276. package/types/app/multisig/multisig-workflows.d.ts.map +1 -1
  277. package/types/app/multisig/proposals.d.ts +129 -0
  278. package/types/app/multisig/proposals.d.ts.map +1 -0
  279. package/types/app/multisig/proposing.d.ts +125 -0
  280. package/types/app/multisig/proposing.d.ts.map +1 -0
  281. package/types/app/notifications/notifying.d.ts +1 -1
  282. package/types/app/notifications/notifying.d.ts.map +1 -1
  283. package/types/app/notifications/signaling.d.ts +3 -1
  284. package/types/app/notifications/signaling.d.ts.map +1 -1
  285. package/types/app/protocol/parsering.d.ts +16 -1
  286. package/types/app/protocol/parsering.d.ts.map +1 -1
  287. package/types/app/protocol/protocol-processing.d.ts +9 -1
  288. package/types/app/protocol/protocol-processing.d.ts.map +1 -1
  289. package/types/app/queries/query-workflows.d.ts +98 -0
  290. package/types/app/queries/query-workflows.d.ts.map +1 -0
  291. package/types/app/runtime/agent-runtime.d.ts +79 -25
  292. package/types/app/runtime/agent-runtime.d.ts.map +1 -1
  293. package/types/app/runtime/cue-runtime.d.ts +2 -1
  294. package/types/app/runtime/cue-runtime.d.ts.map +1 -1
  295. package/types/app/runtime/delivery-outbox.d.ts +68 -0
  296. package/types/app/runtime/delivery-outbox.d.ts.map +1 -0
  297. package/types/app/runtime/doing.d.ts +27 -0
  298. package/types/app/runtime/doing.d.ts.map +1 -0
  299. package/types/app/runtime/ipex-auxiliaries.d.ts +74 -0
  300. package/types/app/runtime/ipex-auxiliaries.d.ts.map +1 -0
  301. package/types/app/runtime/operation-owners.d.ts +137 -0
  302. package/types/app/runtime/operation-owners.d.ts.map +1 -0
  303. package/types/app/runtime/retry-backoff.d.ts +49 -0
  304. package/types/app/runtime/retry-backoff.d.ts.map +1 -0
  305. package/types/app/runtime/workflow-contract.d.ts +79 -0
  306. package/types/app/runtime/workflow-contract.d.ts.map +1 -0
  307. package/types/app/transport/byte-source.d.ts +13 -10
  308. package/types/app/transport/byte-source.d.ts.map +1 -1
  309. package/types/app/transport/cesr-egress.d.ts +21 -7
  310. package/types/app/transport/cesr-egress.d.ts.map +1 -1
  311. package/types/app/transport/file-bytes.d.ts +11 -0
  312. package/types/app/transport/file-bytes.d.ts.map +1 -0
  313. package/types/app/transport/http-client.d.ts +3 -0
  314. package/types/app/transport/http-client.d.ts.map +1 -1
  315. package/types/app/transport/http-messenger.d.ts +15 -10
  316. package/types/app/transport/http-messenger.d.ts.map +1 -1
  317. package/types/app/transport/message-source.d.ts +1 -1
  318. package/types/app/transport/messengering.d.ts +2 -2
  319. package/types/app/transport/messengering.d.ts.map +1 -1
  320. package/types/app/transport/node-http-client.d.ts +10 -0
  321. package/types/app/transport/node-http-client.d.ts.map +1 -0
  322. package/types/app/transport/tcp-dialer.d.ts +21 -0
  323. package/types/app/transport/tcp-dialer.d.ts.map +1 -0
  324. package/types/cli/common/event-completion.d.ts +26 -0
  325. package/types/cli/common/event-completion.d.ts.map +1 -0
  326. package/types/cli/common/existing.d.ts.map +1 -1
  327. package/types/cli/common/runtime-workers.d.ts +23 -0
  328. package/types/cli/common/runtime-workers.d.ts.map +1 -0
  329. package/types/cli/credentials/ipex.d.ts.map +1 -1
  330. package/types/cli/credentials/vc.d.ts +1 -1
  331. package/types/cli/credentials/vc.d.ts.map +1 -1
  332. package/types/cli/endpoints/did.d.ts.map +1 -1
  333. package/types/cli/endpoints/oobi-clean.d.ts.map +1 -1
  334. package/types/cli/endpoints/oobi.d.ts +3 -1
  335. package/types/cli/endpoints/oobi.d.ts.map +1 -1
  336. package/types/cli/identity/challenge.d.ts +1 -1
  337. package/types/cli/identity/challenge.d.ts.map +1 -1
  338. package/types/cli/identity/delegate.d.ts +14 -1
  339. package/types/cli/identity/delegate.d.ts.map +1 -1
  340. package/types/cli/identity/incept.d.ts.map +1 -1
  341. package/types/cli/identity/init.d.ts.map +1 -1
  342. package/types/cli/identity/interact.d.ts.map +1 -1
  343. package/types/cli/identity/rotate.d.ts.map +1 -1
  344. package/types/cli/index.d.ts +4 -2
  345. package/types/cli/index.d.ts.map +1 -1
  346. package/types/cli/messaging/group-join.d.ts +53 -0
  347. package/types/cli/messaging/group-join.d.ts.map +1 -0
  348. package/types/cli/messaging/group-wait.d.ts +34 -0
  349. package/types/cli/messaging/group-wait.d.ts.map +1 -0
  350. package/types/cli/messaging/multisig.d.ts +36 -4
  351. package/types/cli/messaging/multisig.d.ts.map +1 -1
  352. package/types/cli/messaging/root-copy-lines.d.ts +39 -0
  353. package/types/cli/messaging/root-copy-lines.d.ts.map +1 -0
  354. package/types/cli/tools/annotate.d.ts.map +1 -1
  355. package/types/cli/tools/benchmark.d.ts.map +1 -1
  356. package/types/cli/tools/db-dump.d.ts.map +1 -1
  357. package/types/core/bytes.d.ts +2 -0
  358. package/types/core/bytes.d.ts.map +1 -1
  359. package/types/core/cues.d.ts +11 -0
  360. package/types/core/cues.d.ts.map +1 -1
  361. package/types/core/kel/delegation-ancestry.d.ts +41 -0
  362. package/types/core/kel/delegation-ancestry.d.ts.map +1 -0
  363. package/types/core/kel/eventing.d.ts.map +1 -1
  364. package/types/core/kel/kever.d.ts +5 -4
  365. package/types/core/kel/kever.d.ts.map +1 -1
  366. package/types/core/mailbox/kram-policy.d.ts +14 -0
  367. package/types/core/mailbox/kram-policy.d.ts.map +1 -1
  368. package/types/core/mailbox/kram-pruning.d.ts +1 -3
  369. package/types/core/mailbox/kram-pruning.d.ts.map +1 -1
  370. package/types/core/mailbox/kraming.d.ts +1 -1
  371. package/types/core/mailbox/kraming.d.ts.map +1 -1
  372. package/types/core/records.d.ts +61 -0
  373. package/types/core/records.d.ts.map +1 -1
  374. package/types/core/routing.d.ts +6 -0
  375. package/types/core/routing.d.ts.map +1 -1
  376. package/types/db/basing.d.ts +22 -25
  377. package/types/db/basing.d.ts.map +1 -1
  378. package/types/db/core/dber.d.ts +505 -0
  379. package/types/db/core/dber.d.ts.map +1 -0
  380. package/types/db/core/index.d.ts +4 -2
  381. package/types/db/core/index.d.ts.map +1 -1
  382. package/types/db/core/indexeddb-persistence.d.ts +59 -0
  383. package/types/db/core/indexeddb-persistence.d.ts.map +1 -0
  384. package/types/db/core/lmdb-opener.d.ts +17 -0
  385. package/types/db/core/lmdb-opener.d.ts.map +1 -0
  386. package/types/db/core/lmdber.d.ts +60 -383
  387. package/types/db/core/lmdber.d.ts.map +1 -1
  388. package/types/db/core/memstore.d.ts +129 -0
  389. package/types/db/core/memstore.d.ts.map +1 -0
  390. package/types/db/core/path-manager.d.ts +22 -45
  391. package/types/db/core/path-manager.d.ts.map +1 -1
  392. package/types/db/core/store-owner.d.ts +59 -0
  393. package/types/db/core/store-owner.d.ts.map +1 -0
  394. package/types/db/core/webdber.d.ts +127 -0
  395. package/types/db/core/webdber.d.ts.map +1 -0
  396. package/types/db/escrowing.d.ts +3 -3
  397. package/types/db/escrowing.d.ts.map +1 -1
  398. package/types/db/exchange/exchange-nests.d.ts.map +1 -1
  399. package/types/db/indexeddb.d.ts +37 -0
  400. package/types/db/indexeddb.d.ts.map +1 -0
  401. package/types/db/keeping.d.ts +14 -25
  402. package/types/db/keeping.d.ts.map +1 -1
  403. package/types/db/koming.d.ts +7 -8
  404. package/types/db/koming.d.ts.map +1 -1
  405. package/types/db/lmdb-stores.d.ts +45 -0
  406. package/types/db/lmdb-stores.d.ts.map +1 -0
  407. package/types/db/lmdb.d.ts +7 -0
  408. package/types/db/lmdb.d.ts.map +1 -0
  409. package/types/db/mailbox/mailboxing.d.ts +7 -21
  410. package/types/db/mailbox/mailboxing.d.ts.map +1 -1
  411. package/types/db/noting.d.ts +7 -12
  412. package/types/db/noting.d.ts.map +1 -1
  413. package/types/db/reger.d.ts +7 -11
  414. package/types/db/reger.d.ts.map +1 -1
  415. package/types/db/replay/witness-replay.d.ts +0 -2
  416. package/types/db/replay/witness-replay.d.ts.map +1 -1
  417. package/types/db/store-lock.d.ts +72 -0
  418. package/types/db/store-lock.d.ts.map +1 -0
  419. package/types/db/subing.d.ts +24 -25
  420. package/types/db/subing.d.ts.map +1 -1
  421. package/types/npm/db-indexeddb.d.ts +4 -0
  422. package/types/npm/db-indexeddb.d.ts.map +1 -0
  423. package/types/npm/db-lmdb.d.ts +4 -0
  424. package/types/npm/db-lmdb.d.ts.map +1 -0
  425. package/types/npm/runtime-node.d.ts +4 -0
  426. package/types/npm/runtime-node.d.ts.map +1 -0
  427. package/types/npm/runtime-web.d.ts +4 -0
  428. package/types/npm/runtime-web.d.ts.map +1 -0
  429. package/types/runtime/index.d.ts +48 -14
  430. package/types/runtime/index.d.ts.map +1 -1
  431. package/types/runtime/node.d.ts +15 -0
  432. package/types/runtime/node.d.ts.map +1 -0
  433. package/types/runtime/web/output-barrier.d.ts +30 -0
  434. package/types/runtime/web/output-barrier.d.ts.map +1 -0
  435. package/types/runtime/web/persistent-storage.d.ts +36 -0
  436. package/types/runtime/web/persistent-storage.d.ts.map +1 -0
  437. package/types/runtime/web.d.ts +11 -0
  438. package/types/runtime/web.d.ts.map +1 -0
  439. package/types/vdr/tel-publication.d.ts +6 -0
  440. package/types/vdr/tel-publication.d.ts.map +1 -1
  441. package/types/version.d.ts +2 -2
  442. package/esm/keri/npm/src/acdc/relating.js +0 -59
  443. package/esm/keri/npm/src/cli/common/tel-completion.js +0 -24
  444. package/esm/keri/npm/src/db/baser-defaults.js +0 -11
  445. package/types/acdc/relating.d.ts +0 -21
  446. package/types/acdc/relating.d.ts.map +0 -1
  447. package/types/cli/common/tel-completion.d.ts +0 -8
  448. package/types/cli/common/tel-completion.d.ts.map +0 -1
  449. package/types/db/baser-defaults.d.ts +0 -5
  450. package/types/db/baser-defaults.d.ts.map +0 -1
@@ -1,4 +1,9 @@
1
1
  import { Diger } from "cesr-ts";
2
+ import { ValidationError } from "../../core/errors.js";
3
+ import { sendExchangeMessage } from "../exchanges/exchange-messaging.js";
4
+ import { systemClock } from "../runtime/runtime-clock.js";
5
+ import { observeUntil } from "../runtime/workflow-contract.js";
6
+ import { isLocalGroupHab } from "./endpoint-roleing.js";
2
7
  const CHALLENGE_CONSONANTS = [
3
8
  "b",
4
9
  "c",
@@ -91,6 +96,51 @@ export function findVerifiedChallengeResponse(db, signer, expected) {
91
96
  }
92
97
  return null;
93
98
  }
99
+ /**
100
+ * Respond to a challenge: sign and send a `/challenge/response` exchange message
101
+ * carrying `words` to `recipient`. Each call authors a new message (the exchange
102
+ * carries a timestamp); the verifier's matching is idempotent over repeats.
103
+ *
104
+ * @returns The signed exchange message that was sent.
105
+ * @throws ValidationError for a group habitat or empty words; send failures propagate.
106
+ */
107
+ export function* respondToChallenge(deps, hab, recipient, words) {
108
+ if (isLocalGroupHab(deps.hby, hab)) {
109
+ throw new ValidationError("Challenge respond does not coordinate group approval. Select the responding member alias.");
110
+ }
111
+ if (words.length === 0)
112
+ throw new ValidationError("Challenge words must not be empty.");
113
+ const payload = { words: [...words] };
114
+ const { serder } = yield* sendExchangeMessage(deps.hby, hab, deps.http, deps.clock, {
115
+ dest: recipient,
116
+ route: CHALLENGE_RESPONSE_ROUTE,
117
+ topic: "challenge",
118
+ payload: { i: hab.pre, ...payload },
119
+ });
120
+ return serder;
121
+ }
122
+ /** Read the status of `words` from `signer`; mutates nothing. */
123
+ export function challengeStatus(deps, signer, words) {
124
+ const response = findVerifiedChallengeResponse(deps.db, signer, words);
125
+ if (!response)
126
+ return { state: "waiting" };
127
+ const recorded = deps.db.chas.get([signer]).some((diger) => diger.qb64 === response.said);
128
+ return { state: recorded ? "verified" : "received", response };
129
+ }
130
+ /**
131
+ * Observe stored exchange messages until a response with the expected words from
132
+ * `signer` arrives or the budget expires. Starts no worker: the host's runtime
133
+ * (mailbox polling, exchange intake) is what stores the response.
134
+ */
135
+ export function* waitForChallengeResponse(deps, signer, words, { timeoutMs, pollMs = 250, clock = systemClock }) {
136
+ const done = yield* observeUntil(() => challengeStatus(deps, signer, words).state !== "waiting", {
137
+ timeoutMs,
138
+ pollMs,
139
+ clock,
140
+ });
141
+ const status = challengeStatus(deps, signer, words);
142
+ return done ? { outcome: "settled", status } : { outcome: "timed-out", status, timeoutMs };
143
+ }
94
144
  /** Persist one verifier-confirmed challenge response in `chas.`. */
95
145
  export function markChallengeVerified(db, signer, serder) {
96
146
  if (!serder.said) {
@@ -1,5 +1,5 @@
1
1
  import * as dntShim from "../../_dnt.shims.js";
2
- import { basename, dirname, join } from "../../deps/jsr.io/@std/path/1.1.6/mod.js";
2
+ import { basename, dirname, extname, join } from "../../deps/jsr.io/@std/path/1.1.6/mod.js";
3
3
  import { ValidationError } from "../../core/errors.js";
4
4
  import { PathManager } from "../../db/core/path-manager.js";
5
5
  const CONFIGER_DEFAULTS = {
@@ -23,7 +23,7 @@ const CONFIGER_DEFAULTS = {
23
23
  * - currently supports JSON only
24
24
  */
25
25
  export class Configer {
26
- /** Create a config manager bound to a PathManager-backed directory. */
26
+ /** Create a config manager bound to a PathManager-resolved file. */
27
27
  constructor(options = {}) {
28
28
  Object.defineProperty(this, "name", {
29
29
  enumerable: true,
@@ -62,7 +62,7 @@ export class Configer {
62
62
  value: null
63
63
  });
64
64
  this.name = options.name || "conf";
65
- this.base = options.base || "";
65
+ this.base = options.base ?? "main";
66
66
  this.temp = options.temp || false;
67
67
  this.fext = options.fext || CONFIGER_DEFAULTS.fext;
68
68
  this.pathManager = new PathManager({
@@ -70,27 +70,24 @@ export class Configer {
70
70
  name: this.name,
71
71
  base: this.base,
72
72
  temp: this.temp,
73
+ filed: true,
74
+ fext: this.fext,
73
75
  }, {
74
76
  tailDirPath: CONFIGER_DEFAULTS.tailDirPath,
75
77
  cleanTailDirPath: CONFIGER_DEFAULTS.cleanTailDirPath,
76
- altTailDirPath: CONFIGER_DEFAULTS.altTailDirPath,
77
- altCleanTailDirPath: CONFIGER_DEFAULTS.altCleanTailDirPath,
78
+ altTailDirPath: options.compat ? ".keri/cf" : CONFIGER_DEFAULTS.altTailDirPath,
79
+ altCleanTailDirPath: options.compat ? ".keri/clean/cf" : CONFIGER_DEFAULTS.altCleanTailDirPath,
78
80
  tempPrefix: CONFIGER_DEFAULTS.tempPrefix,
79
81
  });
80
82
  }
81
83
  get opened() {
82
84
  return this.path !== null;
83
85
  }
84
- /** Resolve and validate the config filename and extension. */
85
- resolvedFileName() {
86
- if (this.name.endsWith(`.${this.fext}`)) {
87
- return this.name;
88
- }
89
- const hasExt = this.name.includes(".");
90
- if (hasExt) {
86
+ /** Refuse a config name carrying an extension this manager cannot read. */
87
+ assertSupportedExtension() {
88
+ if (extname(this.name) && !this.name.endsWith(`.${this.fext}`)) {
91
89
  throw new ValidationError(`Unsupported config extension for '${this.name}'. Only .${this.fext} is supported.`);
92
90
  }
93
- return `${this.name}.${this.fext}`;
94
91
  }
95
92
  ensureOpenPath() {
96
93
  if (!this.path) {
@@ -194,44 +191,21 @@ export class Configer {
194
191
  throw pendingError;
195
192
  }
196
193
  }
197
- /** Open or create the config file in the resolved Configer directory. */
194
+ /** Open the config file at KERIpy's `{head}/keri/cf/{base}/{name}.{fext}`, creating it when absent. */
198
195
  *reopen(options = {}) {
199
- const opened = yield* this.pathManager.reopen({
200
- ...options,
201
- name: this.name,
202
- base: this.base,
203
- temp: this.temp,
204
- });
196
+ this.assertSupportedExtension();
197
+ const opened = yield* this.pathManager.reopen(options);
205
198
  if (!opened || !this.pathManager.path) {
206
199
  return false;
207
200
  }
208
- const fileName = this.resolvedFileName();
209
- this.path = join(this.pathManager.path, fileName);
210
- try {
211
- dntShim.Deno.statSync(this.path);
212
- }
213
- catch (error) {
214
- if (error instanceof dntShim.Deno.errors.NotFound) {
215
- this.writeAtomic(this.path, "{}\n");
216
- }
217
- else {
218
- throw error;
219
- }
201
+ this.path = this.pathManager.path;
202
+ if (dntShim.Deno.statSync(this.path).size === 0) {
203
+ this.writeAtomic(this.path, "{}\n");
220
204
  }
221
205
  return true;
222
206
  }
223
- /** Close the config manager and optionally remove files. */
207
+ /** Close the config manager and optionally remove the file. */
224
208
  *close(clear = false) {
225
- if (clear && this.path) {
226
- try {
227
- dntShim.Deno.removeSync(this.path);
228
- }
229
- catch (error) {
230
- if (!(error instanceof dntShim.Deno.errors.NotFound)) {
231
- throw error;
232
- }
233
- }
234
- }
235
209
  this.path = null;
236
210
  yield* this.pathManager.close(clear);
237
211
  return true;
@@ -90,7 +90,7 @@ function escrowContext(keys, serder) {
90
90
  return [keys, serder, pre, said, snh];
91
91
  }
92
92
  /** Persist the delegator event seal that authorizes one delegated event. */
93
- function pinAuthorizingSeal(hby, delegated, delegating) {
93
+ export function pinAuthorizingSeal(hby, delegated, delegating) {
94
94
  const pre = delegated.pre;
95
95
  const said = delegated.said;
96
96
  const sner = delegating.sner;
@@ -226,6 +226,72 @@ Object.defineProperty(DelegateRequestHandler, "resource", {
226
226
  writable: true,
227
227
  value: DELEGATE_REQUEST_ROUTE
228
228
  });
229
+ /** Enqueue one anchor query to the delegator's first sorted witness, when its endpoint is known. */
230
+ function enqueueAnchorQuery(deps, serder, delpre, witness, communicationHab) {
231
+ deps.querying.enqueue({
232
+ pre: delpre,
233
+ route: "logs",
234
+ q: { fn: "0", s: "0", a: eventAnchor(serder) },
235
+ signer: communicationHab.pre,
236
+ wits: [witness],
237
+ });
238
+ }
239
+ /**
240
+ * Publish the initial delegator-witness anchor query and seed the retry-pass
241
+ * bookkeeping so the first retry starts the backoff window instead of querying again.
242
+ */
243
+ export function queueDelegatorWitnessQuery(deps, serder, communicationHab) {
244
+ const id = workflowId(serder);
245
+ const delpre = delegatedWorkflowDelpre(deps.hby, serder);
246
+ if (!delpre) {
247
+ throw new ValidationError(`Delegation workflow ${id} is missing a delegator prefix.`);
248
+ }
249
+ const delegator = deps.hby.db.getKever(delpre);
250
+ if (!delegator) {
251
+ return;
252
+ }
253
+ const witness = firstSorted(delegator.wits);
254
+ if (!witness || !preferredWitnessQueryUrl(communicationHab, witness)) {
255
+ return;
256
+ }
257
+ enqueueAnchorQuery(deps, serder, delpre, witness, communicationHab);
258
+ deps.retryPasses.set(id, -1);
259
+ }
260
+ /** Retry bounded delegator-witness queries while waiting for the anchor; returns why the wait continues. */
261
+ export function retryDelegatorWitnessQuery(deps, serder, communicationHab) {
262
+ const id = workflowId(serder);
263
+ const delpre = delegatedWorkflowDelpre(deps.hby, serder);
264
+ if (!delpre) {
265
+ throw new ValidationError(`Delegation workflow ${id} is missing a delegator prefix.`);
266
+ }
267
+ const delegator = deps.hby.db.getKever(delpre);
268
+ if (!delegator) {
269
+ return "Delegator anchor has not been learned locally yet and the delegator KEL is not known locally.";
270
+ }
271
+ const witness = firstSorted(delegator.wits);
272
+ if (!witness) {
273
+ return "Delegator anchor has not been learned locally yet and no delegator witness is known locally.";
274
+ }
275
+ if (!preferredWitnessQueryUrl(communicationHab, witness)) {
276
+ return `Delegator anchor has not been learned locally yet and witness ${witness} has no HTTP endpoint known locally.`;
277
+ }
278
+ const pass = deps.retryPasses.get(id);
279
+ if (pass === undefined) {
280
+ enqueueAnchorQuery(deps, serder, delpre, witness, communicationHab);
281
+ deps.retryPasses.set(id, 0);
282
+ return `Delegator anchor has not been learned locally yet; queried delegator witness ${witness}.`;
283
+ }
284
+ const nextPass = pass + 1;
285
+ if (nextPass < DELEGATION_ANCHOR_QUERY_RETRY_PASSES) {
286
+ deps.retryPasses.set(id, nextPass);
287
+ const remaining = DELEGATION_ANCHOR_QUERY_RETRY_PASSES
288
+ - nextPass;
289
+ return `Delegator anchor has not been learned locally yet; next delegator witness query retry in ${remaining} pass(es).`;
290
+ }
291
+ enqueueAnchorQuery(deps, serder, delpre, witness, communicationHab);
292
+ deps.retryPasses.set(id, 0);
293
+ return `Delegator anchor has not been learned locally yet; queried delegator witness ${witness}.`;
294
+ }
229
295
  /**
230
296
  * Delegation workflow coordinator for delegated inception and rotation events.
231
297
  *
@@ -329,6 +395,13 @@ export class Anchorer {
329
395
  writable: true,
330
396
  value: new Map()
331
397
  });
398
+ /** Shared anchor-discovery inputs over this owner's collaborators and retry bookkeeping. */
399
+ Object.defineProperty(this, "anchorQuery", {
400
+ enumerable: true,
401
+ configurable: true,
402
+ writable: true,
403
+ value: void 0
404
+ });
332
405
  if (protocol && protocol.kvy.db !== hby.db) {
333
406
  throw new RangeError("Anchorer protocol processor must use the same database");
334
407
  }
@@ -336,6 +409,7 @@ export class Anchorer {
336
409
  this.protocol = protocol;
337
410
  this.postman = postman;
338
411
  this.querying = querying;
412
+ this.anchorQuery = { hby, querying, retryPasses: this.anchorQueryRetryPasses };
339
413
  this.http = http;
340
414
  this.clock = clock;
341
415
  }
@@ -531,7 +605,7 @@ export class Anchorer {
531
605
  // publish phase that forwards the delegation request and raw event bytes.
532
606
  // Keep that ordering here so delegate-side approval discovery does not
533
607
  // depend on a later escrow pass happening "soon enough" by accident.
534
- this.queueDelegatorWitnessQueryNow(serder, communicationHab);
608
+ queueDelegatorWitnessQuery(this.anchorQuery, serder, communicationHab);
535
609
  this.hby.db.dpwe.rem(keys);
536
610
  this.hby.db.dune.pin(keys, serder);
537
611
  return {
@@ -579,7 +653,7 @@ export class Anchorer {
579
653
  pre,
580
654
  said,
581
655
  phase: "waitingDelegatorAnchor",
582
- reason: this.retryDelegatorWitnessQuery(serder, communicationHab),
656
+ reason: retryDelegatorWitnessQuery(this.anchorQuery, serder, communicationHab),
583
657
  };
584
658
  }
585
659
  // The approving event is authoritative only after the delegator's sealing
@@ -634,80 +708,6 @@ export class Anchorer {
634
708
  }
635
709
  throw new ValidationError(`Delegated inception for ${hab.pre} requires --proxy <alias> to send delegation requests.`);
636
710
  }
637
- /** Publish the initial anchor query after successful sending and seed the existing retry-pass bookkeeping. */
638
- queueDelegatorWitnessQueryNow(serder, communicationHab) {
639
- const id = workflowId(serder);
640
- const delpre = delegatedWorkflowDelpre(this.hby, serder);
641
- if (!delpre) {
642
- throw new ValidationError(`Delegation workflow ${id} is missing a delegator prefix.`);
643
- }
644
- const delegator = this.hby.db.getKever(delpre);
645
- if (!delegator) {
646
- return;
647
- }
648
- const witness = firstSorted(delegator.wits);
649
- if (!witness || !preferredWitnessQueryUrl(communicationHab, witness)) {
650
- return;
651
- }
652
- this.querying.enqueue({
653
- pre: delpre,
654
- route: "logs",
655
- q: { fn: "0", s: "0", a: eventAnchor(serder) },
656
- signer: communicationHab.pre,
657
- wits: [witness],
658
- });
659
- // Mark that an immediate publication-time query was already sent so the
660
- // first unanchored escrow retry pass starts the backoff window instead of
661
- // immediately enqueueing the same query again.
662
- this.anchorQueryRetryPasses.set(id, -1);
663
- }
664
- /** Retry bounded delegator-witness queries while waiting for the anchor. */
665
- retryDelegatorWitnessQuery(serder, communicationHab) {
666
- const id = workflowId(serder);
667
- const delpre = delegatedWorkflowDelpre(this.hby, serder);
668
- if (!delpre) {
669
- throw new ValidationError(`Delegation workflow ${id} is missing a delegator prefix.`);
670
- }
671
- const delegator = this.hby.db.getKever(delpre);
672
- if (!delegator) {
673
- return "Delegator anchor has not been learned locally yet and the delegator KEL is not known locally.";
674
- }
675
- const witness = firstSorted(delegator.wits);
676
- if (!witness) {
677
- return "Delegator anchor has not been learned locally yet and no delegator witness is known locally.";
678
- }
679
- if (!preferredWitnessQueryUrl(communicationHab, witness)) {
680
- return `Delegator anchor has not been learned locally yet and witness ${witness} has no HTTP endpoint known locally.`;
681
- }
682
- const pass = this.anchorQueryRetryPasses.get(id);
683
- if (pass === undefined) {
684
- this.querying.enqueue({
685
- pre: delpre,
686
- route: "logs",
687
- q: { fn: "0", s: "0", a: eventAnchor(serder) },
688
- signer: communicationHab.pre,
689
- wits: [witness],
690
- });
691
- this.anchorQueryRetryPasses.set(id, 0);
692
- return `Delegator anchor has not been learned locally yet; queried delegator witness ${witness}.`;
693
- }
694
- const nextPass = pass + 1;
695
- if (nextPass < DELEGATION_ANCHOR_QUERY_RETRY_PASSES) {
696
- this.anchorQueryRetryPasses.set(id, nextPass);
697
- const remaining = DELEGATION_ANCHOR_QUERY_RETRY_PASSES
698
- - nextPass;
699
- return `Delegator anchor has not been learned locally yet; next delegator witness query retry in ${remaining} pass(es).`;
700
- }
701
- this.querying.enqueue({
702
- pre: delpre,
703
- route: "logs",
704
- q: { fn: "0", s: "0", a: eventAnchor(serder) },
705
- signer: communicationHab.pre,
706
- wits: [witness],
707
- });
708
- this.anchorQueryRetryPasses.set(id, 0);
709
- return `Delegator anchor has not been learned locally yet; queried delegator witness ${witness}.`;
710
- }
711
711
  /** Retire only this event's process-local signer and query bookkeeping. */
712
712
  clearWorkflowPins(serder) {
713
713
  const id = workflowId(serder);