@openvtc/trust-tasks 0.26.7 → 0.26.9

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 (35) hide show
  1. package/CHANGELOG.md +91 -0
  2. package/dist/_shared/components.d.ts +9 -0
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/external/credentials/issue/0.3/payload.d.ts +1523 -0
  5. package/dist/external/credentials/issue/0.3/payload.d.ts.map +1 -0
  6. package/dist/external/credentials/issue/0.3/payload.js +847 -0
  7. package/dist/external/credentials/issue/0.3/payload.js.map +1 -0
  8. package/dist/index.d.ts +5 -0
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +5 -0
  11. package/dist/index.js.map +1 -1
  12. package/dist/vta/_shared/0.5/witness-party.d.ts +16 -0
  13. package/dist/vta/_shared/0.5/witness-party.d.ts.map +1 -0
  14. package/dist/vta/_shared/0.5/witness-party.js +6 -0
  15. package/dist/vta/_shared/0.5/witness-party.js.map +1 -0
  16. package/dist/vta/witness/accept/0.1/payload.d.ts +481 -0
  17. package/dist/vta/witness/accept/0.1/payload.d.ts.map +1 -0
  18. package/dist/vta/witness/accept/0.1/payload.js +264 -0
  19. package/dist/vta/witness/accept/0.1/payload.js.map +1 -0
  20. package/dist/vta/witness/open/0.1/payload.d.ts +500 -0
  21. package/dist/vta/witness/open/0.1/payload.d.ts.map +1 -0
  22. package/dist/vta/witness/open/0.1/payload.js +259 -0
  23. package/dist/vta/witness/open/0.1/payload.js.map +1 -0
  24. package/dist/vta/witness/present/0.1/payload.d.ts +303 -0
  25. package/dist/vta/witness/present/0.1/payload.d.ts.map +1 -0
  26. package/dist/vta/witness/present/0.1/payload.js +170 -0
  27. package/dist/vta/witness/present/0.1/payload.js.map +1 -0
  28. package/package.json +1 -1
  29. package/src/_shared/components.ts +8 -0
  30. package/src/external/credentials/issue/0.3/payload.ts +999 -0
  31. package/src/index.ts +5 -0
  32. package/src/vta/_shared/0.5/witness-party.ts +17 -0
  33. package/src/vta/witness/accept/0.1/payload.ts +326 -0
  34. package/src/vta/witness/open/0.1/payload.ts +336 -0
  35. package/src/vta/witness/present/0.1/payload.ts +210 -0
