@openvtc/trust-tasks 0.28.24 โ 0.28.26
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 +107 -0
- package/dist/_extends.d.ts.map +1 -1
- package/dist/_extends.js +9 -0
- package/dist/_extends.js.map +1 -1
- package/dist/_shared/components.d.ts +117 -0
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/acl/_shared/0.3/acl-entry.d.ts +24 -0
- package/dist/acl/_shared/0.3/acl-entry.d.ts.map +1 -0
- package/dist/acl/_shared/0.3/acl-entry.js +6 -0
- package/dist/acl/_shared/0.3/acl-entry.js.map +1 -0
- package/dist/acl/change-role/0.1/payload.d.ts +4 -4
- package/dist/acl/change-role/0.1/payload.js +1 -1
- package/dist/acl/change-role/0.2/payload.d.ts +14 -2
- package/dist/acl/change-role/0.2/payload.d.ts.map +1 -1
- package/dist/acl/change-role/0.2/payload.js +1 -1
- package/dist/acl/change-role/0.2/payload.js.map +1 -1
- package/dist/acl/change-role/0.3/payload.d.ts +1925 -0
- package/dist/acl/change-role/0.3/payload.d.ts.map +1 -0
- package/dist/acl/change-role/0.3/payload.js +1109 -0
- package/dist/acl/change-role/0.3/payload.js.map +1 -0
- package/dist/acl/grant/0.1/payload.d.ts +4 -4
- package/dist/acl/grant/0.1/payload.js +1 -1
- package/dist/acl/grant/0.2/payload.d.ts +14 -2
- package/dist/acl/grant/0.2/payload.d.ts.map +1 -1
- package/dist/acl/grant/0.2/payload.js +1 -1
- package/dist/acl/grant/0.2/payload.js.map +1 -1
- package/dist/acl/grant/0.3/payload.d.ts +1895 -0
- package/dist/acl/grant/0.3/payload.d.ts.map +1 -0
- package/dist/acl/grant/0.3/payload.js +1096 -0
- package/dist/acl/grant/0.3/payload.js.map +1 -0
- package/dist/acl/list/0.1/payload.d.ts +4 -4
- package/dist/acl/list/0.1/payload.js +1 -1
- package/dist/acl/list/0.2/payload.d.ts +4 -4
- package/dist/acl/list/0.2/payload.js +1 -1
- package/dist/acl/list/0.3/payload.d.ts +14 -2
- package/dist/acl/list/0.3/payload.d.ts.map +1 -1
- package/dist/acl/list/0.3/payload.js +1 -1
- package/dist/acl/list/0.3/payload.js.map +1 -1
- package/dist/acl/list/0.4/payload.d.ts +2079 -0
- package/dist/acl/list/0.4/payload.d.ts.map +1 -0
- package/dist/acl/list/0.4/payload.js +1185 -0
- package/dist/acl/list/0.4/payload.js.map +1 -0
- package/dist/acl/revoke/0.1/payload.d.ts +4 -4
- package/dist/acl/revoke/0.1/payload.js +1 -1
- package/dist/acl/revoke/0.2/payload.d.ts +14 -2
- package/dist/acl/revoke/0.2/payload.d.ts.map +1 -1
- package/dist/acl/revoke/0.2/payload.js +1 -1
- package/dist/acl/revoke/0.2/payload.js.map +1 -1
- package/dist/acl/revoke/0.3/payload.d.ts +2090 -0
- package/dist/acl/revoke/0.3/payload.d.ts.map +1 -0
- package/dist/acl/revoke/0.3/payload.js +1206 -0
- package/dist/acl/revoke/0.3/payload.js.map +1 -0
- package/dist/acl/show/0.1/payload.d.ts +4 -4
- package/dist/acl/show/0.1/payload.js +1 -1
- package/dist/acl/show/0.2/payload.d.ts +14 -2
- package/dist/acl/show/0.2/payload.d.ts.map +1 -1
- package/dist/acl/show/0.2/payload.js +1 -1
- package/dist/acl/show/0.2/payload.js.map +1 -1
- package/dist/acl/show/0.3/payload.d.ts +1935 -0
- package/dist/acl/show/0.3/payload.d.ts.map +1 -0
- package/dist/acl/show/0.3/payload.js +1122 -0
- package/dist/acl/show/0.3/payload.js.map +1 -0
- package/dist/acl/update/0.1/payload.d.ts +4 -4
- package/dist/acl/update/0.1/payload.js +1 -1
- package/dist/acl/update/0.2/payload.d.ts +14 -2
- package/dist/acl/update/0.2/payload.d.ts.map +1 -1
- package/dist/acl/update/0.2/payload.js +1 -1
- package/dist/acl/update/0.2/payload.js.map +1 -1
- package/dist/acl/update/0.3/payload.d.ts +2042 -0
- package/dist/acl/update/0.3/payload.d.ts.map +1 -0
- package/dist/acl/update/0.3/payload.js +1163 -0
- package/dist/acl/update/0.3/payload.js.map +1 -0
- package/dist/index.d.ts +48 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +48 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/_shared/0.2/room.d.ts +1 -1
- package/dist/rooms/_shared/0.2/room.d.ts.map +1 -1
- package/dist/rooms/keys/file-key/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/file-key/0.1/payload.js +1 -1
- package/dist/rooms/keys/file-key/0.2/payload.d.ts +14 -2
- package/dist/rooms/keys/file-key/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/keys/file-key/0.2/payload.js +1 -1
- package/dist/rooms/keys/file-key/0.2/payload.js.map +1 -1
- package/dist/rooms/keys/file-key/0.3/payload.d.ts +396 -0
- package/dist/rooms/keys/file-key/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/keys/file-key/0.3/payload.js +223 -0
- package/dist/rooms/keys/file-key/0.3/payload.js.map +1 -0
- package/dist/rooms/keys/open/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/open/0.1/payload.js +1 -1
- package/dist/rooms/keys/open/0.2/payload.d.ts +14 -2
- package/dist/rooms/keys/open/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/keys/open/0.2/payload.js +1 -1
- package/dist/rooms/keys/open/0.2/payload.js.map +1 -1
- package/dist/rooms/keys/open/0.3/payload.d.ts +413 -0
- package/dist/rooms/keys/open/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/keys/open/0.3/payload.js +227 -0
- package/dist/rooms/keys/open/0.3/payload.js.map +1 -0
- package/dist/rooms/keys/read/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/read/0.1/payload.js +1 -1
- package/dist/rooms/keys/read/0.2/payload.d.ts +14 -2
- package/dist/rooms/keys/read/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/keys/read/0.2/payload.js +1 -1
- package/dist/rooms/keys/read/0.2/payload.js.map +1 -1
- package/dist/rooms/keys/read/0.3/payload.d.ts +1363 -0
- package/dist/rooms/keys/read/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/keys/read/0.3/payload.js +731 -0
- package/dist/rooms/keys/read/0.3/payload.js.map +1 -0
- package/dist/rooms/owner/issue-authority/0.2/payload.d.ts +13 -2
- package/dist/rooms/owner/issue-authority/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/owner/issue-authority/0.2/payload.js +1 -1
- package/dist/rooms/owner/issue-authority/0.2/payload.js.map +1 -1
- package/dist/rooms/owner/issue-authority/0.3/payload.d.ts +557 -0
- package/dist/rooms/owner/issue-authority/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/owner/issue-authority/0.3/payload.js +322 -0
- package/dist/rooms/owner/issue-authority/0.3/payload.js.map +1 -0
- package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.1/payload.js +1 -1
- package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/get/0.2/payload.js +1 -1
- package/dist/rooms/records/get/0.3/payload.d.ts +13 -2
- package/dist/rooms/records/get/0.3/payload.d.ts.map +1 -1
- package/dist/rooms/records/get/0.3/payload.js +1 -1
- package/dist/rooms/records/get/0.3/payload.js.map +1 -1
- package/dist/rooms/records/get/0.4/payload.d.ts +1140 -0
- package/dist/rooms/records/get/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/records/get/0.4/payload.js +613 -0
- package/dist/rooms/records/get/0.4/payload.js.map +1 -0
- package/dist/vault/sign-trust-task/0.2/payload.d.ts +5 -5
- package/dist/vault/sign-trust-task/0.2/payload.js +2 -2
- package/dist/vta/_shared/0.1/memory-record.d.ts +1 -1
- package/dist/vta/_shared/0.1/memory-record.d.ts.map +1 -1
- package/dist/vta/memory/delete/0.1/payload.d.ts +4 -4
- package/dist/vta/memory/delete/0.1/payload.js +1 -1
- package/dist/vta/memory/delete/0.2/payload.d.ts +14 -2
- package/dist/vta/memory/delete/0.2/payload.d.ts.map +1 -1
- package/dist/vta/memory/delete/0.2/payload.js +1 -1
- package/dist/vta/memory/delete/0.2/payload.js.map +1 -1
- package/dist/vta/memory/delete/0.3/payload.d.ts +491 -0
- package/dist/vta/memory/delete/0.3/payload.d.ts.map +1 -0
- package/dist/vta/memory/delete/0.3/payload.js +266 -0
- package/dist/vta/memory/delete/0.3/payload.js.map +1 -0
- package/dist/vta/memory/get/0.1/payload.d.ts +14 -2
- package/dist/vta/memory/get/0.1/payload.d.ts.map +1 -1
- package/dist/vta/memory/get/0.1/payload.js +1 -1
- package/dist/vta/memory/get/0.1/payload.js.map +1 -1
- package/dist/vta/memory/get/0.2/payload.d.ts +722 -0
- package/dist/vta/memory/get/0.2/payload.d.ts.map +1 -0
- package/dist/vta/memory/get/0.2/payload.js +391 -0
- package/dist/vta/memory/get/0.2/payload.js.map +1 -0
- package/dist/vta/memory/list/0.1/payload.d.ts +4 -4
- package/dist/vta/memory/list/0.1/payload.js +1 -1
- package/dist/vta/memory/list/0.2/payload.d.ts +14 -2
- package/dist/vta/memory/list/0.2/payload.d.ts.map +1 -1
- package/dist/vta/memory/list/0.2/payload.js +1 -1
- package/dist/vta/memory/list/0.2/payload.js.map +1 -1
- package/dist/vta/memory/list/0.3/payload.d.ts +769 -0
- package/dist/vta/memory/list/0.3/payload.d.ts.map +1 -0
- package/dist/vta/memory/list/0.3/payload.js +405 -0
- package/dist/vta/memory/list/0.3/payload.js.map +1 -0
- package/dist/vta/memory/put/0.1/payload.d.ts +4 -4
- package/dist/vta/memory/put/0.1/payload.js +1 -1
- package/dist/vta/memory/put/0.2/payload.d.ts +14 -2
- package/dist/vta/memory/put/0.2/payload.d.ts.map +1 -1
- package/dist/vta/memory/put/0.2/payload.js +1 -1
- package/dist/vta/memory/put/0.2/payload.js.map +1 -1
- package/dist/vta/memory/put/0.3/payload.d.ts +566 -0
- package/dist/vta/memory/put/0.3/payload.d.ts.map +1 -0
- package/dist/vta/memory/put/0.3/payload.js +306 -0
- package/dist/vta/memory/put/0.3/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_extends.ts +9 -0
- package/src/_shared/components.ts +117 -0
- package/src/acl/_shared/0.3/acl-entry.ts +25 -0
- package/src/acl/change-role/0.1/payload.ts +5 -5
- package/src/acl/change-role/0.2/payload.ts +15 -3
- package/src/acl/change-role/0.3/payload.ts +1167 -0
- package/src/acl/grant/0.1/payload.ts +5 -5
- package/src/acl/grant/0.2/payload.ts +15 -3
- package/src/acl/grant/0.3/payload.ts +1146 -0
- package/src/acl/list/0.1/payload.ts +5 -5
- package/src/acl/list/0.2/payload.ts +5 -5
- package/src/acl/list/0.3/payload.ts +15 -3
- package/src/acl/list/0.4/payload.ts +1267 -0
- package/src/acl/revoke/0.1/payload.ts +5 -5
- package/src/acl/revoke/0.2/payload.ts +15 -3
- package/src/acl/revoke/0.3/payload.ts +1278 -0
- package/src/acl/show/0.1/payload.ts +5 -5
- package/src/acl/show/0.2/payload.ts +15 -3
- package/src/acl/show/0.3/payload.ts +1172 -0
- package/src/acl/update/0.1/payload.ts +5 -5
- package/src/acl/update/0.2/payload.ts +15 -3
- package/src/acl/update/0.3/payload.ts +1258 -0
- package/src/index.ts +48 -0
- package/src/rooms/_shared/0.2/room.ts +1 -1
- package/src/rooms/keys/file-key/0.1/payload.ts +5 -5
- package/src/rooms/keys/file-key/0.2/payload.ts +15 -3
- package/src/rooms/keys/file-key/0.3/payload.ts +286 -0
- package/src/rooms/keys/open/0.1/payload.ts +5 -5
- package/src/rooms/keys/open/0.2/payload.ts +15 -3
- package/src/rooms/keys/open/0.3/payload.ts +299 -0
- package/src/rooms/keys/read/0.1/payload.ts +5 -5
- package/src/rooms/keys/read/0.2/payload.ts +15 -3
- package/src/rooms/keys/read/0.3/payload.ts +901 -0
- package/src/rooms/owner/issue-authority/0.2/payload.ts +14 -3
- package/src/rooms/owner/issue-authority/0.3/payload.ts +388 -0
- package/src/rooms/records/get/0.1/payload.ts +5 -5
- package/src/rooms/records/get/0.2/payload.ts +5 -5
- package/src/rooms/records/get/0.3/payload.ts +14 -3
- package/src/rooms/records/get/0.4/payload.ts +730 -0
- package/src/vault/sign-trust-task/0.2/payload.ts +3 -3
- package/src/vta/_shared/0.1/memory-record.ts +1 -1
- package/src/vta/memory/delete/0.1/payload.ts +5 -5
- package/src/vta/memory/delete/0.2/payload.ts +15 -3
- package/src/vta/memory/delete/0.3/payload.ts +334 -0
- package/src/vta/memory/get/0.1/payload.ts +15 -3
- package/src/vta/memory/get/0.2/payload.ts +460 -0
- package/src/vta/memory/list/0.1/payload.ts +5 -5
- package/src/vta/memory/list/0.2/payload.ts +15 -3
- package/src/vta/memory/list/0.3/payload.ts +491 -0
- package/src/vta/memory/put/0.1/payload.ts +5 -5
- package/src/vta/memory/put/0.2/payload.ts +15 -3
- package/src/vta/memory/put/0.3/payload.ts +379 -0
package/CHANGELOG.md
CHANGED
|
@@ -11,6 +11,113 @@ 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.28.26 โ 2026-11-10
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- **acl**: Purpose of use on grants and on memory reads (AclEntry 0.3; vta/memory put/delete/list 0.3, get 0.2) (#1074)
|
|
20
|
+
|
|
21
|
+
* feat(acl): purpose of use on grants and on memory reads (AclEntry 0.3; vta/memory put/delete/list 0.3, get 0.2)
|
|
22
|
+
|
|
23
|
+
An access-control entry says who may do what, where and until when, but not
|
|
24
|
+
what for. An agent granted a read of its principal's memory can use the content
|
|
25
|
+
for anything, and nothing records the use it intended. The VTI specification
|
|
26
|
+
now requires the purpose (VTI-ACL-100 โ 110, trustoverip/dtgwg-vti-spec#115);
|
|
27
|
+
these are the wire shapes.
|
|
28
|
+
|
|
29
|
+
acl/_shared/0.3 โ AclEntry 0.3 adds one REQUIRED axis, `purposes`:
|
|
30
|
+
`{"scope": "any"}` or `{"scope": "listed", "purposes": [...]}` with at least
|
|
31
|
+
one `Purpose` โ a lowerCamelCase name registered in the VTI purpose registry
|
|
32
|
+
(personalisation, taskExecution, analytics, modelTraining) or an absolute IRI
|
|
33
|
+
such as a DPV purpose. `any` never grants `modelTraining`. Delegated purposes
|
|
34
|
+
are a subset of the granter's. CONVENTIONS.md ยง8a maps a 0.2 entry onto 0.3
|
|
35
|
+
(`any`, the authority it already held, now stated) and ยง12 states the rules.
|
|
36
|
+
|
|
37
|
+
acl tasks on AclEntry 0.3: grant/0.3, update/0.3, show/0.3, revoke/0.3,
|
|
38
|
+
change-role/0.3, list/0.4. New errors on grant and update: `purposeOutsideDelegator`
|
|
39
|
+
(purposes wider than the granter's) and `purposeRefused` (policy will not grant
|
|
40
|
+
a purpose, refused by name, never dropped). update/0.3 replaces `purposes`
|
|
41
|
+
wholesale; narrowing it is an audited privilege reduction. `purposes` is never
|
|
42
|
+
redacted by show or list. No `extends`: a REQUIRED member on the entry cannot
|
|
43
|
+
be added to a version a 0.2 consumer still reads.
|
|
44
|
+
|
|
45
|
+
vta/memory put/0.3, delete/0.3, list/0.3, get/0.2 (each `extends` its
|
|
46
|
+
predecessor) add an optional `purpose` (`MemoryPurpose`, new in
|
|
47
|
+
vta/_shared/0.1/memory-record, a reference to acl's `Purpose`) and a
|
|
48
|
+
`purposeNotGranted` error that discloses nothing and is distinct from
|
|
49
|
+
`contextForbidden`. A recall, and a listing with values, is purpose-bound:
|
|
50
|
+
refused for a purpose the entry does not grant, or for none under an entry
|
|
51
|
+
listing several, and audited with its purpose either way. A write is not
|
|
52
|
+
purpose-bound, but a conflict that returns `currentValue` is: the value is
|
|
53
|
+
withheld unless the request's purpose is granted.
|
|
54
|
+
|
|
55
|
+
Data rooms (a room authority credential's `purposes`, VTI-ACL-110) are a
|
|
56
|
+
follow-up.
|
|
57
|
+
|
|
58
|
+
Samples in other specs that named the superseded acl versions now name the new
|
|
59
|
+
ones, with `purposes` on every embedded entry; prose links were moved by
|
|
60
|
+
`npm run fix-stale-references`.
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
|
|
64
|
+
### Fixed
|
|
65
|
+
|
|
66
|
+
- **mux/grant**: Unknown-key rule fails closed on direct authentication; no exemption for a grant without recorded keys (#1075)
|
|
67
|
+
|
|
68
|
+
A grant that recorded no key-agreement keys exempted every grant on its DID from the DIDComm direct-authentication rule. A grant is now refused (didUnresolvable) when its keys cannot be read, an empty set means the DID listed none, and the rule is applied before a direct authentication succeeds, refusing it when it cannot be applied.
|
|
69
|
+
|
|
70
|
+
- **messaging/mux**: Compare a direct authentication with keys of its own relationship; send grantsExpiring for every unrenewed grant (#1072)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
### Specifications
|
|
74
|
+
|
|
75
|
+
- **rooms**: Purpose of use on room reads and authority credentials (VTI-ACL-102, -110) (#1076)
|
|
76
|
+
|
|
77
|
+
* spec(rooms): purpose of use on room reads and authority credentials (VTI-ACL-102, -110)
|
|
78
|
+
|
|
79
|
+
Room content a key holder releases to its caller is purpose-bound, as agent
|
|
80
|
+
memory is (vta/memory/get 0.2), and a room's authority credential may state
|
|
81
|
+
the purposes it grants.
|
|
82
|
+
|
|
83
|
+
- rooms/keys/open 0.3, rooms/keys/read 0.3: optional `purpose`; refused with
|
|
84
|
+
`purposeNotGranted` where the caller's entry, or the principal's authority
|
|
85
|
+
over the room, does not grant it. read passes it to the host.
|
|
86
|
+
- rooms/keys/file-key 0.3: the same as `purposeOfUse` (`purpose` already
|
|
87
|
+
says seal or open), bound only on `open`.
|
|
88
|
+
- rooms/records/get 0.4: the host holds a read to the purposes the presented
|
|
89
|
+
chain states; a chain stating none grants `any`.
|
|
90
|
+
- rooms/owner/issue-authority 0.3: optional `purposes` (AclEntry 0.3's
|
|
91
|
+
PurposeScope), stated in the credential; absent grants `any`.
|
|
92
|
+
- rooms/_shared 0.2: `RecordPurpose`, and AuthorityPresentation's rule for
|
|
93
|
+
purposes along a chain: a link stating none takes its parent's, a link
|
|
94
|
+
stating wider is refused whole (VTI-ACL-107).
|
|
95
|
+
|
|
96
|
+
Each new version `extends` its predecessor.
|
|
97
|
+
|
|
98
|
+
## 0.28.25 โ 2026-11-09
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### Documentation
|
|
102
|
+
|
|
103
|
+
- **vta/dids**: Did:webs is eligible with the key-role designation extension (#1070)
|
|
104
|
+
|
|
105
|
+
* docs(vta/dids): did:webs is eligible with the key-role designation extension
|
|
106
|
+
|
|
107
|
+
The did:webs method profile declared the method ineligible as published
|
|
108
|
+
(criteria 4 and 6: no controller-chosen relationships, no room for
|
|
109
|
+
keyRoles or revoked) and recommended an extension A: role keys anchored in
|
|
110
|
+
the KEL, rendered into their roles' relationships with keyRoles and
|
|
111
|
+
revoked, key-state keys in no relationship. affinidi-did-webs 0.9.1
|
|
112
|
+
implements it as a key-role designation (an anchored ACDC), proposed to
|
|
113
|
+
the did:webs specification.
|
|
114
|
+
|
|
115
|
+
The profile now states the status as eligible with that extension and
|
|
116
|
+
ineligible without it, and renders ยง4 as built: the record's schema and
|
|
117
|
+
attributes, one standing record, accumulated revocations, the document's
|
|
118
|
+
members, the fail-closed checks. It states the interop caveat: a resolver
|
|
119
|
+
without the extension refuses the published did.json.
|
|
120
|
+
|
|
14
121
|
## 0.28.24 โ 2026-11-09
|
|
15
122
|
|
|
16
123
|
|
package/dist/_extends.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_extends.d.ts","sourceRoot":"","sources":["../src/_extends.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"_extends.d.ts","sourceRoot":"","sources":["../src/_extends.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA4B/D,CAAC"}
|
package/dist/_extends.js
CHANGED
|
@@ -10,14 +10,23 @@ export const EXTENDS_BY_TYPE_URI = Object.freeze({
|
|
|
10
10
|
"https://trusttasks.org/spec/rooms/keys/act/0.11": "0.10",
|
|
11
11
|
"https://trusttasks.org/spec/rooms/keys/act/0.12": "0.11",
|
|
12
12
|
"https://trusttasks.org/spec/rooms/keys/act/0.9": "0.8",
|
|
13
|
+
"https://trusttasks.org/spec/rooms/keys/file-key/0.3": "0.2",
|
|
14
|
+
"https://trusttasks.org/spec/rooms/keys/open/0.3": "0.2",
|
|
15
|
+
"https://trusttasks.org/spec/rooms/keys/read/0.3": "0.2",
|
|
13
16
|
"https://trusttasks.org/spec/rooms/keys/seal/0.3": "0.2",
|
|
17
|
+
"https://trusttasks.org/spec/rooms/owner/issue-authority/0.3": "0.2",
|
|
14
18
|
"https://trusttasks.org/spec/rooms/records/get/0.3": "0.2",
|
|
19
|
+
"https://trusttasks.org/spec/rooms/records/get/0.4": "0.3",
|
|
15
20
|
"https://trusttasks.org/spec/rooms/records/put/0.4": "0.3",
|
|
16
21
|
"https://trusttasks.org/spec/rooms/records/put/0.5": "0.4",
|
|
17
22
|
"https://trusttasks.org/spec/vta/did-templates/create/3.2": "3.1",
|
|
18
23
|
"https://trusttasks.org/spec/vta/did-templates/get/3.2": "3.1",
|
|
19
24
|
"https://trusttasks.org/spec/vta/did-templates/list/3.2": "3.1",
|
|
20
25
|
"https://trusttasks.org/spec/vta/did-templates/update/3.2": "3.1",
|
|
26
|
+
"https://trusttasks.org/spec/vta/memory/delete/0.3": "0.2",
|
|
27
|
+
"https://trusttasks.org/spec/vta/memory/get/0.2": "0.1",
|
|
28
|
+
"https://trusttasks.org/spec/vta/memory/list/0.3": "0.2",
|
|
29
|
+
"https://trusttasks.org/spec/vta/memory/put/0.3": "0.2",
|
|
21
30
|
"https://trusttasks.org/spec/vta/webvh/dids/update/1.1": "1.0",
|
|
22
31
|
"https://trusttasks.org/spec/vtc/elections/list/0.4": "0.3",
|
|
23
32
|
"https://trusttasks.org/spec/vtc/elections/list/0.5": "0.4",
|
package/dist/_extends.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"_extends.js","sourceRoot":"","sources":["../src/_extends.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC,MAAM,CAAC,MAAM,CAAC;IACjF,iDAAiD,EAAE,KAAK;IACxD,iDAAiD,EAAE,MAAM;IACzD,iDAAiD,EAAE,MAAM;IACzD,gDAAgD,EAAE,KAAK;IACvD,iDAAiD,EAAE,KAAK;IACxD,mDAAmD,EAAE,KAAK;IAC1D,mDAAmD,EAAE,KAAK;IAC1D,mDAAmD,EAAE,KAAK;IAC1D,0DAA0D,EAAE,KAAK;IACjE,uDAAuD,EAAE,KAAK;IAC9D,wDAAwD,EAAE,KAAK;IAC/D,0DAA0D,EAAE,KAAK;IACjE,uDAAuD,EAAE,KAAK;IAC9D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,6DAA6D,EAAE,KAAK;CACrE,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"_extends.js","sourceRoot":"","sources":["../src/_extends.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqC,MAAM,CAAC,MAAM,CAAC;IACjF,iDAAiD,EAAE,KAAK;IACxD,iDAAiD,EAAE,MAAM;IACzD,iDAAiD,EAAE,MAAM;IACzD,gDAAgD,EAAE,KAAK;IACvD,qDAAqD,EAAE,KAAK;IAC5D,iDAAiD,EAAE,KAAK;IACxD,iDAAiD,EAAE,KAAK;IACxD,iDAAiD,EAAE,KAAK;IACxD,6DAA6D,EAAE,KAAK;IACpE,mDAAmD,EAAE,KAAK;IAC1D,mDAAmD,EAAE,KAAK;IAC1D,mDAAmD,EAAE,KAAK;IAC1D,mDAAmD,EAAE,KAAK;IAC1D,0DAA0D,EAAE,KAAK;IACjE,uDAAuD,EAAE,KAAK;IAC9D,wDAAwD,EAAE,KAAK;IAC/D,0DAA0D,EAAE,KAAK;IACjE,mDAAmD,EAAE,KAAK;IAC1D,gDAAgD,EAAE,KAAK;IACvD,iDAAiD,EAAE,KAAK;IACxD,gDAAgD,EAAE,KAAK;IACvD,uDAAuD,EAAE,KAAK;IAC9D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,oDAAoD,EAAE,KAAK;IAC3D,6DAA6D,EAAE,KAAK;CACrE,CAAC,CAAC"}
|
|
@@ -1135,6 +1135,10 @@ export type MemoryExpectedVersion = number;
|
|
|
1135
1135
|
* Agent-chosen identifier for an item within a context. Opaque to the maintainer: it MUST NOT be parsed, normalized, or case-folded, and prefix matching in `vta/memory/list` is a byte-prefix comparison over the UTF-8 encoding. Agents SHOULD use `/`-delimited hierarchical keys (`contact/billing`, `preference/timezone`) so that `prefix` can address a family of items, but the delimiter is a convention between an agent and itself. A key is content as well as an address: a key naming a person, a condition or a dispute discloses something to anyone who can list the context, even without its value.
|
|
1136
1136
|
*/
|
|
1137
1137
|
export type MemoryKey = string;
|
|
1138
|
+
/**
|
|
1139
|
+
* The one purpose for which the caller will use the memory content a request discloses (VTI-ACL-103): a name registered in the VTI specification's purpose registry (`personalisation`, `taskExecution`, `analytics`, `modelTraining`) or an absolute IRI. The VTA grants it only if the caller's ACL entry does โ `any` grants every purpose but `modelTraining` โ refuses it otherwise (`purposeNotGranted`), and records it in the audit record of the read. Optional where the entry lists exactly one purpose (that one applies) or states `any` (the read is recorded as for no stated purpose).
|
|
1140
|
+
*/
|
|
1141
|
+
export type MemoryPurpose = Purpose_AclV0_3;
|
|
1138
1142
|
/**
|
|
1139
1143
|
* The remembered text: a fact, a summary, a preference. Opaque to the maintainer, which stores it as given and never interprets, rewrites or summarises it. The maintainer enforces a documented per-item cap on its size (see `vta/memory/put`).
|
|
1140
1144
|
*/
|
|
@@ -1645,6 +1649,18 @@ export type ProviderObjectPrefix = string;
|
|
|
1645
1649
|
* What the request is for. A CLOSED list: each purpose has a fixed row in CONVENTIONS.md ยง3 stating what is revealed at each step, what the grant contains, what redeem returns and the window lengths. Version 0.1 defines `login` only. `stepUp` and `deviceEnrol` are reserved names; adding one is a new version of this component and of every task that references it, never an in-place edit.
|
|
1646
1650
|
*/
|
|
1647
1651
|
export type Purpose = "login";
|
|
1652
|
+
/**
|
|
1653
|
+
* An explicit purpose scope. Exactly one of two shapes, discriminated by `scope`: `any`, or `listed` with a NON-EMPTY list of purposes. The empty list is invalid, not a third shape.
|
|
1654
|
+
*/
|
|
1655
|
+
export type PurposeScope = PurposeScopeAny | PurposeScopeListed;
|
|
1656
|
+
/**
|
|
1657
|
+
* What content is used for: a lowerCamelCase name registered in the VTI specification's purpose registry (Appendix H) โ `personalisation`, `taskExecution`, `analytics`, `modelTraining` at the time of writing โ or an absolute IRI naming a purpose defined elsewhere, such as a purpose of the W3C Data Privacy Vocabulary (`https://w3id.org/dpv#ServicePersonalisation`). Compared by exact string equality: a consumer MUST NOT treat a purpose it does not recognise as equal to any other, and grants only a request naming exactly a listed purpose (VTI-ACL-109). A registered name is never an IRI, because it contains no `:`.
|
|
1658
|
+
*/
|
|
1659
|
+
export type Purpose_AclV0_3 = Purpose_AclV0_31 & Purpose_AclV0_32;
|
|
1660
|
+
export type Purpose_AclV0_31 = {
|
|
1661
|
+
[k: string]: unknown | undefined;
|
|
1662
|
+
};
|
|
1663
|
+
export type Purpose_AclV0_32 = string;
|
|
1648
1664
|
/**
|
|
1649
1665
|
* A device's platform push channel โ the body the device registers with its push GATEWAY (push wake-up binding, https://trusttasks.org/binding/push/0.1; modeled on Aries RFC 0699/0734). The gateway holds this token and returns an opaque WakeHandle in exchange; the token is held by the gateway ONLY, never by the mediator or the maintainer/VTA. The gateway uses it to send a contentless wake-up when an authorized trigger asks โ the push payload never carries Trust Task content. Tagged union over the discriminator `platform`.
|
|
1650
1666
|
*/
|
|
@@ -1730,6 +1746,10 @@ export type RecordId_VtcNotificationsV0_1 = string;
|
|
|
1730
1746
|
* What a reader shows a record as. Defined values: `note` โ something kept in the room's library, titled or not, its `body` markdown; `message` โ a turn in the room's conversation, its words in `body` as plain text; `reaction` โ a short response to another record, its value in `body` (`SealedRecordBody`, *Reactions*). An open set, not an enumeration, so a new kind needs no new version of any schema: a reader MUST present a record whose kind it does not know as a note, and MUST NOT refuse a record for its kind. Absent means `note`, though a reader that keeps a conversation apart MAY show an untitled record without a kind as a message (*Untitled records*). A new version of a record MUST keep its kind. lowerCamelCase, at most 64 characters.
|
|
1731
1747
|
*/
|
|
1732
1748
|
export type RecordKind = string;
|
|
1749
|
+
/**
|
|
1750
|
+
* The one purpose for which a caller will use room content a request discloses (VTI-ACL-103): a name registered in the VTI specification's purpose registry (`personalisation`, `taskExecution`, `analytics`, `modelTraining`) or an absolute IRI. Granted only as the caller's authority grants it โ `any` grants every purpose but `modelTraining` โ refused otherwise (`purposeNotGranted`), and recorded with the read. Distinct from `PermittedUse`, which is what a record's author permits and is a statement, not a grant.
|
|
1751
|
+
*/
|
|
1752
|
+
export type RecordPurpose = Purpose_AclV0_3;
|
|
1733
1753
|
/**
|
|
1734
1754
|
* The path from one record's leaf to the room's `DataCommitment` โ a Merkle inclusion proof, in the vocabulary this work already uses for it.
|
|
1735
1755
|
*
|
|
@@ -4889,6 +4909,84 @@ export interface AclEntry_AclV0_2 {
|
|
|
4889
4909
|
*/
|
|
4890
4910
|
ext?: Ext;
|
|
4891
4911
|
}
|
|
4912
|
+
/**
|
|
4913
|
+
* One access-control entry: who the grant is for (`subject`), the ceiling it is held under (`role`), where the subject may act (`act`) and approve (`approve`), and which capabilities it may exercise (`capabilities`) and approve (`approveCapabilities`).
|
|
4914
|
+
*
|
|
4915
|
+
* The act axis and the approve axis are independent and a consumer MUST resolve them separately: `act` + `capabilities` (+ `keys`) answer "may this subject do X"; `approve` + `approveCapabilities` answer "may this subject ratify someone else doing X". Neither implies the other. An entry with `act: {scope: none}` and an approve scope other than none is a least-privilege approver โ able to satisfy an approval and unable to initiate any change.
|
|
4916
|
+
*/
|
|
4917
|
+
export interface AclEntry_AclV0_3 {
|
|
4918
|
+
/**
|
|
4919
|
+
* VID of the party in the ACL. Compared by exact string equality (SPEC.md ยง4.8); producers SHOULD emit canonical form.
|
|
4920
|
+
*/
|
|
4921
|
+
subject: string;
|
|
4922
|
+
/**
|
|
4923
|
+
* Opaque role identifier interpreted by the ACL maintainer. A role is a CEILING, never a grant: it bounds the capabilities the entry may hold and never adds to them. A consumer that does not recognise the role MUST treat the entry as conferring no authority and MUST NOT fall back to a default role. Act scope and role are independent members; a consumer MUST NOT compute either from the other.
|
|
4924
|
+
*/
|
|
4925
|
+
role: string;
|
|
4926
|
+
/**
|
|
4927
|
+
* REQUIRED explicit act scope: where this subject may make a change itself. Exactly one of `{"scope": "all"}` (unrestricted โ every context the maintainer has), `{"scope": "none"}` (may act nowhere), or `{"scope": "contexts", "contexts": [...]}` with at least one context path (the named contexts and, where the maintainer's contexts are hierarchical, their descendants). There is no default and no implicit form: an entry without `act`, or with an empty `contexts` list, is malformed and MUST be refused, never read as `all` and never read as `none`. A maintainer that has no contexts (for example a community node that narrows authority with resource qualifiers instead) states `all` or `none` only. Replaces 0.1's `scopes`.
|
|
4928
|
+
*/
|
|
4929
|
+
act: AuthorityScope;
|
|
4930
|
+
/**
|
|
4931
|
+
* OPTIONAL approve scope: where this subject may ratify a change made by someone else (a step-up ratification, a consent decision, an N-of-M approval). Same three shapes as `act`, resolved independently of it. ABSENT MEANS NONE โ the subject may ratify nothing โ so a consumer that has not implemented the member confers less than the producer intended, never more. A producer SHOULD state `{"scope": "none"}` explicitly rather than rely on omission. A subject MUST NOT confer approve authority wider than the approve authority it holds itself (see acl/grant `approveWiderThanGranter`). Replaces 0.1's `approve {all, scopes}`.
|
|
4932
|
+
*/
|
|
4933
|
+
approve?: AuthorityScope;
|
|
4934
|
+
/**
|
|
4935
|
+
* REQUIRED explicit capability scope: which capabilities this entry holds. Exactly one of `{"scope": "ceiling"}` (the role's full ceiling, unnarrowed), `{"scope": "none"}` (no capabilities), or `{"scope": "listed", "grants": [...]}` with at least one CapabilityGrant. For `listed`, the EFFECTIVE set is (the role's ceiling โฉ the non-additive grants) โช the additive grants; it can only narrow the ceiling, except through an explicit additive grant, which only an unrestricted granter may make. There is no implicit form: an entry without `capabilities`, or with an empty `grants` list, is malformed and MUST be refused. A non-additive grant outside the role's ceiling is refused when written, never accepted with the capability silently dropped; a capability the consumer does not recognise is never treated as granted. Producers SHOULD NOT list the same (capability, resource) pair twice; a consumer MAY refuse a list that does.
|
|
4936
|
+
*/
|
|
4937
|
+
capabilities: CapabilityScope;
|
|
4938
|
+
/**
|
|
4939
|
+
* OPTIONAL explicit approvable-capability scope: which capabilities this subject may APPROVE an action needing โ independent of what it may do itself, so an approver can ratify a capability it does not hold (the least-privilege approver). One of `{"scope": "ceiling"}` (the role's full approve ceiling; at a maintainer whose roles define no capability-level approve ceiling, any action within `approve`), `{"scope": "none"}`, or `{"scope": "listed", "grants": [...]}` with at least one CapabilityRef (intersected with the role's approve ceiling where one is defined). ABSENT MEANS NONE: the subject may approve no capability, because absence derives no authority. Bounded by `approve`: where `approve` is absent or `{"scope": "none"}` this member confers nothing whatever it states. A subject MUST NOT confer approvable capabilities it cannot itself approve.
|
|
4940
|
+
*/
|
|
4941
|
+
approveCapabilities?: ApproveCapabilityScope;
|
|
4942
|
+
/**
|
|
4943
|
+
* VID of the granter whose authority this entry was delegated from and is bounded by. The entry MUST NOT hold authority the granter did not hold when it was written, and MUST NOT retain authority the granter has since lost, so a maintainer re-evaluates it when the granter's own entry narrows or is removed. Distinct from `createdBy`, which records who wrote the entry: the two differ where an entry is written on a granter's behalf (for example after an N-of-M approval, or by an offline operator). Set by the maintainer from the granter it authorized; absent on an entry that derives from no granter's authority (the first administrator, an operator-written recovery entry).
|
|
4944
|
+
*/
|
|
4945
|
+
delegatedBy?: string;
|
|
4946
|
+
/**
|
|
4947
|
+
* REQUIRED explicit key scope: which keys this subject may invoke the maintainer's signing oracle on. Exactly one of `{"scope": "all"}` (every key the entry's act scope reaches), `{"scope": "none"}` (no keys), or `{"scope": "listed", "keys": [...]}` with at least one key identifier. INTERSECTS WITH `act` โ it can only narrow, never widen: a listed key that lies outside the entry's act scope remains unreachable, exactly as if it were not listed. There is no implicit form: an entry without `keys`, or with an empty `keys` list, is malformed and MUST be refused. A maintainer that operates no signing oracle states `{"scope": "none"}`. Replaces 0.1's `allowedKeys`, whose absence meant every key.
|
|
4948
|
+
*/
|
|
4949
|
+
keys: KeyScope;
|
|
4950
|
+
/**
|
|
4951
|
+
* REQUIRED explicit purpose scope: what this subject may use content it reads for โ the purpose a request for a purpose-bound operation (a read of content held for the principal, or a refusal that carries such content) names, and the maintainer records in that operation's audit record. Exactly one of `{"scope": "any"}` (any purpose EXCEPT `modelTraining`) or `{"scope": "listed", "purposes": [...]}` with at least one Purpose. There is no implicit form: an entry without `purposes`, or with an empty list, is malformed and MUST be refused, never read as `any`. A maintainer that adopts this version writes `any` on every entry that predates it before serving a purpose-bound operation under it (VTI-ACL-101). Delegated purposes are a subset of the granter's: a granter stating `any` MAY delegate a list; a granter stating a list MUST NOT delegate `any`, and no granter delegates `modelTraining` unless its own entry names it (acl/grant `purposeOutsideDelegator`). A maintainer MAY refuse by policy to grant a purpose, naming it, when the entry is written (acl/grant `purposeRefused`), never by writing the entry without it. A purpose is a declaration, not a proof: the maintainer cannot see what the subject does with content, and holds it to what it declared.
|
|
4952
|
+
*/
|
|
4953
|
+
purposes: PurposeScope;
|
|
4954
|
+
/**
|
|
4955
|
+
* Optional human-readable label. Confers nothing.
|
|
4956
|
+
*/
|
|
4957
|
+
label?: string;
|
|
4958
|
+
createdAt?: string;
|
|
4959
|
+
/**
|
|
4960
|
+
* VID of the party that originally wrote this entry.
|
|
4961
|
+
*/
|
|
4962
|
+
createdBy?: string;
|
|
4963
|
+
updatedAt?: string;
|
|
4964
|
+
/**
|
|
4965
|
+
* VID of the party that last modified this entry.
|
|
4966
|
+
*/
|
|
4967
|
+
updatedBy?: string;
|
|
4968
|
+
/**
|
|
4969
|
+
* Optional time after which the entry confers no authority. Evaluated at every authorization decision, not only when a session is established.
|
|
4970
|
+
*/
|
|
4971
|
+
expiresAt?: string;
|
|
4972
|
+
/**
|
|
4973
|
+
* Per-entry authentication step-up configuration, consumed by the ACL maintainer when it gates an operation behind a step-up (see auth/step-up/policy). ADDITIVE-ONLY: a per-entry setting MAY raise the assurance required of this subject above the maintainer's system-wide floor, but MUST NOT lower it. The maintainer resolves the effective requirement as the strictest of (system floor, this entry). Carried forward from 0.1 unchanged.
|
|
4974
|
+
*/
|
|
4975
|
+
stepUp?: {
|
|
4976
|
+
/**
|
|
4977
|
+
* VID authorized to ratify step-up for this subject โ the `recipient` the maintainer addresses an auth/step-up/approve-request to (e.g. the holder's mobile authenticator or browser companion). Absent โ the subject is its own approver (mode `self`) when it holds a usable authenticator; if neither an `approver` nor a self authenticator exists, no step-up method is available for this subject and the maintainer's fail-closed rule applies.
|
|
4978
|
+
*/
|
|
4979
|
+
approver?: string;
|
|
4980
|
+
/**
|
|
4981
|
+
* Minimum step-up mode this subject MUST satisfy for gated operations, raising the system floor. `self` = the subject re-authenticates its own session; `delegated` = a separate `approver` MUST ratify. Omitted โ the system floor applies unchanged. A value weaker than the resolved floor is ignored (additive-only).
|
|
4982
|
+
*/
|
|
4983
|
+
require?: "self" | "delegated";
|
|
4984
|
+
};
|
|
4985
|
+
/**
|
|
4986
|
+
* Ecosystem-defined extension members per SPEC.md ยง4.5.1. Reverse-DNS-namespaced; consumers MUST ignore unrecognized namespaces. An extension member MUST NOT be interpreted as conferring authority.
|
|
4987
|
+
*/
|
|
4988
|
+
ext?: Ext;
|
|
4989
|
+
}
|
|
4892
4990
|
/**
|
|
4893
4991
|
* One parked administrative operation, as the caller is entitled to see it. The same action reads differently to different callers only in `challenge` and `callerRole`, which are per-caller.
|
|
4894
4992
|
*/
|
|
@@ -12620,6 +12718,25 @@ export interface PurgeProgress {
|
|
|
12620
12718
|
*/
|
|
12621
12719
|
lastError?: string;
|
|
12622
12720
|
}
|
|
12721
|
+
/**
|
|
12722
|
+
* Any purpose except `modelTraining` (training, fine-tuning or evaluating a machine-learning model on the content), which `any` never grants (VTI-ACL-105).
|
|
12723
|
+
*/
|
|
12724
|
+
export interface PurposeScopeAny {
|
|
12725
|
+
scope: "any";
|
|
12726
|
+
}
|
|
12727
|
+
/**
|
|
12728
|
+
* Exactly the listed purposes. A request naming any other purpose is refused.
|
|
12729
|
+
*/
|
|
12730
|
+
export interface PurposeScopeListed {
|
|
12731
|
+
scope: "listed";
|
|
12732
|
+
/**
|
|
12733
|
+
* Non-empty set of purposes. An empty array is invalid (it is not `any`).
|
|
12734
|
+
*
|
|
12735
|
+
* @minItems 1
|
|
12736
|
+
* @maxItems 32
|
|
12737
|
+
*/
|
|
12738
|
+
purposes: [Purpose_AclV0_3, ...Purpose_AclV0_3[]];
|
|
12739
|
+
}
|
|
12623
12740
|
export interface Apns {
|
|
12624
12741
|
platform: "apns";
|
|
12625
12742
|
/**
|