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