@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.
Files changed (228) hide show
  1. package/CHANGELOG.md +218 -0
  2. package/dist/_runtime/consume.d.ts +2 -1
  3. package/dist/_runtime/consume.d.ts.map +1 -1
  4. package/dist/_runtime/consume.js +26 -1
  5. package/dist/_runtime/consume.js.map +1 -1
  6. package/dist/_runtime/document.d.ts +9 -0
  7. package/dist/_runtime/document.d.ts.map +1 -1
  8. package/dist/_runtime/document.js +15 -1
  9. package/dist/_runtime/document.js.map +1 -1
  10. package/dist/_runtime/freshness.d.ts +4 -2
  11. package/dist/_runtime/freshness.d.ts.map +1 -1
  12. package/dist/_runtime/freshness.js +9 -6
  13. package/dist/_runtime/freshness.js.map +1 -1
  14. package/dist/_shared/components.d.ts +346 -23
  15. package/dist/_shared/components.d.ts.map +1 -1
  16. package/dist/device/list/0.1/payload.d.ts +4 -4
  17. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  18. package/dist/device/list/0.1/payload.js +4 -2
  19. package/dist/device/list/0.1/payload.js.map +1 -1
  20. package/dist/device/list/0.2/payload.d.ts +4 -4
  21. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  22. package/dist/device/list/0.2/payload.js +4 -2
  23. package/dist/device/list/0.2/payload.js.map +1 -1
  24. package/dist/device/register/0.1/payload.d.ts +4 -4
  25. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  26. package/dist/device/register/0.1/payload.js +4 -2
  27. package/dist/device/register/0.1/payload.js.map +1 -1
  28. package/dist/device/register/0.2/payload.d.ts +4 -4
  29. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  30. package/dist/device/register/0.2/payload.js +4 -2
  31. package/dist/device/register/0.2/payload.js.map +1 -1
  32. package/dist/index.d.ts +25 -0
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +25 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/rooms/_shared/0.1/room.d.ts +1 -1
  37. package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
  38. package/dist/rooms/create/0.2/payload.d.ts +534 -0
  39. package/dist/rooms/create/0.2/payload.d.ts.map +1 -0
  40. package/dist/rooms/create/0.2/payload.js +293 -0
  41. package/dist/rooms/create/0.2/payload.js.map +1 -0
  42. package/dist/rooms/epoch/chain/0.2/payload.d.ts +534 -0
  43. package/dist/rooms/epoch/chain/0.2/payload.d.ts.map +1 -0
  44. package/dist/rooms/epoch/chain/0.2/payload.js +292 -0
  45. package/dist/rooms/epoch/chain/0.2/payload.js.map +1 -0
  46. package/dist/rooms/epoch/prune/0.2/payload.d.ts +467 -0
  47. package/dist/rooms/epoch/prune/0.2/payload.d.ts.map +1 -0
  48. package/dist/rooms/epoch/prune/0.2/payload.js +251 -0
  49. package/dist/rooms/epoch/prune/0.2/payload.js.map +1 -0
  50. package/dist/rooms/info/0.2/payload.d.ts +1129 -0
  51. package/dist/rooms/info/0.2/payload.d.ts.map +1 -0
  52. package/dist/rooms/info/0.2/payload.js +618 -0
  53. package/dist/rooms/info/0.2/payload.js.map +1 -0
  54. package/dist/rooms/keys/backfill/0.2/payload.d.ts +380 -0
  55. package/dist/rooms/keys/backfill/0.2/payload.d.ts.map +1 -0
  56. package/dist/rooms/keys/backfill/0.2/payload.js +197 -0
  57. package/dist/rooms/keys/backfill/0.2/payload.js.map +1 -0
  58. package/dist/rooms/keys/browse/0.1/payload.d.ts +4 -4
  59. package/dist/rooms/keys/browse/0.1/payload.js +2 -2
  60. package/dist/rooms/keys/browse/0.1/payload.js.map +1 -1
  61. package/dist/rooms/keys/browse/0.2/payload.d.ts +941 -0
  62. package/dist/rooms/keys/browse/0.2/payload.d.ts.map +1 -0
  63. package/dist/rooms/keys/browse/0.2/payload.js +558 -0
  64. package/dist/rooms/keys/browse/0.2/payload.js.map +1 -0
  65. package/dist/rooms/keys/chain/0.2/payload.d.ts +450 -0
  66. package/dist/rooms/keys/chain/0.2/payload.d.ts.map +1 -0
  67. package/dist/rooms/keys/chain/0.2/payload.js +248 -0
  68. package/dist/rooms/keys/chain/0.2/payload.js.map +1 -0
  69. package/dist/rooms/keys/profile/read/0.1/payload.d.ts +4 -4
  70. package/dist/rooms/keys/profile/read/0.1/payload.js +2 -2
  71. package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -1
  72. package/dist/rooms/keys/read/0.1/payload.d.ts +4 -4
  73. package/dist/rooms/keys/read/0.1/payload.js +2 -2
  74. package/dist/rooms/keys/read/0.1/payload.js.map +1 -1
  75. package/dist/rooms/owner/anchor/0.1/payload.d.ts +4 -4
  76. package/dist/rooms/owner/anchor/0.1/payload.js +2 -2
  77. package/dist/rooms/owner/anchor/0.1/payload.js.map +1 -1
  78. package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
  79. package/dist/rooms/records/get/0.1/payload.js +2 -2
  80. package/dist/rooms/records/get/0.1/payload.js.map +1 -1
  81. package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
  82. package/dist/rooms/records/get/0.2/payload.js +2 -2
  83. package/dist/rooms/records/get/0.2/payload.js.map +1 -1
  84. package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
  85. package/dist/rooms/records/list/0.1/payload.js +2 -2
  86. package/dist/rooms/records/list/0.1/payload.js.map +1 -1
  87. package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
  88. package/dist/rooms/records/list/0.2/payload.js +2 -2
  89. package/dist/rooms/records/list/0.2/payload.js.map +1 -1
  90. package/dist/rooms/records/list/0.3/payload.d.ts +970 -0
  91. package/dist/rooms/records/list/0.3/payload.d.ts.map +1 -0
  92. package/dist/rooms/records/list/0.3/payload.js +526 -0
  93. package/dist/rooms/records/list/0.3/payload.js.map +1 -0
  94. package/dist/rooms/records/prune/0.1/payload.d.ts +706 -0
  95. package/dist/rooms/records/prune/0.1/payload.d.ts.map +1 -0
  96. package/dist/rooms/records/prune/0.1/payload.js +374 -0
  97. package/dist/rooms/records/prune/0.1/payload.js.map +1 -0
  98. package/dist/rooms/records/put/0.3/payload.d.ts +1212 -0
  99. package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -0
  100. package/dist/rooms/records/put/0.3/payload.js +646 -0
  101. package/dist/rooms/records/put/0.3/payload.js.map +1 -0
  102. package/dist/rooms/records/retention/set/0.1/payload.d.ts +521 -0
  103. package/dist/rooms/records/retention/set/0.1/payload.d.ts.map +1 -0
  104. package/dist/rooms/records/retention/set/0.1/payload.js +276 -0
  105. package/dist/rooms/records/retention/set/0.1/payload.js.map +1 -0
  106. package/dist/vault/credentials/present/0.1/payload.d.ts +407 -0
  107. package/dist/vault/credentials/present/0.1/payload.d.ts.map +1 -0
  108. package/dist/vault/credentials/present/0.1/payload.js +217 -0
  109. package/dist/vault/credentials/present/0.1/payload.js.map +1 -0
  110. package/dist/vault/credentials/query/0.1/payload.d.ts +12 -0
  111. package/dist/vault/credentials/query/0.1/payload.d.ts.map +1 -1
  112. package/dist/vault/credentials/query/0.1/payload.js +4 -0
  113. package/dist/vault/credentials/query/0.1/payload.js.map +1 -1
  114. package/dist/vta/webvh/dids/create/1.2/payload.d.ts +961 -0
  115. package/dist/vta/webvh/dids/create/1.2/payload.d.ts.map +1 -0
  116. package/dist/vta/webvh/dids/create/1.2/payload.js +480 -0
  117. package/dist/vta/webvh/dids/create/1.2/payload.js.map +1 -0
  118. package/dist/vtc/_shared/0.1/room-migration.d.ts +16 -0
  119. package/dist/vtc/_shared/0.1/room-migration.d.ts.map +1 -0
  120. package/dist/vtc/_shared/0.1/room-migration.js +6 -0
  121. package/dist/vtc/_shared/0.1/room-migration.js.map +1 -0
  122. package/dist/vtc/_shared/0.1/room-storage.d.ts +1 -1
  123. package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -1
  124. package/dist/vtc/_shared/0.2/room-storage.d.ts +16 -0
  125. package/dist/vtc/_shared/0.2/room-storage.d.ts.map +1 -0
  126. package/dist/vtc/_shared/0.2/room-storage.js +6 -0
  127. package/dist/vtc/_shared/0.2/room-storage.js.map +1 -0
  128. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts +31 -0
  129. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts.map +1 -0
  130. package/dist/vtc/admin/events/_shared/0.4/topic.js +6 -0
  131. package/dist/vtc/admin/events/_shared/0.4/topic.js.map +1 -0
  132. package/dist/vtc/admin/events/event/0.4/payload.d.ts +172 -0
  133. package/dist/vtc/admin/events/event/0.4/payload.d.ts.map +1 -0
  134. package/dist/vtc/admin/events/event/0.4/payload.js +103 -0
  135. package/dist/vtc/admin/events/event/0.4/payload.js.map +1 -0
  136. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts +409 -0
  137. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts.map +1 -0
  138. package/dist/vtc/admin/events/subscribe/0.4/payload.js +238 -0
  139. package/dist/vtc/admin/events/subscribe/0.4/payload.js.map +1 -0
  140. package/dist/vtc/rooms/get/0.2/payload.d.ts +1966 -0
  141. package/dist/vtc/rooms/get/0.2/payload.d.ts.map +1 -0
  142. package/dist/vtc/rooms/get/0.2/payload.js +976 -0
  143. package/dist/vtc/rooms/get/0.2/payload.js.map +1 -0
  144. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts +595 -0
  145. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts.map +1 -0
  146. package/dist/vtc/rooms/storage/migrate/0.2/payload.js +336 -0
  147. package/dist/vtc/rooms/storage/migrate/0.2/payload.js.map +1 -0
  148. package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1 -1
  149. package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -1
  150. package/dist/vtc/storage/configs/create/0.2/payload.d.ts +1360 -0
  151. package/dist/vtc/storage/configs/create/0.2/payload.d.ts.map +1 -0
  152. package/dist/vtc/storage/configs/create/0.2/payload.js +783 -0
  153. package/dist/vtc/storage/configs/create/0.2/payload.js.map +1 -0
  154. package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1 -1
  155. package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -1
  156. package/dist/vtc/storage/configs/get/0.2/payload.d.ts +1854 -0
  157. package/dist/vtc/storage/configs/get/0.2/payload.d.ts.map +1 -0
  158. package/dist/vtc/storage/configs/get/0.2/payload.js +1075 -0
  159. package/dist/vtc/storage/configs/get/0.2/payload.js.map +1 -0
  160. package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1 -1
  161. package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -1
  162. package/dist/vtc/storage/configs/list/0.2/payload.d.ts +1955 -0
  163. package/dist/vtc/storage/configs/list/0.2/payload.d.ts.map +1 -0
  164. package/dist/vtc/storage/configs/list/0.2/payload.js +1125 -0
  165. package/dist/vtc/storage/configs/list/0.2/payload.js.map +1 -0
  166. package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1 -1
  167. package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -1
  168. package/dist/vtc/storage/configs/update/0.2/payload.d.ts +1362 -0
  169. package/dist/vtc/storage/configs/update/0.2/payload.d.ts.map +1 -0
  170. package/dist/vtc/storage/configs/update/0.2/payload.js +782 -0
  171. package/dist/vtc/storage/configs/update/0.2/payload.js.map +1 -0
  172. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +1 -1
  173. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -1
  174. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts +979 -0
  175. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts.map +1 -0
  176. package/dist/vtc/storage/credentials/set/0.2/payload.js +573 -0
  177. package/dist/vtc/storage/credentials/set/0.2/payload.js.map +1 -0
  178. package/package.json +1 -1
  179. package/src/_runtime/consume.ts +26 -2
  180. package/src/_runtime/document.ts +17 -1
  181. package/src/_runtime/freshness.ts +9 -7
  182. package/src/_shared/components.ts +372 -23
  183. package/src/device/list/0.1/payload.ts +4 -2
  184. package/src/device/list/0.2/payload.ts +4 -2
  185. package/src/device/register/0.1/payload.ts +4 -2
  186. package/src/device/register/0.2/payload.ts +4 -2
  187. package/src/index.ts +25 -0
  188. package/src/rooms/_shared/0.1/room.ts +1 -1
  189. package/src/rooms/create/0.2/payload.ts +364 -0
  190. package/src/rooms/epoch/chain/0.2/payload.ts +347 -0
  191. package/src/rooms/epoch/prune/0.2/payload.ts +315 -0
  192. package/src/rooms/info/0.2/payload.ts +700 -0
  193. package/src/rooms/keys/backfill/0.2/payload.ts +260 -0
  194. package/src/rooms/keys/browse/0.1/payload.ts +2 -2
  195. package/src/rooms/keys/browse/0.2/payload.ts +628 -0
  196. package/src/rooms/keys/chain/0.2/payload.ts +308 -0
  197. package/src/rooms/keys/profile/read/0.1/payload.ts +2 -2
  198. package/src/rooms/keys/read/0.1/payload.ts +2 -2
  199. package/src/rooms/owner/anchor/0.1/payload.ts +2 -2
  200. package/src/rooms/records/get/0.1/payload.ts +2 -2
  201. package/src/rooms/records/get/0.2/payload.ts +2 -2
  202. package/src/rooms/records/list/0.1/payload.ts +2 -2
  203. package/src/rooms/records/list/0.2/payload.ts +2 -2
  204. package/src/rooms/records/list/0.3/payload.ts +601 -0
  205. package/src/rooms/records/prune/0.1/payload.ts +451 -0
  206. package/src/rooms/records/put/0.3/payload.ts +741 -0
  207. package/src/rooms/records/retention/set/0.1/payload.ts +338 -0
  208. package/src/vault/credentials/present/0.1/payload.ts +283 -0
  209. package/src/vault/credentials/query/0.1/payload.ts +8 -0
  210. package/src/vta/webvh/dids/create/1.2/payload.ts +660 -0
  211. package/src/vtc/_shared/0.1/room-migration.ts +17 -0
  212. package/src/vtc/_shared/0.1/room-storage.ts +1 -1
  213. package/src/vtc/_shared/0.2/room-storage.ts +17 -0
  214. package/src/vtc/admin/events/_shared/0.4/topic.ts +32 -0
  215. package/src/vtc/admin/events/event/0.4/payload.ts +137 -0
  216. package/src/vtc/admin/events/subscribe/0.4/payload.ts +318 -0
  217. package/src/vtc/rooms/get/0.2/payload.ts +1372 -0
  218. package/src/vtc/rooms/storage/migrate/0.2/payload.ts +408 -0
  219. package/src/vtc/storage/configs/create/0.1/payload.ts +1 -1
  220. package/src/vtc/storage/configs/create/0.2/payload.ts +830 -0
  221. package/src/vtc/storage/configs/get/0.1/payload.ts +1 -1
  222. package/src/vtc/storage/configs/get/0.2/payload.ts +1110 -0
  223. package/src/vtc/storage/configs/list/0.1/payload.ts +1 -1
  224. package/src/vtc/storage/configs/list/0.2/payload.ts +1177 -0
  225. package/src/vtc/storage/configs/update/0.1/payload.ts +1 -1
  226. package/src/vtc/storage/configs/update/0.2/payload.ts +829 -0
  227. package/src/vtc/storage/credentials/set/0.1/payload.ts +1 -1
  228. 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":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,OAAO,EAKL,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,iBAAiB,EACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAML,KAAK,eAAe,EACrB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,YAAY,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,WAAW,GAAG,aAAa,CAErE;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,IAAI,aAAa,CAEtD;AAED,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,8EAA8E;IAC9E,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAClE;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,WAAW;AACrB;;;GAGG;AACD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE;AAC3C;;;;;GAKG;GACD;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE;AAC7B;;;;GAIG;GACD;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,CAAC;AAEjC,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;OAQG;IACH,QAAQ,CACN,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,OAAO,GACf,OAAO,GAAG;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;KAAE,CAAC;CAC1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,aAAa;AACvB,iFAAiF;AAC/E;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE;AAClD;;;;GAIG;GACD;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,CAAC;AAElC,6CAA6C;AAC7C,MAAM,MAAM,cAAc,CAAC,CAAC;AAC1B,uEAAuE;AACrE;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;CAAE;AACrD;;;GAGG;GACD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE;AAC5C;;;;;;GAMG;GACD;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,YAAY,CAAA;CAAE;AAC9C;;;;;;;;;GASG;GACD;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE;AACtB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;GACD;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,aAAa,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAAC;AAEtE,wDAAwD;AACxD,eAAO,MAAM,4BAA4B,0EAC2B,CAAC;AAErE,MAAM,WAAW,cAAc,CAAC,CAAC,EAAE,CAAC;IAClC,SAAS,EAAE,gBAAgB,CAAC;IAC5B,6EAA6E;IAC7E,IAAI,EAAE,UAAU,CAAC;IACjB,WAAW,EAAE,WAAW,CAAC;IACzB,iEAAiE;IACjE,aAAa,EAAE,aAAa,CAAC;IAC7B;;;;OAIG;IACH,MAAM,EAAE,aAAa,CAAC;IACtB,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAC1B,oEAAoE;IACpE,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,UAAU,EAAE,MAAM,MAAM,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,EAAE,CACP,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE,eAAe,KAEtB,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,aAAa,GAAG,IAAI,CAAC,GACpD,iBAAiB,CAAC,CAAC,CAAC,GACpB,aAAa,GACb,IAAI,CAAC;IACT,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EACvC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAwO5B;AAwBD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,8BAA8B,CAAC;AAEtE,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,0FAC+C,CAAC;AAErF;;;GAGG;AACH,eAAO,MAAM,yBAAyB,4BAA4B,CAAC;AAanE;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,CAAC,EACtB,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,YAAY,EACpB,KAAK,CAAC,EAAE,MAAM,MAAM,GACnB,aAAa,CAEf"}