package/CHANGELOG.md CHANGED
@@ -11,6 +11,97 @@ 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.26.9 — 2026-10-15
15
+
16
+
17
+ ### Specifications
18
+
19
+ - **external**: Credentials/issue 0.3 — at most 64 presigned requests per batch, responseTooLarge when the sealed answer would exceed its bound (#781)
20
+
21
+ 0.2 let a presign batch hold 128 operations and bounded the response's
22
+ sealedCredential at 262144 characters, on the estimate that 128 presigned
23
+ requests are about 128 KiB of cleartext and a third more once armored.
24
+ That estimate does not hold: a sealed-transfer bundle's overhead depends
25
+ on how its cleartext is encoded inside the seal and can be several times
26
+ the cleartext, and objectKey and uploadId may each be 1024 characters, so
27
+ a long key or upload id lengthens every URL in the set. A batch of 128
28
+ could produce an answer the schema forbids, and 0.2 said nothing about
29
+ what a custodian does then.
30
+
31
+ external/credentials/issue 0.3 (draft; a narrowed constraint, so a new
32
+ MINOR per SPEC §5.2):
33
+ - PresignBatch.requests maxItems 128 -> 64; every prose 128 for this task
34
+ updated (summary, Direct uploads, Definitions, examples, Security).
35
+ - New error external/credentials/issue:responseTooLarge: a custodian whose
36
+ sealed answer to a valid batch would exceed the sealedCredential bound
37
+ refuses it — never truncates the set, never answers over the bound —
38
+ with optional details.maxOperations; the caller SHOULD split and ask
39
+ again. It is a new conformance item 7, after the batch, ceiling and TTL
40
+ checks and before the rate check; a refused batch does not count
41
+ against the binding's rate. The custodian learns the size by presigning
42
+ and sealing (no provider contact), so noKeyAgreement precedes it, and a
43
+ set built and refused is discarded unreturned and unlogged.
44
+ - The maxDocumentBytes rationale is corrected; sealedCredential stays at
45
+ 262144 and maxDocumentBytes at 65536 / 294912, which still hold a bundle
46
+ at its bound plus the echoed batch, envelope and proof.
47
+
48
+ Why cap rather than raise the bound: presigned requests are bearer
49
+ authority until they expire (five minutes at most for direct-upload
50
+ targets), so presigning more than can be used before expiry only widens
51
+ exposure; 64 parts of S3's 5 MiB minimum is 320 MiB per batch, and larger
52
+ uploads use larger parts or ask again; a larger answer must cross
53
+ mediators, DIDComm envelopes whose nesting multiplies base64 expansion,
54
+ and memory-constrained custodians and hosts.
55
+
56
+ Invalid examples: a 65-operation batch (request) and a response echoing
57
+ 65 operations. external/_shared/0.1 already names PresignedRequestSet for
58
+ "0.2 and later" and keeps its own 128 bound for 0.2, so it is unchanged.
59
+ rooms/blobs/upload/begin/0.2's 128 part targets per answer stays true: a
60
+ host fills such an answer with two issuances. Bindings regenerated.
61
+
62
+ ## 0.26.8 — 2026-10-15
63
+
64
+
65
+ ### Added
66
+
67
+ - **vta/witness**: The client carries the witness messages — vta/witness/{open,present,accept} replace vta/witness/request (#779)
68
+
69
+ vta/witness/request/0.1 (#777) had the VTA make both round trips to the
70
+ witness itself, as the principal's relationship DID. It cannot: a witness
71
+ checks that the transport-proven sender of each document is its issuer and
72
+ replies to that sender, and the relationship DID's one mediator connection
73
+ belongs to whoever holds the relationship, normally the client. So the
74
+ client carries the messages and the VTA builds, signs and verifies, in
75
+ three steps:
76
+
77
+ - vta/witness/open/0.1: checks key custody, the credentials and the member
78
+ link up front, opens a session record, and returns the witness/session
79
+ document signed as relationshipDid for the client to send.
80
+ - vta/witness/present/0.1: takes the witness's session #response verbatim,
81
+ checks it is the witness's for this session, builds the relationship
82
+ presentation (and the member presentation) bound to its challenge and
83
+ domain, and returns the signed witness/session/submit document.
84
+ - vta/witness/accept/0.1: takes the submit #response verbatim, verifies the
85
+ VWC as #777 did, stores it with its evidence, and answers as #777 did.
86
+
87
+ The record is keyed by the session id within the caller's contexts,
88
+ expires, holds no presentation or challenge, and moves opened -> presented
89
+ -> accepted. Every handed-back document is checked against it (type,
90
+ issuer = the witness, recipient = relationshipDid, threadId, the witness's
91
+ proof) before it is read, so nothing from another session can be spliced
92
+ in. Each step is safe to repeat: open's duplicate is inert, present's
93
+ duplicates are spent by the witness's single-use challenge, and accept
94
+ answers the same outcome again without storing twice.
95
+
96
+ Shared rules are in vta/_shared/0.5/CONVENTIONS.md and the shared shapes
97
+ (SessionId, CarriedDocument) in witness-party.schema.json. The
98
+ witnessRequest capability now covers the three tasks.
99
+
100
+ vta/witness/request/0.1 is published (release #778), so it is not edited:
101
+ it is retired in place, supersededBy vta/witness/open/0.1, with a status
102
+ note naming its successors, why it cannot be implemented, and that no
103
+ implementation shipped it.
104
+
14
105
  ## 0.26.7 — 2026-10-15
15
106
 
16
107
 
@@ -1081,6 +1081,10 @@ export type Sensitivity = "normal" | "high";
1081
1081
  * Which transport a task is acting on. This is the discriminator: it selects which member of `config` is meaningful, and a payload naming one kind with another's config is malformed rather than merely ignored.
1082
1082
  */
1083
1083
  export type ServiceKind = "didcomm" | "rest" | "tsp" | "webauthn";
1084
+ /**
1085
+ * The id of the witness/session document the VTA built in vta/witness/open: the session's name, the thread every document of the session is on, and the value the VWC carries as taskContext. The VTA keys its state for the session by it.
1086
+ */
1087
+ export type SessionId = string;
1084
1088
  /**
1085
1089
  * `EdDSA` pairs with an `ed25519` key; `ES256` pairs with a `p256` key; `ML-DSA-44` and `ML-DSA-65` pair with `mldsa44` and `mldsa65` keys respectively. An `x25519` key performs key agreement and can sign nothing, so no algorithm here is valid for one. These are JOSE algorithm identifiers, externally owned, so they are carried verbatim and never re-cased (SPEC.md §4.10 rule 5); the ML-DSA names are those RFC 9964 registers in the JOSE Web Signature and Encryption Algorithms registry, which is why their hyphenated casing differs from the `keyType` values beside them — those are specification-defined. The set is expected to grow as algorithms are registered. The enumeration remains closed: an unrecognised algorithm is refused rather than silently substituted with a supported one.
1086
1090
  */
@@ -4231,6 +4235,11 @@ export interface CapabilityScopeListed {
4231
4235
  export interface CapabilityScopeNone {
4232
4236
  scope: "none";
4233
4237
  }
4238
+ /**
4239
+ * A whole Trust Task document — `id`, `type`, `payload` and every other member, `proof` included — carried between the VTA and the witness by the client: one the VTA built and signed for the client to send, or one the witness returned for the client to hand back. Typed as an open object so every member survives a round trip: carried exactly as built or received, never re-serialised, because its proof is over itself. Its envelope is checked by the VTA against the session record (CONVENTIONS.md §3), not by this schema.
4240
+ */
4241
+ export interface CarriedDocument {
4242
+ }
4234
4243
  /**
4235
4244
  * The terms of a `chunkedTrustTask` transfer, committed before any chunk moves. On export the recipient states them in the descriptor; on import the producer pre-commits them in the request and the recipient echoes them. Either way the manifest arrives in a document whose proof is REQUIRED, so the per-chunk digests are authenticated by the party that computed them and each chunk can be verified — and a single bad chunk re-fetched or refused — on arrival rather than only after reassembly.
4236
4245
  *