@openvtc/trust-tasks 0.26.5 → 0.26.7

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 (48) hide show
  1. package/CHANGELOG.md +80 -0
  2. package/dist/_shared/components.d.ts +3 -3
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/device/list/0.1/payload.d.ts +4 -4
  5. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  6. package/dist/device/list/0.1/payload.js +4 -2
  7. package/dist/device/list/0.1/payload.js.map +1 -1
  8. package/dist/device/list/0.2/payload.d.ts +4 -4
  9. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.2/payload.js +4 -2
  11. package/dist/device/list/0.2/payload.js.map +1 -1
  12. package/dist/device/register/0.1/payload.d.ts +4 -4
  13. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  14. package/dist/device/register/0.1/payload.js +4 -2
  15. package/dist/device/register/0.1/payload.js.map +1 -1
  16. package/dist/device/register/0.2/payload.d.ts +4 -4
  17. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.2/payload.js +4 -2
  19. package/dist/device/register/0.2/payload.js.map +1 -1
  20. package/dist/external/accounts/secret/set/0.1/payload.d.ts +4 -4
  21. package/dist/external/accounts/secret/set/0.1/payload.js +2 -2
  22. package/dist/external/accounts/secret/set/0.1/payload.js.map +1 -1
  23. package/dist/external/credentials/issue/0.1/payload.d.ts +4 -4
  24. package/dist/external/credentials/issue/0.1/payload.js +2 -2
  25. package/dist/external/credentials/issue/0.1/payload.js.map +1 -1
  26. package/dist/external/credentials/issue/0.2/payload.d.ts +1517 -0
  27. package/dist/external/credentials/issue/0.2/payload.d.ts.map +1 -0
  28. package/dist/external/credentials/issue/0.2/payload.js +845 -0
  29. package/dist/external/credentials/issue/0.2/payload.js.map +1 -0
  30. package/dist/index.d.ts +2 -0
  31. package/dist/index.d.ts.map +1 -1
  32. package/dist/index.js +2 -0
  33. package/dist/index.js.map +1 -1
  34. package/dist/vta/witness/request/0.1/payload.d.ts +597 -0
  35. package/dist/vta/witness/request/0.1/payload.d.ts.map +1 -0
  36. package/dist/vta/witness/request/0.1/payload.js +311 -0
  37. package/dist/vta/witness/request/0.1/payload.js.map +1 -0
  38. package/package.json +1 -1
  39. package/src/_shared/components.ts +5 -3
  40. package/src/device/list/0.1/payload.ts +4 -2
  41. package/src/device/list/0.2/payload.ts +4 -2
  42. package/src/device/register/0.1/payload.ts +4 -2
  43. package/src/device/register/0.2/payload.ts +4 -2
  44. package/src/external/accounts/secret/set/0.1/payload.ts +2 -2
  45. package/src/external/credentials/issue/0.1/payload.ts +2 -2
  46. package/src/external/credentials/issue/0.2/payload.ts +995 -0
  47. package/src/index.ts +2 -0
  48. package/src/vta/witness/request/0.1/payload.ts +405 -0