@@ -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;AAyCrE;;;;;;;;;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;QACV,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAEpD,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"}
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":"AAAA;;;;;GAKG;AAEH,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAE9D,iFAAiF;AACjF,MAAM,WAAW,KAAK;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,qGAAqG;IACrG,EAAE,EAAE,MAAM,CAAC;IACX;;;;;OAKG;IACH,eAAe,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,QAAQ;IACvB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,8FAA8F;IAC9F,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uHAAuH;IACvH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,oFAAoF;IACpF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,IAAI,CAAC,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,sDAAsD;AACtD,MAAM,WAAW,iBAAiB,CAAC,CAAC;IAClC,+CAA+C;IAC/C,EAAE,EAAE,MAAM,CAAC;IACX,wEAAwE;IACxE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;OASG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,iEAAiE;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd;;;;OAIG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,+EAA+E;AAC/E,MAAM,WAAW,YAAY;IAC3B;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,yDAAyD;AACzD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,qCAAqC;AACrC,MAAM,MAAM,aAAa,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,+DAA+D;IAC/D,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,OAAO,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wEAAwE;AACxE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,yBAAyB,qDAAqD,CAAC;AAE5F;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GACZ,YAAY,GAAG,IAAI,CA6BrB;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,UAAU,GACf,YAAY,GAAG,IAAI,CAWrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,GAAG,EAAE,iBAAiB,CAAC,CAAC,CAAC,EACzB,IAAI,EAAE,UAAU,GACf,YAAY,GAAG,IAAI,CAwBrB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,GAAG,GAAE,MAAM,MAAuC,GACjD,aAAa,CAkCf;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAC1B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,YAAY,EACrB,GAAG,CAAC,EAAE,MAAM,MAAM,GACjB,aAAa,CAEf;AAED,oEAAoE;AACpE,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CASjE;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,CAAC,EAC9B,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,CAAC,EACV,GAAG,GAAE,MAAM,MAAuC,GACjD,iBAAiB,CAAC,CAAC,CAAC,CAgBtB"}
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 = Date.parse(doc.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":"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"}
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 { RejectReason, TrustTaskDocument } from "./document.js";
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,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAErE,+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;;;;;;;;;GASG;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"}
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 = Date.parse(doc.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 = Date.parse(doc.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 = Date.parse(doc.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 : Date.parse(doc.issuedAt);
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":"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"}
1
+ {"version":3,"file":"freshness.js","sourceRoot":"","sources":["../../src/_runtime/freshness.ts"],"names":[],"mappings":"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"}