@openvtc/trust-tasks 0.26.6 → 0.26.8
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 +81 -0
- package/dist/_shared/components.d.ts +11 -2
- 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 +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/vta/_shared/0.5/witness-party.d.ts +16 -0
- package/dist/vta/_shared/0.5/witness-party.d.ts.map +1 -0
- package/dist/vta/_shared/0.5/witness-party.js +6 -0
- package/dist/vta/_shared/0.5/witness-party.js.map +1 -0
- package/dist/vta/witness/accept/0.1/payload.d.ts +481 -0
- package/dist/vta/witness/accept/0.1/payload.d.ts.map +1 -0
- package/dist/vta/witness/accept/0.1/payload.js +264 -0
- package/dist/vta/witness/accept/0.1/payload.js.map +1 -0
- package/dist/vta/witness/open/0.1/payload.d.ts +500 -0
- package/dist/vta/witness/open/0.1/payload.d.ts.map +1 -0
- package/dist/vta/witness/open/0.1/payload.js +259 -0
- package/dist/vta/witness/open/0.1/payload.js.map +1 -0
- package/dist/vta/witness/present/0.1/payload.d.ts +303 -0
- package/dist/vta/witness/present/0.1/payload.d.ts.map +1 -0
- package/dist/vta/witness/present/0.1/payload.js +170 -0
- package/dist/vta/witness/present/0.1/payload.js.map +1 -0
- package/dist/vta/witness/request/0.1/payload.d.ts +597 -0
- package/dist/vta/witness/request/0.1/payload.d.ts.map +1 -0
- package/dist/vta/witness/request/0.1/payload.js +311 -0
- package/dist/vta/witness/request/0.1/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_shared/components.ts +12 -2
- 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 +5 -0
- package/src/vta/_shared/0.5/witness-party.ts +17 -0
- package/src/vta/witness/accept/0.1/payload.ts +326 -0
- package/src/vta/witness/open/0.1/payload.ts +336 -0
- package/src/vta/witness/present/0.1/payload.ts +210 -0
- package/src/vta/witness/request/0.1/payload.ts +405 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,87 @@ 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.8 — 2026-10-15
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **vta/witness**: The client carries the witness messages — vta/witness/{open,present,accept} replace vta/witness/request (#779)
|
|
20
|
+
|
|
21
|
+
vta/witness/request/0.1 (#777) had the VTA make both round trips to the
|
|
22
|
+
witness itself, as the principal's relationship DID. It cannot: a witness
|
|
23
|
+
checks that the transport-proven sender of each document is its issuer and
|
|
24
|
+
replies to that sender, and the relationship DID's one mediator connection
|
|
25
|
+
belongs to whoever holds the relationship, normally the client. So the
|
|
26
|
+
client carries the messages and the VTA builds, signs and verifies, in
|
|
27
|
+
three steps:
|
|
28
|
+
|
|
29
|
+
- vta/witness/open/0.1: checks key custody, the credentials and the member
|
|
30
|
+
link up front, opens a session record, and returns the witness/session
|
|
31
|
+
document signed as relationshipDid for the client to send.
|
|
32
|
+
- vta/witness/present/0.1: takes the witness's session #response verbatim,
|
|
33
|
+
checks it is the witness's for this session, builds the relationship
|
|
34
|
+
presentation (and the member presentation) bound to its challenge and
|
|
35
|
+
domain, and returns the signed witness/session/submit document.
|
|
36
|
+
- vta/witness/accept/0.1: takes the submit #response verbatim, verifies the
|
|
37
|
+
VWC as #777 did, stores it with its evidence, and answers as #777 did.
|
|
38
|
+
|
|
39
|
+
The record is keyed by the session id within the caller's contexts,
|
|
40
|
+
expires, holds no presentation or challenge, and moves opened -> presented
|
|
41
|
+
-> accepted. Every handed-back document is checked against it (type,
|
|
42
|
+
issuer = the witness, recipient = relationshipDid, threadId, the witness's
|
|
43
|
+
proof) before it is read, so nothing from another session can be spliced
|
|
44
|
+
in. Each step is safe to repeat: open's duplicate is inert, present's
|
|
45
|
+
duplicates are spent by the witness's single-use challenge, and accept
|
|
46
|
+
answers the same outcome again without storing twice.
|
|
47
|
+
|
|
48
|
+
Shared rules are in vta/_shared/0.5/CONVENTIONS.md and the shared shapes
|
|
49
|
+
(SessionId, CarriedDocument) in witness-party.schema.json. The
|
|
50
|
+
witnessRequest capability now covers the three tasks.
|
|
51
|
+
|
|
52
|
+
vta/witness/request/0.1 is published (release #778), so it is not edited:
|
|
53
|
+
it is retired in place, supersededBy vta/witness/open/0.1, with a status
|
|
54
|
+
note naming its successors, why it cannot be implemented, and that no
|
|
55
|
+
implementation shipped it.
|
|
56
|
+
|
|
57
|
+
## 0.26.7 — 2026-10-15
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
### Added
|
|
61
|
+
|
|
62
|
+
- **vta/witness**: Vta/witness/request — the VTA runs a witnessed session for its principal's relationship (#777)
|
|
63
|
+
|
|
64
|
+
A Verifiable Witness Credential is issued to the participating party of a
|
|
65
|
+
witness/session, who presents its relationship credential bound to the
|
|
66
|
+
session's challenge. A principal whose keys and credentials live in a VTA
|
|
67
|
+
cannot do that from a client that holds neither. This adds
|
|
68
|
+
vta/witness/request/0.1: the client names a witness, the relationship
|
|
69
|
+
(relationshipDid, counterpartyDid, the enclosing thread) and credentials by
|
|
70
|
+
vault handle; the VTA opens the session as the relationship DID, builds and
|
|
71
|
+
signs the presentation itself, submits, verifies the VWC as a verifier of
|
|
72
|
+
the evidence would (issuer = session recipient = response signer,
|
|
73
|
+
taskContext/taskDigest over the session document as sent, subject and
|
|
74
|
+
object digest, vwcDigestMultibase), and stores it in the credential vault
|
|
75
|
+
with its evidence — the session document as sent and the submit #response
|
|
76
|
+
as received. It answers with the vault handle, the digest and the two
|
|
77
|
+
evidence documents (which carry the VWC); never a key, a presentation or
|
|
78
|
+
the challenge.
|
|
79
|
+
|
|
80
|
+
Membership evidence is optional. A VMC naming the relationship DID rides
|
|
81
|
+
in the relationship presentation; one naming a member DID needs an
|
|
82
|
+
explicit memberDid, and the VTA builds a second presentation by that DID
|
|
83
|
+
bound to the same session. witness/session/submit/0.1 has no member for
|
|
84
|
+
it, so its carriage is the witness's own (SPEC 4.5.1 leaves an ext
|
|
85
|
+
namespace's semantics to its controller); the OpenVTC carriage is cited
|
|
86
|
+
non-normatively.
|
|
87
|
+
|
|
88
|
+
Authorization is standing over every context the task touches, expressed
|
|
89
|
+
as the new witnessRequest capability (witness-request in device/_shared
|
|
90
|
+
0.1), which is not sign and is not satisfied by sign. Errors: notFound,
|
|
91
|
+
credentialMismatch, noMatchingProtocol, witnessUnreachable (retryable),
|
|
92
|
+
witnessRefused, challengeMismatch, presentationInvalid (the witness's own
|
|
93
|
+
code and message in details), vwcInvalid.
|
|
94
|
+
|
|
14
95
|
## 0.26.6 — 2026-10-15
|
|
15
96
|
|
|
16
97
|
|
|
@@ -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
|
*/
|
|
@@ -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
|
*
|