package/CHANGELOG.md CHANGED
@@ -11,6 +11,86 @@ 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.7 — 2026-10-15
15
+
16
+
17
+ ### Added
18
+
19
+ - **vta/witness**: Vta/witness/request — the VTA runs a witnessed session for its principal's relationship (#777)
20
+
21
+ A Verifiable Witness Credential is issued to the participating party of a
22
+ witness/session, who presents its relationship credential bound to the
23
+ session's challenge. A principal whose keys and credentials live in a VTA
24
+ cannot do that from a client that holds neither. This adds
25
+ vta/witness/request/0.1: the client names a witness, the relationship
26
+ (relationshipDid, counterpartyDid, the enclosing thread) and credentials by
27
+ vault handle; the VTA opens the session as the relationship DID, builds and
28
+ signs the presentation itself, submits, verifies the VWC as a verifier of
29
+ the evidence would (issuer = session recipient = response signer,
30
+ taskContext/taskDigest over the session document as sent, subject and
31
+ object digest, vwcDigestMultibase), and stores it in the credential vault
32
+ with its evidence — the session document as sent and the submit #response
33
+ as received. It answers with the vault handle, the digest and the two
34
+ evidence documents (which carry the VWC); never a key, a presentation or
35
+ the challenge.
36
+
37
+ Membership evidence is optional. A VMC naming the relationship DID rides
38
+ in the relationship presentation; one naming a member DID needs an
39
+ explicit memberDid, and the VTA builds a second presentation by that DID
40
+ bound to the same session. witness/session/submit/0.1 has no member for
41
+ it, so its carriage is the witness's own (SPEC 4.5.1 leaves an ext
42
+ namespace's semantics to its controller); the OpenVTC carriage is cited
43
+ non-normatively.
44
+
45
+ Authorization is standing over every context the task touches, expressed
46
+ as the new witnessRequest capability (witness-request in device/_shared
47
+ 0.1), which is not sign and is not satisfied by sign. Errors: notFound,
48
+ credentialMismatch, noMatchingProtocol, witnessUnreachable (retryable),
49
+ witnessRefused, challengeMismatch, presentationInvalid (the witness's own
50
+ code and message in details), vwcInvalid.
51
+
52
+ ## 0.26.6 — 2026-10-15
53
+
54
+
55
+ ### Specifications
56
+
57
+ - **external**: Credentials/issue 0.2 — batched presigned requests with signed length and checksum, multipart and head, for direct uploads (#775)
58
+
59
+ rooms/blobs/upload/begin/0.2 lets a host answer with direct-to-storage
60
+ targets whose PUT binds each part's exact length and SHA-256 (item 17),
61
+ and commit/0.2 has the host verify the object at storage and complete a
62
+ multipart upload before recording (item 3). A host that holds no storage
63
+ credential asks its custodian for each request through
64
+ external/credentials/issue on an s3-static-presign account, and 0.1 can
65
+ express none of it: one GET/PUT/DELETE per issuance, no signed headers,
66
+ no multipart operations, no HEAD.
67
+
68
+ external/credentials/issue 0.2:
69
+ - the payload takes either `scope` (session and token models, as 0.1)
70
+ or `presign` (s3-static-presign only): one object, at most one
71
+ multipart upload of it, up to 128 operations — put, get, head, delete,
72
+ create-multipart, upload-part, list-parts, complete-multipart,
73
+ abort-multipart;
74
+ - the custodian signs Content-Length and x-amz-checksum-sha256 into put
75
+ and upload-part, uploadId/partNumber into the query,
76
+ x-amz-checksum-algorithm into create-multipart, x-amz-mp-object-size
77
+ into complete-multipart, x-amz-checksum-mode into head, so storage is
78
+ the enforcer;
79
+ - every operation is presigned, none performed: issuance keeps needing
80
+ no egress, and verifying the object stays the host's duty;
81
+ - the binding ceiling is unchanged: each operation is authorized by
82
+ put / get / delete (multipart writes by put, head by get, abort by
83
+ delete), so no account record or other task changes shape;
84
+ - a batch counts once against the binding's rate;
85
+ - new errors requestShapeMismatch and invalidBatch; the sealed cleartext
86
+ for presign is a PresignedRequestSet; the response's bundle is bounded
87
+ at 256 KiB, maxDocumentBytes declared.
88
+
89
+ external/_shared/0.1 gains PresignOperation and PresignedRequestSet
90
+ (additive); CONVENTIONS §6 names the new cleartext. Bindings regenerated.
91
+ rooms/blobs/upload/{begin,commit}/0.2 do not name
92
+ external/credentials/issue, so they are unchanged.
93
+
14
94
  ## 0.26.5 — 2026-10-15
15
95
 
16
96
 
@@ -396,11 +396,11 @@ export type Capability_AclV0_2 = string;
396
396
  /**
397
397
  * Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything.
398
398
  */
399
- export type Capability_DeviceV0_1 = "vault-read" | "vault-write" | "proxy-login" | "fill-release" | "policy-admin" | "device-admin" | "sign" | "key-mint" | "sign-trust-task" | "credential-write" | "memory-read" | "memory-write" | "room-present" | "room-open" | "key-export" | "sign-sshsig" | "sign-jws" | "sign-csr" | "external-accounts-manage" | "external-auth-use" | "pcs-vetter" | "pcs-applicant";
399
+ export type Capability_DeviceV0_1 = "vault-read" | "vault-write" | "proxy-login" | "fill-release" | "policy-admin" | "device-admin" | "sign" | "key-mint" | "sign-trust-task" | "credential-write" | "memory-read" | "memory-write" | "room-present" | "room-open" | "key-export" | "sign-sshsig" | "sign-jws" | "sign-csr" | "external-accounts-manage" | "external-auth-use" | "pcs-vetter" | "pcs-applicant" | "witness-request";
400
400
  /**
401
401
  * Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything.
402
402
  */
403
- export type Capability_DeviceV0_2 = "vaultRead" | "vaultWrite" | "proxyLogin" | "fillRelease" | "policyAdmin" | "deviceAdmin" | "sign" | "keyMint" | "signTrustTask" | "credentialWrite" | "memoryRead" | "memoryWrite" | "roomPresent" | "roomOpen" | "keyExport" | "signSshsig" | "signJws" | "signCsr" | "externalAccountsManage" | "externalAuthUse" | "pcsVetter" | "pcsApplicant";
403
+ export type Capability_DeviceV0_2 = "vaultRead" | "vaultWrite" | "proxyLogin" | "fillRelease" | "policyAdmin" | "deviceAdmin" | "sign" | "keyMint" | "signTrustTask" | "credentialWrite" | "memoryRead" | "memoryWrite" | "roomPresent" | "roomOpen" | "keyExport" | "signSshsig" | "signJws" | "signCsr" | "externalAccountsManage" | "externalAuthUse" | "pcsVetter" | "pcsApplicant" | "witnessRequest";
404
404
  /**
405
405
  * Number of chunks in the bundle, equal to ceil(expectedSizeBytes / chunkSize). Bounded at 4096 so that the manifest itself — one digest per chunk — fits in the single document that carries it under the same message-size reasoning as a chunk.
406
406
  */
@@ -1034,7 +1034,7 @@ export type SealedEnvelope_VaultV0_1 = DidcommAuthcryptEnvelope_VaultV0_1 | Hpke
1034
1034
  */
1035
1035
  export type SealedEnvelope_VaultV0_2 = DidcommAuthcryptEnvelope_VaultV0_2 | HpkeArmoredEnvelope_VaultV0_2 | TspMessageEnvelope_VaultV0_2;
1036
1036
  /**
1037
- * A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload or an ExternalCredentialPayload. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of "the response" from ever holding a usable secret, whatever transport carried the document.
1037
+ * A sealed-transfer bundle: OpenPGP-style ASCII armor around an HPKE-sealed `SealedPayloadV1` (base mode, X25519-HKDF-SHA256 KEM, HKDF-SHA256 KDF, ChaCha20-Poly1305 AEAD, info string `vta-sealed-transfer/v1`), with a producer assertion and Bundle-Id, Chunk and Digest-Algo headers bound into the associated data. Each task states the key it is sealed to: a single-use wrapping key from keys/import-wrapping-key for external/accounts/secret/set, and the caller's key-agreement key for external/credentials/issue. Its cleartext is an ExternalSecretPayload, an ExternalCredentialPayload or, from external/credentials/issue 0.2 for `s3-static-presign`, a PresignedRequestSet. The only form in which secret material crosses the wire in this family, in either direction: the seal is what keeps a terminating proxy, a relay, a request log or a debug dump of "the response" from ever holding a usable secret, whatever transport carried the document.
1038
1038
  */
1039
1039
  export type SealedTransferBundle = string;
1040
1040
  /**