@openvtc/trust-tasks 0.27.1 → 0.27.3
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/CHANGELOG.md +218 -0
- package/dist/_runtime/consume.d.ts +2 -1
- package/dist/_runtime/consume.d.ts.map +1 -1
- package/dist/_runtime/consume.js +26 -1
- package/dist/_runtime/consume.js.map +1 -1
- package/dist/_runtime/document.d.ts +9 -0
- package/dist/_runtime/document.d.ts.map +1 -1
- package/dist/_runtime/document.js +15 -1
- package/dist/_runtime/document.js.map +1 -1
- package/dist/_runtime/freshness.d.ts +4 -2
- package/dist/_runtime/freshness.d.ts.map +1 -1
- package/dist/_runtime/freshness.js +9 -6
- package/dist/_runtime/freshness.js.map +1 -1
- package/dist/_shared/components.d.ts +346 -23
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.d.ts +4 -4
- package/dist/device/list/0.1/payload.d.ts.map +1 -1
- package/dist/device/list/0.1/payload.js +4 -2
- package/dist/device/list/0.1/payload.js.map +1 -1
- package/dist/device/list/0.2/payload.d.ts +4 -4
- package/dist/device/list/0.2/payload.d.ts.map +1 -1
- package/dist/device/list/0.2/payload.js +4 -2
- package/dist/device/list/0.2/payload.js.map +1 -1
- package/dist/device/register/0.1/payload.d.ts +4 -4
- package/dist/device/register/0.1/payload.d.ts.map +1 -1
- package/dist/device/register/0.1/payload.js +4 -2
- package/dist/device/register/0.1/payload.js.map +1 -1
- package/dist/device/register/0.2/payload.d.ts +4 -4
- package/dist/device/register/0.2/payload.d.ts.map +1 -1
- package/dist/device/register/0.2/payload.js +4 -2
- package/dist/device/register/0.2/payload.js.map +1 -1
- package/dist/index.d.ts +25 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
- package/dist/rooms/create/0.2/payload.d.ts +534 -0
- package/dist/rooms/create/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/create/0.2/payload.js +293 -0
- package/dist/rooms/create/0.2/payload.js.map +1 -0
- package/dist/rooms/epoch/chain/0.2/payload.d.ts +534 -0
- package/dist/rooms/epoch/chain/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/epoch/chain/0.2/payload.js +292 -0
- package/dist/rooms/epoch/chain/0.2/payload.js.map +1 -0
- package/dist/rooms/epoch/prune/0.2/payload.d.ts +467 -0
- package/dist/rooms/epoch/prune/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/epoch/prune/0.2/payload.js +251 -0
- package/dist/rooms/epoch/prune/0.2/payload.js.map +1 -0
- package/dist/rooms/info/0.2/payload.d.ts +1129 -0
- package/dist/rooms/info/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/info/0.2/payload.js +618 -0
- package/dist/rooms/info/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/backfill/0.2/payload.d.ts +380 -0
- package/dist/rooms/keys/backfill/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/keys/backfill/0.2/payload.js +197 -0
- package/dist/rooms/keys/backfill/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/browse/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/browse/0.1/payload.js +2 -2
- package/dist/rooms/keys/browse/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/browse/0.2/payload.d.ts +941 -0
- package/dist/rooms/keys/browse/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/keys/browse/0.2/payload.js +558 -0
- package/dist/rooms/keys/browse/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/chain/0.2/payload.d.ts +450 -0
- package/dist/rooms/keys/chain/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/keys/chain/0.2/payload.js +248 -0
- package/dist/rooms/keys/chain/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/profile/read/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/profile/read/0.1/payload.js +2 -2
- package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/read/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/read/0.1/payload.js +2 -2
- package/dist/rooms/keys/read/0.1/payload.js.map +1 -1
- package/dist/rooms/owner/anchor/0.1/payload.d.ts +4 -4
- package/dist/rooms/owner/anchor/0.1/payload.js +2 -2
- package/dist/rooms/owner/anchor/0.1/payload.js.map +1 -1
- package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.1/payload.js +2 -2
- package/dist/rooms/records/get/0.1/payload.js.map +1 -1
- package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.2/payload.js +2 -2
- package/dist/rooms/records/get/0.2/payload.js.map +1 -1
- package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.1/payload.js +2 -2
- package/dist/rooms/records/list/0.1/payload.js.map +1 -1
- package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.2/payload.js +2 -2
- package/dist/rooms/records/list/0.2/payload.js.map +1 -1
- package/dist/rooms/records/list/0.3/payload.d.ts +970 -0
- package/dist/rooms/records/list/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/records/list/0.3/payload.js +526 -0
- package/dist/rooms/records/list/0.3/payload.js.map +1 -0
- package/dist/rooms/records/prune/0.1/payload.d.ts +706 -0
- package/dist/rooms/records/prune/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/records/prune/0.1/payload.js +374 -0
- package/dist/rooms/records/prune/0.1/payload.js.map +1 -0
- package/dist/rooms/records/put/0.3/payload.d.ts +1212 -0
- package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/records/put/0.3/payload.js +646 -0
- package/dist/rooms/records/put/0.3/payload.js.map +1 -0
- package/dist/rooms/records/retention/set/0.1/payload.d.ts +521 -0
- package/dist/rooms/records/retention/set/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/records/retention/set/0.1/payload.js +276 -0
- package/dist/rooms/records/retention/set/0.1/payload.js.map +1 -0
- package/dist/vault/credentials/present/0.1/payload.d.ts +407 -0
- package/dist/vault/credentials/present/0.1/payload.d.ts.map +1 -0
- package/dist/vault/credentials/present/0.1/payload.js +217 -0
- package/dist/vault/credentials/present/0.1/payload.js.map +1 -0
- package/dist/vault/credentials/query/0.1/payload.d.ts +12 -0
- package/dist/vault/credentials/query/0.1/payload.d.ts.map +1 -1
- package/dist/vault/credentials/query/0.1/payload.js +4 -0
- package/dist/vault/credentials/query/0.1/payload.js.map +1 -1
- package/dist/vta/webvh/dids/create/1.2/payload.d.ts +961 -0
- package/dist/vta/webvh/dids/create/1.2/payload.d.ts.map +1 -0
- package/dist/vta/webvh/dids/create/1.2/payload.js +480 -0
- package/dist/vta/webvh/dids/create/1.2/payload.js.map +1 -0
- package/dist/vtc/_shared/0.1/room-migration.d.ts +16 -0
- package/dist/vtc/_shared/0.1/room-migration.d.ts.map +1 -0
- package/dist/vtc/_shared/0.1/room-migration.js +6 -0
- package/dist/vtc/_shared/0.1/room-migration.js.map +1 -0
- package/dist/vtc/_shared/0.1/room-storage.d.ts +1 -1
- package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -1
- package/dist/vtc/_shared/0.2/room-storage.d.ts +16 -0
- package/dist/vtc/_shared/0.2/room-storage.d.ts.map +1 -0
- package/dist/vtc/_shared/0.2/room-storage.js +6 -0
- package/dist/vtc/_shared/0.2/room-storage.js.map +1 -0
- package/dist/vtc/admin/events/_shared/0.4/topic.d.ts +31 -0
- package/dist/vtc/admin/events/_shared/0.4/topic.d.ts.map +1 -0
- package/dist/vtc/admin/events/_shared/0.4/topic.js +6 -0
- package/dist/vtc/admin/events/_shared/0.4/topic.js.map +1 -0
- package/dist/vtc/admin/events/event/0.4/payload.d.ts +172 -0
- package/dist/vtc/admin/events/event/0.4/payload.d.ts.map +1 -0
- package/dist/vtc/admin/events/event/0.4/payload.js +103 -0
- package/dist/vtc/admin/events/event/0.4/payload.js.map +1 -0
- package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts +409 -0
- package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts.map +1 -0
- package/dist/vtc/admin/events/subscribe/0.4/payload.js +238 -0
- package/dist/vtc/admin/events/subscribe/0.4/payload.js.map +1 -0
- package/dist/vtc/rooms/get/0.2/payload.d.ts +1966 -0
- package/dist/vtc/rooms/get/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/get/0.2/payload.js +976 -0
- package/dist/vtc/rooms/get/0.2/payload.js.map +1 -0
- package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts +595 -0
- package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/rooms/storage/migrate/0.2/payload.js +336 -0
- package/dist/vtc/rooms/storage/migrate/0.2/payload.js.map +1 -0
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1 -1
- package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/create/0.2/payload.d.ts +1360 -0
- package/dist/vtc/storage/configs/create/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/create/0.2/payload.js +783 -0
- package/dist/vtc/storage/configs/create/0.2/payload.js.map +1 -0
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1 -1
- package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/get/0.2/payload.d.ts +1854 -0
- package/dist/vtc/storage/configs/get/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/get/0.2/payload.js +1075 -0
- package/dist/vtc/storage/configs/get/0.2/payload.js.map +1 -0
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1 -1
- package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/list/0.2/payload.d.ts +1955 -0
- package/dist/vtc/storage/configs/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/list/0.2/payload.js +1125 -0
- package/dist/vtc/storage/configs/list/0.2/payload.js.map +1 -0
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1 -1
- package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/configs/update/0.2/payload.d.ts +1362 -0
- package/dist/vtc/storage/configs/update/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/storage/configs/update/0.2/payload.js +782 -0
- package/dist/vtc/storage/configs/update/0.2/payload.js.map +1 -0
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +1 -1
- package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/storage/credentials/set/0.2/payload.d.ts +979 -0
- package/dist/vtc/storage/credentials/set/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/storage/credentials/set/0.2/payload.js +573 -0
- package/dist/vtc/storage/credentials/set/0.2/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_runtime/consume.ts +26 -2
- package/src/_runtime/document.ts +17 -1
- package/src/_runtime/freshness.ts +9 -7
- package/src/_shared/components.ts +372 -23
- package/src/device/list/0.1/payload.ts +4 -2
- package/src/device/list/0.2/payload.ts +4 -2
- package/src/device/register/0.1/payload.ts +4 -2
- package/src/device/register/0.2/payload.ts +4 -2
- package/src/index.ts +25 -0
- package/src/rooms/_shared/0.1/room.ts +1 -1
- package/src/rooms/create/0.2/payload.ts +364 -0
- package/src/rooms/epoch/chain/0.2/payload.ts +347 -0
- package/src/rooms/epoch/prune/0.2/payload.ts +315 -0
- package/src/rooms/info/0.2/payload.ts +700 -0
- package/src/rooms/keys/backfill/0.2/payload.ts +260 -0
- package/src/rooms/keys/browse/0.1/payload.ts +2 -2
- package/src/rooms/keys/browse/0.2/payload.ts +628 -0
- package/src/rooms/keys/chain/0.2/payload.ts +308 -0
- package/src/rooms/keys/profile/read/0.1/payload.ts +2 -2
- package/src/rooms/keys/read/0.1/payload.ts +2 -2
- package/src/rooms/owner/anchor/0.1/payload.ts +2 -2
- package/src/rooms/records/get/0.1/payload.ts +2 -2
- package/src/rooms/records/get/0.2/payload.ts +2 -2
- package/src/rooms/records/list/0.1/payload.ts +2 -2
- package/src/rooms/records/list/0.2/payload.ts +2 -2
- package/src/rooms/records/list/0.3/payload.ts +601 -0
- package/src/rooms/records/prune/0.1/payload.ts +451 -0
- package/src/rooms/records/put/0.3/payload.ts +741 -0
- package/src/rooms/records/retention/set/0.1/payload.ts +338 -0
- package/src/vault/credentials/present/0.1/payload.ts +283 -0
- package/src/vault/credentials/query/0.1/payload.ts +8 -0
- package/src/vta/webvh/dids/create/1.2/payload.ts +660 -0
- package/src/vtc/_shared/0.1/room-migration.ts +17 -0
- package/src/vtc/_shared/0.1/room-storage.ts +1 -1
- package/src/vtc/_shared/0.2/room-storage.ts +17 -0
- package/src/vtc/admin/events/_shared/0.4/topic.ts +32 -0
- package/src/vtc/admin/events/event/0.4/payload.ts +137 -0
- package/src/vtc/admin/events/subscribe/0.4/payload.ts +318 -0
- package/src/vtc/rooms/get/0.2/payload.ts +1372 -0
- package/src/vtc/rooms/storage/migrate/0.2/payload.ts +408 -0
- package/src/vtc/storage/configs/create/0.1/payload.ts +1 -1
- package/src/vtc/storage/configs/create/0.2/payload.ts +830 -0
- package/src/vtc/storage/configs/get/0.1/payload.ts +1 -1
- package/src/vtc/storage/configs/get/0.2/payload.ts +1110 -0
- package/src/vtc/storage/configs/list/0.1/payload.ts +1 -1
- package/src/vtc/storage/configs/list/0.2/payload.ts +1177 -0
- package/src/vtc/storage/configs/update/0.1/payload.ts +1 -1
- package/src/vtc/storage/configs/update/0.2/payload.ts +829 -0
- package/src/vtc/storage/credentials/set/0.1/payload.ts +1 -1
- package/src/vtc/storage/credentials/set/0.2/payload.ts +619 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,224 @@ The package versions over **its own API** — what a consumer compiles against
|
|
|
11
11
|
not over `SPEC.md`. Below 1.0 a breaking change bumps the leading non-zero
|
|
12
12
|
component.
|
|
13
13
|
|
|
14
|
+
## 0.27.3 — 2026-10-23
|
|
15
|
+
|
|
16
|
+
## 0.27.2 — 2026-10-22
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
### Added
|
|
20
|
+
|
|
21
|
+
- **vault/credentials/present**: Present a held credential to a verifier the client names, bound to its nonce, disclosing only the named claims (#871)
|
|
22
|
+
|
|
23
|
+
* feat(vault/credentials/present): present a held credential to a verifier the client names, bound to its nonce, disclosing only the named claims
|
|
24
|
+
|
|
25
|
+
A client that holds no holder key (a browser wallet, a phone) could not
|
|
26
|
+
carry a presentation to a verifier that takes one inside its own request
|
|
27
|
+
document, such as vtc/directory/card/present: credential-exchange/present
|
|
28
|
+
answers only a verifier that asks the agent. The maintainer now signs as the
|
|
29
|
+
credential's subject for a named audience and nonce, refuses over-disclosure
|
|
30
|
+
of a credential without selective disclosure (wouldOverDisclose), records the
|
|
31
|
+
disclosure before answering, and conflates custody failures as notFound.
|
|
32
|
+
|
|
33
|
+
- **vta/webvh/dids/create**: 1.2 chooses the did:scid identity and the alsoKnownAs alias (#862)
|
|
34
|
+
|
|
35
|
+
* feat(vta/webvh/dids/create): 1.2 chooses the did:scid identity and the alsoKnownAs alias
|
|
36
|
+
|
|
37
|
+
A did:webvh log can be presented as its did:scid:vh:1 DID, an identity
|
|
38
|
+
the same log verifies but which does not name its host (VTI-KEY-160 to
|
|
39
|
+
VTI-KEY-166 of the VTI specification). 1.2's request may name `didMethod`
|
|
40
|
+
(`webvh` or `scid`) and `scidAlsoKnownAs`. Each falls back to the VTA's
|
|
41
|
+
configuration, then to `webvh` and `true`.
|
|
42
|
+
|
|
43
|
+
The response REQUIRES both as applied, plus `webvhDid` (the log) and
|
|
44
|
+
`scidDidUrl` (the did:scid with the `src` a recipient needs to resolve it).
|
|
45
|
+
`did` is the identity in the applied form, the bare did:scid DID when
|
|
46
|
+
`didMethod` is `scid`, and the family's other tasks accept either `did` or
|
|
47
|
+
`webvhDid`.
|
|
48
|
+
|
|
49
|
+
Asking for the did:scid identity when the alias cannot be listed (refused by
|
|
50
|
+
the request, forbidden by the template, or absent from a supplied log) is
|
|
51
|
+
refused with the new `scidAliasRequired` code.
|
|
52
|
+
|
|
53
|
+
1.2 is a new version because 1.1's response refuses unknown members. The
|
|
54
|
+
request members are additive, but a 1.1 client would refuse the response.
|
|
55
|
+
|
|
56
|
+
Bindings regenerated (Rust, TS, Go, Dart).
|
|
57
|
+
|
|
58
|
+
- **rooms/records/prune**: A room states how long it keeps its records, and an administrator prunes what that rule makes eligible (#868)
|
|
59
|
+
|
|
60
|
+
Records only had room-level lifecycle: a room could not keep a meeting note
|
|
61
|
+
for a month and a decision for years, and nothing ever removed a retracted
|
|
62
|
+
record's tombstone.
|
|
63
|
+
|
|
64
|
+
- rooms/_shared/0.1 (in place, additive): RecordRetention ({tombstoneDays,
|
|
65
|
+
recordDays}, by host-visible updatedAt; pinned records exempt from
|
|
66
|
+
recordDays; absent or {} means nothing is eligible) and RecordPrune (the
|
|
67
|
+
mark a prune leaves: version, time, count — never which records or what
|
|
68
|
+
they said). HeadVersion answers the note it carried about erasure: a prune
|
|
69
|
+
takes the next version, and on a pruned room headVersion is the higher of
|
|
70
|
+
the highest record version and the latest prune's, so two roots straddling
|
|
71
|
+
a prune never share a version.
|
|
72
|
+
- rooms/records/prune 0.1 (new): admin only, never curate; kinds retracted |
|
|
73
|
+
aged; required reason; dryRun. Removes eligible records outright, releases
|
|
74
|
+
their blobs, records lastPrune. noRetention when the room states no rule
|
|
75
|
+
for the kinds asked. Hosts never prune on their own. Audit keeps the mark,
|
|
76
|
+
reason, requester where the tier discloses one, and the retention applied,
|
|
77
|
+
never content; a reader holding an earlier listing can check every
|
|
78
|
+
disappearance against the reported retention.
|
|
79
|
+
- rooms/records/retention/set 0.1 (new): admin replaces the retention whole,
|
|
80
|
+
with a reason and an optional expectedRetention precondition.
|
|
81
|
+
- rooms/create 0.2: recordRetention at creation. rooms/info 0.2: serves
|
|
82
|
+
recordRetention and lastPrune to every reader. rooms/records/list 0.3 and
|
|
83
|
+
rooms/keys/browse 0.2: lastPrune on every page; a reader synced below it
|
|
84
|
+
rebuilds and drops what is gone.
|
|
85
|
+
- rooms/records/curate 0.1: editorial pointer to the prune.
|
|
86
|
+
- Rust, TypeScript, Go and Dart bindings regenerated.
|
|
87
|
+
|
|
88
|
+
Refs OpenVTC/verifiable-trust-infrastructure#2118.
|
|
89
|
+
|
|
90
|
+
- **vtc/rooms/storage**: Migrate 0.2 and rooms/get 0.2 — reassignment, retry ownership, resume without re-consent, orphans, pause reporting, queueing (#867)
|
|
91
|
+
|
|
92
|
+
migrate/0.2 fixes a migration's toConfig at approval and keeps it if the room
|
|
93
|
+
is reassigned (new uploads go to the new assignment; a second migration may
|
|
94
|
+
follow); makes the community the one retry owner (capped exponential backoff
|
|
95
|
+
with jitter before `paused`); answers a request for a room with a migration in
|
|
96
|
+
progress at once, resuming a paused one, without parking it for consent again;
|
|
97
|
+
does not migrate or count orphaned blobs; reports `pausedCause`, `lastError`
|
|
98
|
+
and `nextAttemptAt`; and permits one migration at a time with a `queued`
|
|
99
|
+
state.
|
|
100
|
+
|
|
101
|
+
rooms/get/0.2 reports the same migration through the new shared component
|
|
102
|
+
vtc/_shared/0.1/room-migration, and adds the required `toConfig`.
|
|
103
|
+
|
|
104
|
+
- **vtc/storage**: Ambient and sealed storage auth — roleArn, room-scoped credential rules, sealed cleartext schema, host gating (#866)
|
|
105
|
+
|
|
106
|
+
vtc/_shared/0.2/room-storage adds `roleArn` to `ambient` auth (S3 only), the
|
|
107
|
+
`notAllowed` credential status, and `SealedStorageCredential` — the cleartext a
|
|
108
|
+
`sealed` credential is carried in (s3 access-key pair with optional session
|
|
109
|
+
token, gcs service-account key file, walrus suiprivkey), naming its configId
|
|
110
|
+
inside the seal.
|
|
111
|
+
|
|
112
|
+
vtc/storage/configs/{create,update,get,list}/0.2 re-pin to it. create/0.2 makes
|
|
113
|
+
room-scoped credentials normative for ambient (and sealed where the backend can
|
|
114
|
+
mint them): one per (config, room), limited to the room prefix
|
|
115
|
+
`rooms/<32 hex of SHA-256(roomId)>/` and the object actions needed, built by a
|
|
116
|
+
JSON encoder / CEL builder and never by interpolation, at most 15 minutes,
|
|
117
|
+
never used for another room. A host MAY refuse ambient or sealed by
|
|
118
|
+
configuration (`authNotAllowed`, now with `details.reason`), and SHOULD label
|
|
119
|
+
sealed as offering no protection against the machine's operator.
|
|
120
|
+
|
|
121
|
+
vtc/storage/credentials/set/0.2 requires the sealed cleartext to be a
|
|
122
|
+
SealedStorageCredential for the request's config, and refuses sealed when the
|
|
123
|
+
host does not permit it.
|
|
124
|
+
|
|
125
|
+
- **vtc/admin/events**: 0.4 adds a communityRooms topic — the owner's view of the rooms the community owns (#864)
|
|
126
|
+
|
|
127
|
+
The console's Community rooms tab polls every 60 s, because no topic covers
|
|
128
|
+
it: `rooms` is the host's view (storage, limits, lifecycle) for holders of
|
|
129
|
+
`vtc.rooms.admin`, carries no room's details, and is not readable by a
|
|
130
|
+
`vtc.rooms.manage` holder who lacks `vtc.rooms.admin`.
|
|
131
|
+
|
|
132
|
+
- vtc/admin/events/_shared/0.4: Topic gains `communityRooms` (10 topics).
|
|
133
|
+
- vtc/admin/events/subscribe/0.4: `topics` maxItems 10; "What 0.4 adds";
|
|
134
|
+
Authorization row — holders of `vtc.rooms.manage`, prompting
|
|
135
|
+
vtc/rooms/community/list 0.2, get 0.2 and members/list 0.1;
|
|
136
|
+
`vtc.rooms.admin` alone does not qualify.
|
|
137
|
+
- vtc/admin/events/event/0.4: producer rules 8–9 — hint when anything those
|
|
138
|
+
reads show changes (a room created or its label, description or tags
|
|
139
|
+
changed; an admission offered, withdrawn, accepted or renewed; a removal
|
|
140
|
+
owed, retried, settled or failed, including on departure; the profile
|
|
141
|
+
write's state; the authority-renewal state). No room, member, DID, offer,
|
|
142
|
+
credential or record identifier in any member, ext included. Not a count
|
|
143
|
+
topic. Coalescing, standing re-checks and stream-ending on a shrink are
|
|
144
|
+
unchanged.
|
|
145
|
+
- vtc/rooms/community/update 0.1 and 0.2 (draft, editorial in place):
|
|
146
|
+
"Live updates" now points at `communityRooms` in events 0.4 instead of
|
|
147
|
+
"a later version".
|
|
148
|
+
|
|
149
|
+
0.1, 0.2 and 0.3 are unchanged; a community serving several versions answers
|
|
150
|
+
each subscription at its own.
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
### Fixed
|
|
155
|
+
|
|
156
|
+
- A replay record is kept until the skew-extended window closes, so a late replay cannot execute twice (#872)
|
|
157
|
+
|
|
158
|
+
Freshness accepts a document until issuedAt + maxAge + skew, but the replay
|
|
159
|
+
record was retained only until issuedAt + maxAge. A replay arriving in the
|
|
160
|
+
final skew interval (60s under the consequential defaults) passed freshness,
|
|
161
|
+
found its record already dropped, and executed again — the double execution
|
|
162
|
+
SPEC §7.2 item 11 forbids, and a break of the "same bound" rule the record
|
|
163
|
+
expiry documents.
|
|
164
|
+
|
|
165
|
+
recordExpiry now returns issuedAt + maxAge + skew in Rust, TypeScript, Go and
|
|
166
|
+
Dart. The expiresAt branch is unchanged: expiry is checked without skew, so it
|
|
167
|
+
was already exact. Rust and TS gain a regression test at the boundary.
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
### Specifications
|
|
172
|
+
|
|
173
|
+
- **rooms/epoch/prune**: 0.2 — the host keeps the room's epoch floor, and members' key holders forget what they hold below it (#869)
|
|
174
|
+
|
|
175
|
+
* spec(rooms/epoch/prune): 0.2 — the host keeps the room's epoch floor, and members' key holders forget what they hold below it
|
|
176
|
+
|
|
177
|
+
Each member's key holder keeps its own copy of a room's epoch chain, so
|
|
178
|
+
erasing the host's rungs left every key holder able to derive what the owner
|
|
179
|
+
had decided nobody should.
|
|
180
|
+
|
|
181
|
+
- rooms/_shared/0.1 (in place, additive): EpochFloor — the earliest epoch
|
|
182
|
+
whose key the room still lets anybody derive; monotonic. Hosts keep it,
|
|
183
|
+
never store or serve a rung at or below it, and serve it. A member's key
|
|
184
|
+
holder that learns a higher floor discards rungs at or below it and every
|
|
185
|
+
storage, file or cached key below it (including keys derived in passing
|
|
186
|
+
while catching up), never stores them again from any source, refuses to
|
|
187
|
+
derive below it (beyondChain), and keeps the floor. States plainly that
|
|
188
|
+
nothing already read, decrypted or exported is recalled, and that the
|
|
189
|
+
floor is honoured, not enforced.
|
|
190
|
+
- rooms/epoch/prune 0.2: the host raises the floor to beforeEpoch − 1 (also
|
|
191
|
+
where nothing is dropped: a gap, a fromJoin room) and returns it as the
|
|
192
|
+
required epochFloor. beforeEpoch keeps 0.1's meaning; the off-by-one is
|
|
193
|
+
stated with a table, and two 0.1 misstatements are corrected.
|
|
194
|
+
- rooms/epoch/chain 0.2: epochFloor on every response once pruned; never a
|
|
195
|
+
rung at or below it.
|
|
196
|
+
- rooms/keys/chain 0.2: the member relays the floor (alone if need be); the
|
|
197
|
+
key holder applies it. rooms/keys/backfill 0.2: fetches with epoch/chain
|
|
198
|
+
0.2, applies and reports the floor.
|
|
199
|
+
- Editorial pointers in rooms/keys/open 0.2, rooms/keys/file-key 0.2,
|
|
200
|
+
rooms/keys/read 0.1 and rooms/epoch/prune 0.1.
|
|
201
|
+
- Rust, TypeScript, Go and Dart bindings regenerated.
|
|
202
|
+
|
|
203
|
+
Refs OpenVTC/verifiable-trust-infrastructure#2118.
|
|
204
|
+
|
|
205
|
+
- **rooms/records**: A record says what kind of claim it is, what it cites, what it may be used for, and when it lapses (#865)
|
|
206
|
+
|
|
207
|
+
A sealed record proves who wrote it and whether a member or an agent did,
|
|
208
|
+
but not what kind of claim it is: an agent's inference read the same as an
|
|
209
|
+
observed fact or a credential-backed statement. And records could not
|
|
210
|
+
expire individually — a meeting note and a decision lived equally long.
|
|
211
|
+
|
|
212
|
+
- rooms/_shared/0.1 (in place, additive, as `roomProfile` was):
|
|
213
|
+
SealedRecordBody gains optional `basis` (declared | observed | verified |
|
|
214
|
+
inferred), `confidence` (0–1), `evidence` (record or credential
|
|
215
|
+
citations, discriminated by `kind`), `validFor` (purposes as IRIs plus a
|
|
216
|
+
plain-text note) and `validUntil`, all inside the author's signature.
|
|
217
|
+
Provenance is display and weighting only, never authority; writers
|
|
218
|
+
SHOULD set `basis`, agent writers that do not know SHOULD write
|
|
219
|
+
`inferred`. Readers hide a record past its `validUntil` from default
|
|
220
|
+
listings, search and recall and MAY show it on explicit request; no host
|
|
221
|
+
enforces it and nothing about it is in the clear on sealed tiers.
|
|
222
|
+
Records written before verify unchanged; readers that predate the
|
|
223
|
+
members refuse bodies carrying them by rule (1), showing nothing rather
|
|
224
|
+
than something wrong.
|
|
225
|
+
- rooms/records/put 0.3 (new): an open room's `cleartext` carries the same
|
|
226
|
+
five members, stored and served as received, never acted on by the
|
|
227
|
+
host. `sealed` writes are unchanged.
|
|
228
|
+
- Rust, TypeScript, Go and Dart bindings regenerated.
|
|
229
|
+
|
|
230
|
+
Refs OpenVTC/verifiable-trust-infrastructure#2117, #2118.
|
|
231
|
+
|
|
14
232
|
## 0.27.1 — 2026-10-21
|
|
15
233
|
|
|
16
234
|
|
|
@@ -289,7 +289,8 @@ export interface ConsumeOptions<P, R> {
|
|
|
289
289
|
*
|
|
290
290
|
* Return a success response, an {@link ErrorResponse} to refuse, or nothing
|
|
291
291
|
* at all for a specification that defines no success response (§4.4.1) —
|
|
292
|
-
* which yields the `accepted` outcome.
|
|
292
|
+
* which yields the `accepted` outcome. A throw aborts the pipeline, releases
|
|
293
|
+
* the item-11 claim so the document can be resent, and is rethrown.
|
|
293
294
|
*/
|
|
294
295
|
handler: (doc: TrustTaskDocument<P>, parties: ResolvedParties) => Promise<TrustTaskDocument<R> | ErrorResponse | void> | TrustTaskDocument<R> | ErrorResponse | void;
|
|
295
296
|
/** Override the response `issuedAt` clock, for deterministic tests. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../src/_runtime/consume.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"consume.d.ts","sourceRoot":"","sources":["../../src/_runtime/consume.ts"],"names":[],"mappings":"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"}
|
package/dist/_runtime/consume.js
CHANGED
|
@@ -259,9 +259,34 @@ export async function consumeInbound(opts) {
|
|
|
259
259
|
case "fresh":
|
|
260
260
|
claim = { guard, digest };
|
|
261
261
|
break;
|
|
262
|
+
default:
|
|
263
|
+
// A guard answering with a verdict this runtime does not know has
|
|
264
|
+
// not said the document is fresh. Executing anyway would skip item
|
|
265
|
+
// 11, so fail closed, as for a guard that cannot answer at all.
|
|
266
|
+
return route({
|
|
267
|
+
code: "unavailable",
|
|
268
|
+
message: REPLAY_RECORD_UNAVAILABLE,
|
|
269
|
+
retryable: true,
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
let result;
|
|
274
|
+
try {
|
|
275
|
+
result = await handler(doc, resolved.parties);
|
|
276
|
+
}
|
|
277
|
+
catch (e) {
|
|
278
|
+
// The handler did not finish, so nothing says the effect happened.
|
|
279
|
+
// Holding the claim would answer every resend with an in-flight duplicate
|
|
280
|
+
// until the record expired: the document could not be retried, and the
|
|
281
|
+
// producer would never learn why.
|
|
282
|
+
try {
|
|
283
|
+
await claim?.guard.release?.(doc.id, claim.digest);
|
|
284
|
+
}
|
|
285
|
+
catch {
|
|
286
|
+
/* best-effort */
|
|
262
287
|
}
|
|
288
|
+
throw e;
|
|
263
289
|
}
|
|
264
|
-
const result = await handler(doc, resolved.parties);
|
|
265
290
|
if (result === undefined || result === null) {
|
|
266
291
|
// Fire-and-forget: nothing to cache, but the claim stands — the effect
|
|
267
292
|
// happened, and item 11 is about the effect, not about the response.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/_runtime/consume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,GAKd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,MAAM,EACN,cAAc,GAGf,MAAM,gBAAgB,CAAC;AAwBxB;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACpD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAChF,CAAC;AA2ID,wDAAwD;AACxD,MAAM,CAAC,MAAM,4BAA4B,GACvC,kEAAkE,CAAC;
|
|
1
|
+
{"version":3,"file":"consume.js","sourceRoot":"","sources":["../../src/_runtime/consume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,EACL,iBAAiB,EACjB,UAAU,EACV,cAAc,EACd,aAAa,GAKd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,iBAAiB,GAElB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,cAAc,GAGf,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,sBAAsB,EACtB,MAAM,EACN,cAAc,GAGf,MAAM,gBAAgB,CAAC;AAwBxB;;;;;;;GAOG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAkB;IACpD,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC;AAClF,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC;AAChF,CAAC;AA2ID,wDAAwD;AACxD,MAAM,CAAC,MAAM,4BAA4B,GACvC,kEAAkE,CAAC;AA0CrE;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,IAA0B;IAE1B,MAAM,EACJ,SAAS,EACT,IAAI,EACJ,WAAW,EACX,aAAa,EACb,MAAM,EACN,GAAG,EACH,KAAK,EACL,GAAG,EACH,UAAU,EACV,OAAO,EACP,KAAK,GACN,GAAG,IAAI,CAAC;IAET,MAAM,KAAK,GAAG,CAAC,MAAoB,EAAqB,EAAE;QACxD,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IAC5F,CAAC,CAAC;IAEF,6EAA6E;IAC7E,yEAAyE;IACzE,uEAAuE;IACvE,+CAA+C;IAC/C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,IAAI,SAAS,CACjB,8EAA8E;YAC5E,mEAAmE;YACnE,6EAA6E;YAC7E,mCAAmC,CACtC,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,0EAA0E;IAC1E,yEAAyE;IACzE,gCAAgC;IAChC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,SAAS,CACjB,iFAAiF;YAC/E,4EAA4E;YAC5E,2EAA2E;YAC3E,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,2BAA2B;IAC3B,IAAI,aAAa,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QAC1E,IAAI,OAA8D,CAAC;QACnE,IAAI,CAAC;YACH,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qEAAqE;YACrE,sEAAsE;YACtE,sEAAsE;YACtE,OAAO,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,EAAE,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,MAAM,MAAM,GAAG,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;YACzE,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE,kBAAkB;gBACxB,OAAO,EACL,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;oBACvC,CAAC,CAAC,8DAA8D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBACnF,CAAC,CAAC,2DAA2D;gBACjE,SAAS,EAAE,KAAK;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,qEAAqE;IACrE,qEAAqE;IACrE,6EAA6E;IAC7E,6EAA6E;IAC7E,6EAA6E;IAC7E,uBAAuB;IACvB,MAAM,KAAK,GAAG,iBAAiB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;IAExC,mEAAmE;IACnE,MAAM,QAAQ,GAAG,cAAc,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAChD,IAAI,OAAO,IAAI,QAAQ;QAAE,OAAO,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAE9E,6DAA6D;IAC7D,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;YACzB,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,EAAW,CAAC;gBAChB,IAAI,CAAC;oBACH,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC5C,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,EAAE,GAAG,KAAK,CAAC;gBACb,CAAC;gBACD,IAAI,CAAC,EAAE,EAAE,CAAC;oBACR,8DAA8D;oBAC9D,iEAAiE;oBACjE,gEAAgE;oBAChE,0DAA0D;oBAC1D,qEAAqE;oBACrE,mDAAmD;oBACnD,OAAO,KAAK,CAAC;wBACX,IAAI,EAAE,cAAc;wBACpB,OAAO,EAAE,0BAA0B;wBACnC,SAAS,EAAE,KAAK;qBACjB,CAAC,CAAC;gBACL,CAAC;gBACD,MAAM;YACR,CAAC;YACD,KAAK,iBAAiB;gBACpB,OAAO,KAAK,CAAC;oBACX,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,4BAA4B;oBACrC,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;YACL,KAAK,kBAAkB;gBACrB,MAAM;QACV,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,8EAA8E;IAC9E,MAAM,MAAM,GAAG,iBAAiB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAC5C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC;IAE1C,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,uEAAuE;IACvE,4EAA4E;IAC5E,mEAAmE;IACnE,IAAI,KAAyD,CAAC;IAC9D,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAEnC,0EAA0E;QAC1E,wEAAwE;QACxE,sEAAsE;QACtE,yEAAyE;QACzE,WAAW;QACX,MAAM,WAAW,GAAG,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;YAC9B,OAAO,KAAK,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,CAAC;QAED,IAAI,OAAO,CAAC;QACZ,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,iEAAiE;YACjE,gEAAgE;YAChE,uEAAuE;YACvE,oEAAoE;YACpE,sEAAsE;YACtE,2DAA2D;YAC3D,OAAO,KAAK,CAAC;gBACX,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,yBAAyB;gBAClC,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;QAED,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,WAAW;gBACd,OAAO,OAAO,CAAC,aAAa,KAAK,SAAS;oBACxC,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;oBACnD,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC9F,KAAK,UAAU;gBACb,OAAO,KAAK,CAAC;oBACX,IAAI,EAAE,YAAY;oBAClB,OAAO,EAAE,wBAAwB;oBACjC,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;YACL,KAAK,OAAO;gBACV,KAAK,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;gBAC1B,MAAM;YACR;gBACE,kEAAkE;gBAClE,mEAAmE;gBACnE,gEAAgE;gBAChE,OAAO,KAAK,CAAC;oBACX,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,yBAAyB;oBAClC,SAAS,EAAE,IAAI;iBAChB,CAAC,CAAC;QACP,CAAC;IACH,CAAC;IAED,IAAI,MAA2C,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,mEAAmE;QACnE,0EAA0E;QAC1E,uEAAuE;QACvE,kCAAkC;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;IAED,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QAC5C,uEAAuE;QACvE,qEAAqE;QACrE,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;QACvC,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IAC9B,CAAC;IACD,IAAI,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,0EAA0E;QAC1E,0EAA0E;QAC1E,wEAAwE;QACxE,0EAA0E;QAC1E,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;YACtC,MAAM,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAA8B,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,MAAM,CACnB,KAAyD,EACzD,EAAU,EACV,QAAiB;IAEjB,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,IAAI,CAAC;QACH,MAAM,KAAK,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,eAAe;IACjB,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,2BAA2B,CAAC;AAEtE,+DAA+D;AAC/D,MAAM,CAAC,MAAM,wBAAwB,GACnC,kFAAkF,CAAC;AAErF;;;GAGG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,yBAAyB,CAAC;AAEnE;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAA+B;IACtD,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CACpB,OAA6B,EAC7B,EAAU,EACV,MAAoB,EACpB,KAAoB;IAEpB,OAAO,UAAU,CAAC,OAAO,EAAE,EAAE,EAAE,cAAc,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -225,6 +225,15 @@ export declare const TRUST_TASK_ERROR_TYPE_URI = "https://trusttasks.org/spec/tr
|
|
|
225
225
|
*
|
|
226
226
|
* @param now Milliseconds since the epoch, as from `Date.now()`.
|
|
227
227
|
*/
|
|
228
|
+
/**
|
|
229
|
+
* Parse an RFC 3339 `date-time` (SPEC §4.2) to epoch milliseconds, or `NaN`.
|
|
230
|
+
*
|
|
231
|
+
* Stricter than `Date.parse`, which reads a timestamp with no zone designator
|
|
232
|
+
* as *local* time and accepts forms RFC 3339 does not (a bare date, `Jan 1
|
|
233
|
+
* 2026`). The Rust and Go runtimes refuse both, and an instant that depends on
|
|
234
|
+
* the consumer's time zone is not one instant at all.
|
|
235
|
+
*/
|
|
236
|
+
export declare function parseRfc3339(value: string): number;
|
|
228
237
|
export declare function validateBasic<P>(doc: TrustTaskDocument<P>, now: number, myVid: string): RejectReason | null;
|
|
229
238
|
/**
|
|
230
239
|
* SPEC §7.2 item 8 — a proof-bearing document on a non-bearer specification
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/_runtime/document.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/_runtime/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -37,9 +37,23 @@ export const TRUST_TASK_ERROR_TYPE_URI = "https://trusttasks.org/spec/trust-task
|
|
|
37
37
|
*
|
|
38
38
|
* @param now Milliseconds since the epoch, as from `Date.now()`.
|
|
39
39
|
*/
|
|
40
|
+
/**
|
|
41
|
+
* Parse an RFC 3339 `date-time` (SPEC §4.2) to epoch milliseconds, or `NaN`.
|
|
42
|
+
*
|
|
43
|
+
* Stricter than `Date.parse`, which reads a timestamp with no zone designator
|
|
44
|
+
* as *local* time and accepts forms RFC 3339 does not (a bare date, `Jan 1
|
|
45
|
+
* 2026`). The Rust and Go runtimes refuse both, and an instant that depends on
|
|
46
|
+
* the consumer's time zone is not one instant at all.
|
|
47
|
+
*/
|
|
48
|
+
export function parseRfc3339(value) {
|
|
49
|
+
if (!RFC3339.test(value))
|
|
50
|
+
return NaN;
|
|
51
|
+
return Date.parse(value.toUpperCase());
|
|
52
|
+
}
|
|
53
|
+
const RFC3339 = /^\d{4}-\d{2}-\d{2}[Tt]\d{2}:\d{2}:\d{2}(\.\d+)?([Zz]|[+-]\d{2}:\d{2})$/;
|
|
40
54
|
export function validateBasic(doc, now, myVid) {
|
|
41
55
|
if (doc.expiresAt !== undefined) {
|
|
42
|
-
const expiresAt =
|
|
56
|
+
const expiresAt = parseRfc3339(doc.expiresAt);
|
|
43
57
|
if (Number.isNaN(expiresAt)) {
|
|
44
58
|
return {
|
|
45
59
|
code: "malformedRequest",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/_runtime/document.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAqB,MAAM,YAAY,CAAC;AAuM9D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,kDAAkD,CAAC;AAE5F;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAC3B,GAAyB,EACzB,GAAW,EACX,KAAa;IAEb,IAAI,GAAG,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QAChC,MAAM,SAAS,GAAG,
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../../src/_runtime/document.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
* no window, so a record for a document carrying no `expiresAt` would have to
|
|
20
20
|
* be kept forever.
|
|
21
21
|
*/
|
|
22
|
-
import type
|
|
22
|
+
import { type RejectReason, type TrustTaskDocument } from "./document.js";
|
|
23
23
|
/** The clock-skew tolerance SPEC §4.2 sanctions ("typically ≤ 60s"), in ms. */
|
|
24
24
|
export declare const DEFAULT_SKEW_MS = 60000;
|
|
25
25
|
/**
|
|
@@ -96,7 +96,9 @@ export declare function validateFreshness<P>(doc: TrustTaskDocument<P>, now: num
|
|
|
96
96
|
* this consumer's willingness to execute it, which SPEC §7.2 makes the same
|
|
97
97
|
* instant as the end of the record's required retention.
|
|
98
98
|
*
|
|
99
|
-
* `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs
|
|
99
|
+
* `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs + skewMs`
|
|
100
|
+
* — the same bound {@link validateFreshness} accepts up to, so a replay arriving
|
|
101
|
+
* inside the skew allowance still finds the record.
|
|
100
102
|
* `undefined` means this policy places no bound on the document, in which case
|
|
101
103
|
* a consumer **MUST NOT** execute a consequential task on it — there is no
|
|
102
104
|
* window in which to keep the record.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"freshness.d.ts","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAgB,KAAK,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAExF,+EAA+E;AAC/E,eAAO,MAAM,eAAe,QAAS,CAAC;AAEtC;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,oEAAoE;AACpE,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,iBAAiB,EAAE,eAA6C,CAAC;AAE9E;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,eAIrC,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,gBAAgB,oFACiD,CAAC;AAE/E,8EAA8E;AAC9E,eAAO,MAAM,yBAAyB,qGACyD,CAAC;AAEhG,2EAA2E;AAC3E,eAAO,MAAM,kBAAkB,sGACiE,CAAC;AAEjG;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,0EAAqE,CAAC;AAErG;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,eAAe,GACtB,YAAY,GAAG,IAAI,CAyCrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAC5B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,MAAM,EAAE,eAAe,EACvB,GAAG,EAAE,MAAM,GACV,MAAM,GAAG,SAAS,CAWpB"}
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
* no window, so a record for a document carrying no `expiresAt` would have to
|
|
20
20
|
* be kept forever.
|
|
21
21
|
*/
|
|
22
|
+
import { parseRfc3339 } from "./document.js";
|
|
22
23
|
/** The clock-skew tolerance SPEC §4.2 sanctions ("typically ≤ 60s"), in ms. */
|
|
23
24
|
export const DEFAULT_SKEW_MS = 60_000;
|
|
24
25
|
/**
|
|
@@ -87,14 +88,14 @@ export function validateFreshness(doc, now, policy) {
|
|
|
87
88
|
retryable: false,
|
|
88
89
|
});
|
|
89
90
|
if (doc.issuedAt !== undefined) {
|
|
90
|
-
const issuedAt =
|
|
91
|
+
const issuedAt = parseRfc3339(doc.issuedAt);
|
|
91
92
|
if (Number.isNaN(issuedAt)) {
|
|
92
93
|
return malformed("issuedAt is not a valid RFC 3339 timestamp");
|
|
93
94
|
}
|
|
94
95
|
if (issuedAt > now + policy.skewMs)
|
|
95
96
|
return malformed(FUTURE_ISSUED_AT);
|
|
96
97
|
if (doc.expiresAt !== undefined) {
|
|
97
|
-
const expiresAt =
|
|
98
|
+
const expiresAt = parseRfc3339(doc.expiresAt);
|
|
98
99
|
// A malformed `expiresAt` is `validateBasic`'s to report; skip it here
|
|
99
100
|
// rather than raise a second, differently-worded rejection for it.
|
|
100
101
|
if (!Number.isNaN(expiresAt) && expiresAt <= issuedAt) {
|
|
@@ -120,23 +121,25 @@ export function validateFreshness(doc, now, policy) {
|
|
|
120
121
|
* this consumer's willingness to execute it, which SPEC §7.2 makes the same
|
|
121
122
|
* instant as the end of the record's required retention.
|
|
122
123
|
*
|
|
123
|
-
* `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs
|
|
124
|
+
* `expiresAt` fixes it where present; otherwise `issuedAt + maxAgeMs + skewMs`
|
|
125
|
+
* — the same bound {@link validateFreshness} accepts up to, so a replay arriving
|
|
126
|
+
* inside the skew allowance still finds the record.
|
|
124
127
|
* `undefined` means this policy places no bound on the document, in which case
|
|
125
128
|
* a consumer **MUST NOT** execute a consequential task on it — there is no
|
|
126
129
|
* window in which to keep the record.
|
|
127
130
|
*/
|
|
128
131
|
export function recordExpiry(doc, policy, now) {
|
|
129
132
|
if (doc.expiresAt !== undefined) {
|
|
130
|
-
const expiresAt =
|
|
133
|
+
const expiresAt = parseRfc3339(doc.expiresAt);
|
|
131
134
|
if (!Number.isNaN(expiresAt))
|
|
132
135
|
return expiresAt;
|
|
133
136
|
}
|
|
134
137
|
if (policy.maxAgeMs === undefined)
|
|
135
138
|
return undefined;
|
|
136
|
-
const issuedAt = doc.issuedAt === undefined ? NaN :
|
|
139
|
+
const issuedAt = doc.issuedAt === undefined ? NaN : parseRfc3339(doc.issuedAt);
|
|
137
140
|
// Fall back to `now` when the producer stamped no usable `issuedAt`: the
|
|
138
141
|
// record then lives a full window from first sight, which is the longest the
|
|
139
142
|
// document could still be arriving from a queue.
|
|
140
|
-
return (Number.isNaN(issuedAt) ? now : issuedAt) + policy.maxAgeMs;
|
|
143
|
+
return (Number.isNaN(issuedAt) ? now : issuedAt) + policy.maxAgeMs + policy.skewMs;
|
|
141
144
|
}
|
|
142
145
|
//# sourceMappingURL=freshness.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"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"}
|