feat: adopt the latest Enbox release set (agent 0.8.31 / api 0.6.70) - #183
Merged
Conversation
Updates the direct Enbox dependencies to the release delivering protocol-owned encryption policy, authoritative stored record data, and pre-dispatch raw payload validation. The connect override path no longer passes the caller-controlled encryption switch on ProtocolsConfigure: protocol definitions are now the sole source of encryption policy and the agent derives and injects $keyAgreement keys itself whenever a definition's types demand encryption — the wallet computed the same predicate the agent now applies, so behavior is unchanged while the decision moves to the layer that owns it. Decryption failures now surface when record.data is consumed instead of failing the containing read, query, or subscription; every wallet consumption site already wraps data reads in per-record typed error handling, so one undecryptable record no longer fails a whole query.
Coverage Report
File Coverage
|
||||||||||||||||||||||||||||||||||||||
api 0.6.70 adds opt-in message-subscription record hydration (includeRecords) with version-pinned stored data; browser 0.3.62 and protocols 0.2.97 follow. The wallet's invalidation subscriptions key cache updates off event descriptors alone, so hydration stays deliberately disabled there — no per-event record reads for data the wallet does not consume.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adopts the latest Enbox release set (
agent0.8.31,api0.6.70,auth0.6.77,browser0.3.62,connect0.1.11,dwn-clients0.4.22,dwn-sdk-js0.4.15,protocols0.2.97) — protocol-owned record encryption, authoritative stored record data, pre-dispatch raw payload validation, and opt-in message-subscription record hydration.One wallet adaptation — protocol-owned encryption policy (#1383): the connect override path (
reconfigureProtocolsForOverride) passed the caller-controlledencryptionswitch onProtocolsConfigure, which this release removes. Protocol definitions are now the sole source of encryption policy: the agent derives and injects$keyAgreementkeys itself whenever a definition's types demand encryption. The wallet was computing the same predicate (protocolHasEncryptedTypes) the agent now applies internally, so behavior is unchanged while the decision moves to the layer that owns it — and a malicious or buggy caller can no longer install an encrypted protocol without its keys. The preflight's validation-side key derivation (Protocols.deriveAndInjectPublicEncryptionKeyswith the synthetic validation signer) is unaffected.Absorbed without changes — authoritative stored data (#1382): low-level reads, queries, and subscriptions now stay on the raw stored bytes, and decryption happens lazily when
record.datais consumed. Every wallet consumption site (social graph, profiles, group members, profile image cache) already wraps itsdata.json()/data.blob()reads in per-record typed error handling, so this lands as a strict improvement: one undecryptable record surfaces at its own read instead of failing the containing query or subscription.Deliberately not enabled — subscription record hydration (#1384, api 0.6.70):
messages.subscribecan now hydrate eachRecordsWriteevent with version-pinned stored data (includeRecords), read under the feed's ownMessages.Readauthorization. The wallet's invalidation subscriptions key cache updates off event descriptors alone and never consume record payloads, so hydration stays off there — enabling it would add a per-event record read for data the wallet immediately discards.Transparent — raw payload validation (#1380): RecordsWrite payloads whose CID or size does not match the signed message are rejected before local processing or remote transmission, so plaintext can never leave under a ciphertext-committing message.
Test plan
bun install(lockfile updated for the new release set)bun run lint(0 errors; pre-existing warning set unchanged)bunx tsc --noEmitbun run test(780 passed, 10 skipped)bun run buildbun run test:e2e(28 passed, isolated from other local dev servers)🤖 Generated with Claude Code