@openvtc/trust-tasks 0.28.14 → 0.28.15
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 +43 -0
- package/dist/_extends.d.ts.map +1 -1
- package/dist/_extends.js +5 -0
- package/dist/_extends.js.map +1 -1
- package/dist/_shared/components.d.ts +344 -1
- package/dist/_shared/components.d.ts.map +1 -1
- package/dist/did-management/stats/set-resolution/0.1/payload.d.ts +398 -0
- package/dist/did-management/stats/set-resolution/0.1/payload.d.ts.map +1 -0
- package/dist/did-management/stats/set-resolution/0.1/payload.js +247 -0
- package/dist/did-management/stats/set-resolution/0.1/payload.js.map +1 -0
- package/dist/index.d.ts +75 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +75 -0
- package/dist/index.js.map +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts +1 -1
- package/dist/rooms/_shared/0.1/room.d.ts.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/_shared/0.3/member-profile.d.ts +11 -0
- package/dist/rooms/_shared/0.3/member-profile.d.ts.map +1 -0
- package/dist/rooms/_shared/0.3/member-profile.js +6 -0
- package/dist/rooms/_shared/0.3/member-profile.js.map +1 -0
- package/dist/rooms/changed/0.1/payload.d.ts +139 -0
- package/dist/rooms/changed/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/changed/0.1/payload.js +84 -0
- package/dist/rooms/changed/0.1/payload.js.map +1 -0
- package/dist/rooms/keys/act/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.1/payload.js +1 -1
- package/dist/rooms/keys/act/0.10/payload.d.ts +14 -2
- package/dist/rooms/keys/act/0.10/payload.d.ts.map +1 -1
- package/dist/rooms/keys/act/0.10/payload.js +1 -1
- package/dist/rooms/keys/act/0.10/payload.js.map +1 -1
- package/dist/rooms/keys/act/0.11/payload.d.ts +572 -0
- package/dist/rooms/keys/act/0.11/payload.d.ts.map +1 -0
- package/dist/rooms/keys/act/0.11/payload.js +319 -0
- package/dist/rooms/keys/act/0.11/payload.js.map +1 -0
- package/dist/rooms/keys/act/0.12/payload.d.ts +560 -0
- package/dist/rooms/keys/act/0.12/payload.d.ts.map +1 -0
- package/dist/rooms/keys/act/0.12/payload.js +319 -0
- package/dist/rooms/keys/act/0.12/payload.js.map +1 -0
- package/dist/rooms/keys/act/0.2/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.2/payload.js +1 -1
- package/dist/rooms/keys/act/0.3/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.3/payload.js +1 -1
- package/dist/rooms/keys/act/0.4/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.4/payload.js +1 -1
- package/dist/rooms/keys/act/0.5/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.5/payload.js +1 -1
- package/dist/rooms/keys/act/0.6/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.6/payload.js +1 -1
- package/dist/rooms/keys/act/0.7/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.7/payload.js +1 -1
- package/dist/rooms/keys/act/0.8/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.8/payload.js +1 -1
- package/dist/rooms/keys/act/0.9/payload.d.ts +4 -4
- package/dist/rooms/keys/act/0.9/payload.js +1 -1
- package/dist/rooms/keys/browse/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/browse/0.1/payload.js +1 -1
- package/dist/rooms/keys/browse/0.2/payload.d.ts +4 -4
- package/dist/rooms/keys/browse/0.2/payload.js +1 -1
- package/dist/rooms/keys/browse/0.3/payload.d.ts +14 -2
- package/dist/rooms/keys/browse/0.3/payload.d.ts.map +1 -1
- package/dist/rooms/keys/browse/0.3/payload.js +1 -1
- package/dist/rooms/keys/browse/0.3/payload.js.map +1 -1
- package/dist/rooms/keys/browse/0.4/payload.d.ts +1127 -0
- package/dist/rooms/keys/browse/0.4/payload.d.ts.map +1 -0
- package/dist/rooms/keys/browse/0.4/payload.js +658 -0
- package/dist/rooms/keys/browse/0.4/payload.js.map +1 -0
- package/dist/rooms/keys/changed/0.1/payload.d.ts +173 -0
- package/dist/rooms/keys/changed/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/changed/0.1/payload.js +99 -0
- package/dist/rooms/keys/changed/0.1/payload.js.map +1 -0
- package/dist/rooms/keys/profile/read/0.1/payload.d.ts +56 -4
- package/dist/rooms/keys/profile/read/0.1/payload.d.ts.map +1 -1
- package/dist/rooms/keys/profile/read/0.1/payload.js +28 -2
- package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/profile/write/0.1/payload.d.ts +56 -4
- package/dist/rooms/keys/profile/write/0.1/payload.d.ts.map +1 -1
- package/dist/rooms/keys/profile/write/0.1/payload.js +28 -2
- package/dist/rooms/keys/profile/write/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/read/0.1/payload.d.ts +14 -2
- package/dist/rooms/keys/read/0.1/payload.d.ts.map +1 -1
- package/dist/rooms/keys/read/0.1/payload.js +1 -1
- package/dist/rooms/keys/read/0.1/payload.js.map +1 -1
- package/dist/rooms/keys/read/0.2/payload.d.ts +1287 -0
- package/dist/rooms/keys/read/0.2/payload.d.ts.map +1 -0
- package/dist/rooms/keys/read/0.2/payload.js +689 -0
- package/dist/rooms/keys/read/0.2/payload.js.map +1 -0
- package/dist/rooms/keys/seal/0.1/payload.d.ts +4 -4
- package/dist/rooms/keys/seal/0.1/payload.js +1 -1
- package/dist/rooms/keys/seal/0.2/payload.d.ts +13 -2
- package/dist/rooms/keys/seal/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/keys/seal/0.2/payload.js +1 -1
- package/dist/rooms/keys/seal/0.2/payload.js.map +1 -1
- package/dist/rooms/keys/seal/0.3/payload.d.ts +402 -0
- package/dist/rooms/keys/seal/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/keys/seal/0.3/payload.js +229 -0
- package/dist/rooms/keys/seal/0.3/payload.js.map +1 -0
- package/dist/rooms/keys/watch/0.1/payload.d.ts +652 -0
- package/dist/rooms/keys/watch/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/keys/watch/0.1/payload.js +343 -0
- package/dist/rooms/keys/watch/0.1/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 +13 -2
- package/dist/rooms/records/get/0.2/payload.d.ts.map +1 -1
- package/dist/rooms/records/get/0.2/payload.js +1 -1
- package/dist/rooms/records/get/0.2/payload.js.map +1 -1
- package/dist/rooms/records/get/0.3/payload.d.ts +1064 -0
- package/dist/rooms/records/get/0.3/payload.d.ts.map +1 -0
- package/dist/rooms/records/get/0.3/payload.js +571 -0
- package/dist/rooms/records/get/0.3/payload.js.map +1 -0
- package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.1/payload.js +1 -1
- package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.2/payload.js +1 -1
- package/dist/rooms/records/list/0.3/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.3/payload.js +1 -1
- package/dist/rooms/records/list/0.4/payload.d.ts +4 -4
- package/dist/rooms/records/list/0.4/payload.js +1 -1
- package/dist/rooms/records/list/0.5/payload.d.ts +13 -2
- package/dist/rooms/records/list/0.5/payload.d.ts.map +1 -1
- package/dist/rooms/records/list/0.5/payload.js +1 -1
- package/dist/rooms/records/list/0.5/payload.js.map +1 -1
- package/dist/rooms/records/list/0.6/payload.d.ts +1096 -0
- package/dist/rooms/records/list/0.6/payload.d.ts.map +1 -0
- package/dist/rooms/records/list/0.6/payload.js +596 -0
- package/dist/rooms/records/list/0.6/payload.js.map +1 -0
- package/dist/rooms/records/put/0.1/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.1/payload.js +1 -1
- package/dist/rooms/records/put/0.2/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.2/payload.js +1 -1
- package/dist/rooms/records/put/0.3/payload.d.ts +4 -4
- package/dist/rooms/records/put/0.3/payload.js +1 -1
- package/dist/rooms/records/put/0.4/payload.d.ts +146 -6
- package/dist/rooms/records/put/0.4/payload.d.ts.map +1 -1
- package/dist/rooms/records/put/0.4/payload.js +81 -3
- package/dist/rooms/records/put/0.4/payload.js.map +1 -1
- package/dist/rooms/records/put/0.5/payload.d.ts +1808 -0
- package/dist/rooms/records/put/0.5/payload.d.ts.map +1 -0
- package/dist/rooms/records/put/0.5/payload.js +984 -0
- package/dist/rooms/records/put/0.5/payload.js.map +1 -0
- package/dist/rooms/watch/0.1/payload.d.ts +497 -0
- package/dist/rooms/watch/0.1/payload.d.ts.map +1 -0
- package/dist/rooms/watch/0.1/payload.js +268 -0
- package/dist/rooms/watch/0.1/payload.js.map +1 -0
- package/dist/vtc/_shared/0.7/network-membership.d.ts +16 -0
- package/dist/vtc/_shared/0.7/network-membership.d.ts.map +1 -0
- package/dist/vtc/_shared/0.7/network-membership.js +6 -0
- package/dist/vtc/_shared/0.7/network-membership.js.map +1 -0
- package/dist/vtc/boards/delete/0.1/payload.d.ts +416 -0
- package/dist/vtc/boards/delete/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/boards/delete/0.1/payload.js +236 -0
- package/dist/vtc/boards/delete/0.1/payload.js.map +1 -0
- package/dist/vtc/boards/update/0.1/payload.d.ts +147 -2
- package/dist/vtc/boards/update/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/boards/update/0.1/payload.js +72 -0
- package/dist/vtc/boards/update/0.1/payload.js.map +1 -1
- package/dist/vtc/elections/list/0.5/payload.d.ts +3 -3
- package/dist/vtc/elections/list/0.5/payload.js +1 -1
- package/dist/vtc/elections/list/0.5/payload.js.map +1 -1
- package/dist/vtc/elections/show/0.6/payload.d.ts +3 -3
- package/dist/vtc/elections/show/0.6/payload.js +1 -1
- package/dist/vtc/elections/show/0.6/payload.js.map +1 -1
- package/dist/vtc/elections/tombstones/show/0.1/payload.d.ts +593 -0
- package/dist/vtc/elections/tombstones/show/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/elections/tombstones/show/0.1/payload.js +335 -0
- package/dist/vtc/elections/tombstones/show/0.1/payload.js.map +1 -0
- package/dist/vtc/networks/deliver/0.1/payload.d.ts +354 -0
- package/dist/vtc/networks/deliver/0.1/payload.d.ts.map +1 -0
- package/dist/vtc/networks/deliver/0.1/payload.js +213 -0
- package/dist/vtc/networks/deliver/0.1/payload.js.map +1 -0
- package/dist/vtc/networks/evidence/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/evidence/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/evidence/0.1/payload.js +1 -1
- package/dist/vtc/networks/evidence/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/evidence/0.2/payload.d.ts +412 -0
- package/dist/vtc/networks/evidence/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/evidence/0.2/payload.js +233 -0
- package/dist/vtc/networks/evidence/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/groups/register/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/groups/register/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/groups/register/0.1/payload.js +1 -1
- package/dist/vtc/networks/groups/register/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/groups/register/0.2/payload.d.ts +680 -0
- package/dist/vtc/networks/groups/register/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/groups/register/0.2/payload.js +401 -0
- package/dist/vtc/networks/groups/register/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/join/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/join/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/join/0.1/payload.js +1 -1
- package/dist/vtc/networks/join/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/join/0.2/payload.d.ts +760 -0
- package/dist/vtc/networks/join/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/join/0.2/payload.js +445 -0
- package/dist/vtc/networks/join/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/leave/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/leave/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/leave/0.1/payload.js +1 -1
- package/dist/vtc/networks/leave/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/leave/0.2/payload.d.ts +664 -0
- package/dist/vtc/networks/leave/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/leave/0.2/payload.js +393 -0
- package/dist/vtc/networks/leave/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/list/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/list/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/list/0.1/payload.js +1 -1
- package/dist/vtc/networks/list/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/list/0.2/payload.d.ts +713 -0
- package/dist/vtc/networks/list/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/list/0.2/payload.js +417 -0
- package/dist/vtc/networks/list/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/repudiate/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/repudiate/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/repudiate/0.1/payload.js +1 -1
- package/dist/vtc/networks/repudiate/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/repudiate/0.2/payload.d.ts +680 -0
- package/dist/vtc/networks/repudiate/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/repudiate/0.2/payload.js +400 -0
- package/dist/vtc/networks/repudiate/0.2/payload.js.map +1 -0
- package/dist/vtc/networks/show/0.1/payload.d.ts +14 -2
- package/dist/vtc/networks/show/0.1/payload.d.ts.map +1 -1
- package/dist/vtc/networks/show/0.1/payload.js +1 -1
- package/dist/vtc/networks/show/0.1/payload.js.map +1 -1
- package/dist/vtc/networks/show/0.2/payload.d.ts +650 -0
- package/dist/vtc/networks/show/0.2/payload.d.ts.map +1 -0
- package/dist/vtc/networks/show/0.2/payload.js +388 -0
- package/dist/vtc/networks/show/0.2/payload.js.map +1 -0
- package/package.json +1 -1
- package/src/_extends.ts +5 -0
- package/src/_shared/components.ts +352 -1
- package/src/did-management/stats/set-resolution/0.1/payload.ts +312 -0
- package/src/index.ts +75 -0
- package/src/rooms/_shared/0.1/room.ts +1 -1
- package/src/rooms/_shared/0.2/room.ts +1 -1
- package/src/rooms/_shared/0.3/member-profile.ts +11 -0
- package/src/rooms/changed/0.1/payload.ts +115 -0
- package/src/rooms/keys/act/0.1/payload.ts +5 -5
- package/src/rooms/keys/act/0.10/payload.ts +15 -3
- package/src/rooms/keys/act/0.11/payload.ts +408 -0
- package/src/rooms/keys/act/0.12/payload.ts +396 -0
- package/src/rooms/keys/act/0.2/payload.ts +5 -5
- package/src/rooms/keys/act/0.3/payload.ts +5 -5
- package/src/rooms/keys/act/0.4/payload.ts +5 -5
- package/src/rooms/keys/act/0.5/payload.ts +5 -5
- package/src/rooms/keys/act/0.6/payload.ts +5 -5
- package/src/rooms/keys/act/0.7/payload.ts +5 -5
- package/src/rooms/keys/act/0.8/payload.ts +5 -5
- package/src/rooms/keys/act/0.9/payload.ts +5 -5
- package/src/rooms/keys/browse/0.1/payload.ts +5 -5
- package/src/rooms/keys/browse/0.2/payload.ts +5 -5
- package/src/rooms/keys/browse/0.3/payload.ts +15 -3
- package/src/rooms/keys/browse/0.4/payload.ts +730 -0
- package/src/rooms/keys/changed/0.1/payload.ts +138 -0
- package/src/rooms/keys/profile/read/0.1/payload.ts +28 -2
- package/src/rooms/keys/profile/write/0.1/payload.ts +28 -2
- package/src/rooms/keys/read/0.1/payload.ts +15 -3
- package/src/rooms/keys/read/0.2/payload.ts +855 -0
- package/src/rooms/keys/seal/0.1/payload.ts +5 -5
- package/src/rooms/keys/seal/0.2/payload.ts +14 -3
- package/src/rooms/keys/seal/0.3/payload.ts +282 -0
- package/src/rooms/keys/watch/0.1/payload.ts +452 -0
- package/src/rooms/records/get/0.1/payload.ts +5 -5
- package/src/rooms/records/get/0.2/payload.ts +14 -3
- package/src/rooms/records/get/0.3/payload.ts +684 -0
- package/src/rooms/records/list/0.1/payload.ts +5 -5
- package/src/rooms/records/list/0.2/payload.ts +5 -5
- package/src/rooms/records/list/0.3/payload.ts +5 -5
- package/src/rooms/records/list/0.4/payload.ts +5 -5
- package/src/rooms/records/list/0.5/payload.ts +14 -3
- package/src/rooms/records/list/0.6/payload.ts +673 -0
- package/src/rooms/records/put/0.1/payload.ts +5 -5
- package/src/rooms/records/put/0.2/payload.ts +5 -5
- package/src/rooms/records/put/0.3/payload.ts +5 -5
- package/src/rooms/records/put/0.4/payload.ts +95 -5
- package/src/rooms/records/put/0.5/payload.ts +1095 -0
- package/src/rooms/watch/0.1/payload.ts +340 -0
- package/src/vtc/_shared/0.7/network-membership.ts +17 -0
- package/src/vtc/boards/delete/0.1/payload.ts +293 -0
- package/src/vtc/boards/update/0.1/payload.ts +91 -2
- package/src/vtc/elections/list/0.5/payload.ts +2 -2
- package/src/vtc/elections/show/0.6/payload.ts +2 -2
- package/src/vtc/elections/tombstones/show/0.1/payload.ts +401 -0
- package/src/vtc/networks/deliver/0.1/payload.ts +254 -0
- package/src/vtc/networks/evidence/0.1/payload.ts +15 -3
- package/src/vtc/networks/evidence/0.2/payload.ts +290 -0
- package/src/vtc/networks/groups/register/0.1/payload.ts +15 -3
- package/src/vtc/networks/groups/register/0.2/payload.ts +446 -0
- package/src/vtc/networks/join/0.1/payload.ts +15 -3
- package/src/vtc/networks/join/0.2/payload.ts +492 -0
- package/src/vtc/networks/leave/0.1/payload.ts +15 -3
- package/src/vtc/networks/leave/0.2/payload.ts +434 -0
- package/src/vtc/networks/list/0.1/payload.ts +15 -3
- package/src/vtc/networks/list/0.2/payload.ts +463 -0
- package/src/vtc/networks/repudiate/0.1/payload.ts +15 -3
- package/src/vtc/networks/repudiate/0.2/payload.ts +445 -0
- package/src/vtc/networks/show/0.1/payload.ts +15 -3
- package/src/vtc/networks/show/0.2/payload.ts +425 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
|
|
3
|
+
* Source: specs/rooms/keys/changed/0.1/payload.schema.json
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import type { Ext } from "../../../../_shared/components.js";
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* One-way signal from a member's key holder to the client that asked it to watch a room with rooms/keys/watch: the room's host signalled (rooms/changed) that the room has moved past the version the client had read to. The room, the member and host the watch was armed for, and the room's latest version — nothing about what changed. There is no #response form. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
|
|
11
|
+
*/
|
|
12
|
+
export interface RoomsKeysChangedPayload {
|
|
13
|
+
/**
|
|
14
|
+
* The room, exactly as the host's signal named it — which is as the client named it in rooms/keys/watch.
|
|
15
|
+
*/
|
|
16
|
+
roomId: string;
|
|
17
|
+
/**
|
|
18
|
+
* The member the watch was armed as, as the client named it: the persona to read the room as.
|
|
19
|
+
*/
|
|
20
|
+
member: string;
|
|
21
|
+
/**
|
|
22
|
+
* The host the watch was armed at, and that signalled: where to read the room.
|
|
23
|
+
*/
|
|
24
|
+
host: string;
|
|
25
|
+
/**
|
|
26
|
+
* The host signal's latestVersion, unaltered. A hint for the reader, who learns what changed only by reading.
|
|
27
|
+
*/
|
|
28
|
+
latestVersion: number;
|
|
29
|
+
/**
|
|
30
|
+
* Ecosystem-defined extension members per SPEC.md §4.5.1. A key holder MUST NOT put anything here about what changed.
|
|
31
|
+
*/
|
|
32
|
+
ext?: Ext;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
/** Shared definitions this specification references, re-exported under the names it used to declare them with. */
|
|
36
|
+
export type { Ext };
|
|
37
|
+
|
|
38
|
+
/** Trust Task type URI. */
|
|
39
|
+
export const TYPE_URI = "https://trusttasks.org/spec/rooms/keys/changed/0.1" as const;
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* The earlier version of this specification that this one declares it
|
|
43
|
+
* extends (front matter `extends`, SPEC §5.2 "Declared extension"), or
|
|
44
|
+
* `null`. Only the direct declaration — follow the chain with
|
|
45
|
+
* `extendsChain` / `readForSpec`.
|
|
46
|
+
*/
|
|
47
|
+
export const EXTENDS: string | null = null;
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Why this version is deprecated, or `null` while it is current. A
|
|
51
|
+
* superseded or retired version is still supported, and is withdrawn from
|
|
52
|
+
* this package in a later scheduled batch (SPEC "Superseded and Withdrawn
|
|
53
|
+
* Versions").
|
|
54
|
+
*/
|
|
55
|
+
export const DEPRECATION: string | null = null;
|
|
56
|
+
|
|
57
|
+
/** Stable alias for this specification's request payload shape. */
|
|
58
|
+
export type Payload = RoomsKeysChangedPayload;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* This specification's payload schema, as a value.
|
|
62
|
+
*
|
|
63
|
+
* SPEC.md §7.2 item 2 is performed against this. It is shipped as data
|
|
64
|
+
* rather than only as a `.json` file because TypeScript types are erased
|
|
65
|
+
* at runtime: without a schema a consumer has nothing to validate, and
|
|
66
|
+
* every REQUIRED payload member is optional in practice. Cross-file
|
|
67
|
+
* `$ref`s are already inlined, so it needs no resolver.
|
|
68
|
+
*/
|
|
69
|
+
export const PAYLOAD_SCHEMA = {
|
|
70
|
+
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
71
|
+
"$id": "https://trusttasks.org/spec/rooms/keys/changed/0.1",
|
|
72
|
+
"title": "Rooms Keys — Changed — payload",
|
|
73
|
+
"description": "One-way signal from a member's key holder to the client that asked it to watch a room with rooms/keys/watch: the room's host signalled (rooms/changed) that the room has moved past the version the client had read to. The room, the member and host the watch was armed for, and the room's latest version — nothing about what changed. There is no #response form. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.",
|
|
74
|
+
"type": "object",
|
|
75
|
+
"additionalProperties": false,
|
|
76
|
+
"required": [
|
|
77
|
+
"roomId",
|
|
78
|
+
"member",
|
|
79
|
+
"host",
|
|
80
|
+
"latestVersion"
|
|
81
|
+
],
|
|
82
|
+
"properties": {
|
|
83
|
+
"roomId": {
|
|
84
|
+
"type": "string",
|
|
85
|
+
"minLength": 1,
|
|
86
|
+
"maxLength": 2048,
|
|
87
|
+
"description": "The room, exactly as the host's signal named it — which is as the client named it in rooms/keys/watch."
|
|
88
|
+
},
|
|
89
|
+
"member": {
|
|
90
|
+
"type": "string",
|
|
91
|
+
"pattern": "^did:",
|
|
92
|
+
"maxLength": 2048,
|
|
93
|
+
"description": "The member the watch was armed as, as the client named it: the persona to read the room as."
|
|
94
|
+
},
|
|
95
|
+
"host": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"pattern": "^did:",
|
|
98
|
+
"maxLength": 2048,
|
|
99
|
+
"description": "The host the watch was armed at, and that signalled: where to read the room."
|
|
100
|
+
},
|
|
101
|
+
"latestVersion": {
|
|
102
|
+
"type": "integer",
|
|
103
|
+
"minimum": 1,
|
|
104
|
+
"description": "The host signal's latestVersion, unaltered. A hint for the reader, who learns what changed only by reading."
|
|
105
|
+
},
|
|
106
|
+
"ext": {
|
|
107
|
+
"$ref": "#/$defs/Ext",
|
|
108
|
+
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1. A key holder MUST NOT put anything here about what changed."
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
"$defs": {
|
|
112
|
+
"Ext": {
|
|
113
|
+
"title": "Ext",
|
|
114
|
+
"description": "Vendor-namespaced extension object per SPEC.md §4.5.1. Each immediate key MUST be a reverse-DNS namespace; structure under each namespace is opaque to the framework.",
|
|
115
|
+
"type": "object",
|
|
116
|
+
"minProperties": 1,
|
|
117
|
+
"additionalProperties": true,
|
|
118
|
+
"propertyNames": {
|
|
119
|
+
"pattern": "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
} as const;
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* SPEC.md §7.2 policy for the request variant, from this specification's
|
|
127
|
+
* front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
|
|
128
|
+
* per-specification and cannot be derived from the document alone, and
|
|
129
|
+
* item 2 needs the schema this carries.
|
|
130
|
+
*/
|
|
131
|
+
export const SPEC = {
|
|
132
|
+
typeUri: TYPE_URI,
|
|
133
|
+
isBearer: false,
|
|
134
|
+
isProofRequired: false,
|
|
135
|
+
isRecipientRequired: true,
|
|
136
|
+
isIssuedAtRequired: false,
|
|
137
|
+
payloadSchema: PAYLOAD_SCHEMA,
|
|
138
|
+
} as const;
|
|
@@ -1272,7 +1272,7 @@ export const PAYLOAD_SCHEMA = {
|
|
|
1272
1272
|
"required": [
|
|
1273
1273
|
"name"
|
|
1274
1274
|
],
|
|
1275
|
-
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
1275
|
+
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in place, additively, as `recordMembers` did, or in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
1276
1276
|
"properties": {
|
|
1277
1277
|
"name": {
|
|
1278
1278
|
"type": "string",
|
|
@@ -1304,6 +1304,19 @@ export const PAYLOAD_SCHEMA = {
|
|
|
1304
1304
|
"maxLength": 16,
|
|
1305
1305
|
"description": "One emoji — a single extended grapheme cluster, such as `📋` — that a surface MAY show beside the name. Text, rendered as text: never an image, never a URL, never anything a reader fetches, since a fetched icon would tell whoever serves it which member opened which room, and when. A reader that cannot render it shows nothing in its place."
|
|
1306
1306
|
},
|
|
1307
|
+
"recordMembers": {
|
|
1308
|
+
"type": "array",
|
|
1309
|
+
"minItems": 1,
|
|
1310
|
+
"maxItems": 32,
|
|
1311
|
+
"uniqueItems": true,
|
|
1312
|
+
"items": {
|
|
1313
|
+
"type": "string",
|
|
1314
|
+
"minLength": 1,
|
|
1315
|
+
"maxLength": 64,
|
|
1316
|
+
"pattern": "^[a-z][A-Za-z0-9]*$"
|
|
1317
|
+
},
|
|
1318
|
+
"description": "The optional `SealedRecordBody` members — and on an `open` room the `cleartext` members of `rooms/records/put` — that the room's writers may use beyond the base set, as a set: order carries no meaning. Defined values: `kind`, `inReplyTo`, `writtenAt`, `editedAt`, and `width`, `height` and `preview`, which name the `FileManifest` members of those names inside a record's `file`. A writer MUST NOT write a member this governs unless the room's current profile lists it; absent means none (`SealedRecordBody`, *When a writer may use these members*). A writer MAY rely on a profile it resolved within the room's current epoch. The base set is every other member of `SealedRecordBody`, which a writer may always use. A value a writer does not know grants it nothing. Set by a member whose authority confers `curate` or `admin` (who may write the profile at all) — with `rooms/keys/profile/write` on a sealed tier, or `rooms/records/put` at `room-profile` on an `open` room — and never by default. Whether the room's readers are ready is the owner's or a curator's decision, made out of band; the order is readers (profile readers included, since a reader that predates this member refuses the profile carrying it), then the owner's key holder, which re-writes the profile after a removal and so MUST accept this member before any profile carries it, then on the sealed tiers the key holders that seal for writers, then the profile (`SealedRecordBody`, *Turning them on*). Listing a member never obliges a writer to use it, and removing one stops writers using it by the room's next epoch at the latest; records already written keep it."
|
|
1319
|
+
},
|
|
1307
1320
|
"ext": {
|
|
1308
1321
|
"$ref": "#/$defs/Ext",
|
|
1309
1322
|
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1. A reader ignores what it does not understand."
|
|
@@ -1562,7 +1575,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
1562
1575
|
"required": [
|
|
1563
1576
|
"name"
|
|
1564
1577
|
],
|
|
1565
|
-
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
1578
|
+
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in place, additively, as `recordMembers` did, or in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
1566
1579
|
"properties": {
|
|
1567
1580
|
"name": {
|
|
1568
1581
|
"type": "string",
|
|
@@ -1594,6 +1607,19 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
1594
1607
|
"maxLength": 16,
|
|
1595
1608
|
"description": "One emoji — a single extended grapheme cluster, such as `📋` — that a surface MAY show beside the name. Text, rendered as text: never an image, never a URL, never anything a reader fetches, since a fetched icon would tell whoever serves it which member opened which room, and when. A reader that cannot render it shows nothing in its place."
|
|
1596
1609
|
},
|
|
1610
|
+
"recordMembers": {
|
|
1611
|
+
"type": "array",
|
|
1612
|
+
"minItems": 1,
|
|
1613
|
+
"maxItems": 32,
|
|
1614
|
+
"uniqueItems": true,
|
|
1615
|
+
"items": {
|
|
1616
|
+
"type": "string",
|
|
1617
|
+
"minLength": 1,
|
|
1618
|
+
"maxLength": 64,
|
|
1619
|
+
"pattern": "^[a-z][A-Za-z0-9]*$"
|
|
1620
|
+
},
|
|
1621
|
+
"description": "The optional `SealedRecordBody` members — and on an `open` room the `cleartext` members of `rooms/records/put` — that the room's writers may use beyond the base set, as a set: order carries no meaning. Defined values: `kind`, `inReplyTo`, `writtenAt`, `editedAt`, and `width`, `height` and `preview`, which name the `FileManifest` members of those names inside a record's `file`. A writer MUST NOT write a member this governs unless the room's current profile lists it; absent means none (`SealedRecordBody`, *When a writer may use these members*). A writer MAY rely on a profile it resolved within the room's current epoch. The base set is every other member of `SealedRecordBody`, which a writer may always use. A value a writer does not know grants it nothing. Set by a member whose authority confers `curate` or `admin` (who may write the profile at all) — with `rooms/keys/profile/write` on a sealed tier, or `rooms/records/put` at `room-profile` on an `open` room — and never by default. Whether the room's readers are ready is the owner's or a curator's decision, made out of band; the order is readers (profile readers included, since a reader that predates this member refuses the profile carrying it), then the owner's key holder, which re-writes the profile after a removal and so MUST accept this member before any profile carries it, then on the sealed tiers the key holders that seal for writers, then the profile (`SealedRecordBody`, *Turning them on*). Listing a member never obliges a writer to use it, and removing one stops writers using it by the room's next epoch at the latest; records already written keep it."
|
|
1622
|
+
},
|
|
1597
1623
|
"ext": {
|
|
1598
1624
|
"$ref": "#/$defs/Ext",
|
|
1599
1625
|
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1. A reader ignores what it does not understand."
|
|
@@ -223,7 +223,7 @@ export const PAYLOAD_SCHEMA = {
|
|
|
223
223
|
"required": [
|
|
224
224
|
"name"
|
|
225
225
|
],
|
|
226
|
-
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
226
|
+
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in place, additively, as `recordMembers` did, or in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
227
227
|
"properties": {
|
|
228
228
|
"name": {
|
|
229
229
|
"type": "string",
|
|
@@ -255,6 +255,19 @@ export const PAYLOAD_SCHEMA = {
|
|
|
255
255
|
"maxLength": 16,
|
|
256
256
|
"description": "One emoji — a single extended grapheme cluster, such as `📋` — that a surface MAY show beside the name. Text, rendered as text: never an image, never a URL, never anything a reader fetches, since a fetched icon would tell whoever serves it which member opened which room, and when. A reader that cannot render it shows nothing in its place."
|
|
257
257
|
},
|
|
258
|
+
"recordMembers": {
|
|
259
|
+
"type": "array",
|
|
260
|
+
"minItems": 1,
|
|
261
|
+
"maxItems": 32,
|
|
262
|
+
"uniqueItems": true,
|
|
263
|
+
"items": {
|
|
264
|
+
"type": "string",
|
|
265
|
+
"minLength": 1,
|
|
266
|
+
"maxLength": 64,
|
|
267
|
+
"pattern": "^[a-z][A-Za-z0-9]*$"
|
|
268
|
+
},
|
|
269
|
+
"description": "The optional `SealedRecordBody` members — and on an `open` room the `cleartext` members of `rooms/records/put` — that the room's writers may use beyond the base set, as a set: order carries no meaning. Defined values: `kind`, `inReplyTo`, `writtenAt`, `editedAt`, and `width`, `height` and `preview`, which name the `FileManifest` members of those names inside a record's `file`. A writer MUST NOT write a member this governs unless the room's current profile lists it; absent means none (`SealedRecordBody`, *When a writer may use these members*). A writer MAY rely on a profile it resolved within the room's current epoch. The base set is every other member of `SealedRecordBody`, which a writer may always use. A value a writer does not know grants it nothing. Set by a member whose authority confers `curate` or `admin` (who may write the profile at all) — with `rooms/keys/profile/write` on a sealed tier, or `rooms/records/put` at `room-profile` on an `open` room — and never by default. Whether the room's readers are ready is the owner's or a curator's decision, made out of band; the order is readers (profile readers included, since a reader that predates this member refuses the profile carrying it), then the owner's key holder, which re-writes the profile after a removal and so MUST accept this member before any profile carries it, then on the sealed tiers the key holders that seal for writers, then the profile (`SealedRecordBody`, *Turning them on*). Listing a member never obliges a writer to use it, and removing one stops writers using it by the room's next epoch at the latest; records already written keep it."
|
|
270
|
+
},
|
|
258
271
|
"ext": {
|
|
259
272
|
"$ref": "#/$defs/Ext",
|
|
260
273
|
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1. A reader ignores what it does not understand."
|
|
@@ -333,7 +346,7 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
333
346
|
"required": [
|
|
334
347
|
"name"
|
|
335
348
|
],
|
|
336
|
-
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
349
|
+
"description": "What a room says about itself to its own members: a name and, optionally, a description, short tags and an emoji, so that a member's wallet, portal or CLI can show what each room is rather than a DID.\n\n**It lives in the room, and only there.** A profile is carried in a record of the room (`RoomProfileStatement`), sealed on `attributed` and `private` rooms like every other record, so the room's host stores ciphertext and learns neither the name nor anything else here. It is never put in a credential — credentials are presented to hosts — nor in a host's record of the room, in `rooms/create` or `rooms/owner/register`, or in any member a host can read. On an `open` room it is cleartext, as everything in an open room is.\n\n**Plain text, never instructions.** Every member is free text chosen by whoever wrote the profile and shown to every member of the room. A reader renders `name`, `description` and `tags` as text — never as markup, never as a link it follows — removes or replaces control characters before showing them, and MUST NOT treat any of it as instructions, which matters most for an agent acting for a member. A writer MUST NOT put personal data or a credential in any member.\n\n**Growth.** A new optional member arrives in place, additively, as `recordMembers` did, or in a later version of this component. A reader refuses a member it does not know (the `SealedRecordBody` rules), so a profile carrying one is not shown by a reader that predates it, and a writer SHOULD NOT use a member it cannot expect the room's readers to know. An ecosystem extension goes in `ext`, which a reader that does not understand it ignores. A change no earlier reader could survive is a new statement under a new derivation label (`openvtc/room/profile/v2`), written beside this one until the room's readers have moved.",
|
|
337
350
|
"properties": {
|
|
338
351
|
"name": {
|
|
339
352
|
"type": "string",
|
|
@@ -365,6 +378,19 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
|
|
|
365
378
|
"maxLength": 16,
|
|
366
379
|
"description": "One emoji — a single extended grapheme cluster, such as `📋` — that a surface MAY show beside the name. Text, rendered as text: never an image, never a URL, never anything a reader fetches, since a fetched icon would tell whoever serves it which member opened which room, and when. A reader that cannot render it shows nothing in its place."
|
|
367
380
|
},
|
|
381
|
+
"recordMembers": {
|
|
382
|
+
"type": "array",
|
|
383
|
+
"minItems": 1,
|
|
384
|
+
"maxItems": 32,
|
|
385
|
+
"uniqueItems": true,
|
|
386
|
+
"items": {
|
|
387
|
+
"type": "string",
|
|
388
|
+
"minLength": 1,
|
|
389
|
+
"maxLength": 64,
|
|
390
|
+
"pattern": "^[a-z][A-Za-z0-9]*$"
|
|
391
|
+
},
|
|
392
|
+
"description": "The optional `SealedRecordBody` members — and on an `open` room the `cleartext` members of `rooms/records/put` — that the room's writers may use beyond the base set, as a set: order carries no meaning. Defined values: `kind`, `inReplyTo`, `writtenAt`, `editedAt`, and `width`, `height` and `preview`, which name the `FileManifest` members of those names inside a record's `file`. A writer MUST NOT write a member this governs unless the room's current profile lists it; absent means none (`SealedRecordBody`, *When a writer may use these members*). A writer MAY rely on a profile it resolved within the room's current epoch. The base set is every other member of `SealedRecordBody`, which a writer may always use. A value a writer does not know grants it nothing. Set by a member whose authority confers `curate` or `admin` (who may write the profile at all) — with `rooms/keys/profile/write` on a sealed tier, or `rooms/records/put` at `room-profile` on an `open` room — and never by default. Whether the room's readers are ready is the owner's or a curator's decision, made out of band; the order is readers (profile readers included, since a reader that predates this member refuses the profile carrying it), then the owner's key holder, which re-writes the profile after a removal and so MUST accept this member before any profile carries it, then on the sealed tiers the key holders that seal for writers, then the profile (`SealedRecordBody`, *Turning them on*). Listing a member never obliges a writer to use it, and removing one stops writers using it by the room's next epoch at the latest; records already written keep it."
|
|
393
|
+
},
|
|
368
394
|
"ext": {
|
|
369
395
|
"$ref": "#/$defs/Ext",
|
|
370
396
|
"description": "Ecosystem-defined extension members per SPEC.md §4.5.1. A reader ignores what it does not understand."
|
|
@@ -8,6 +8,8 @@ import type { DataCommitment, DigestMultibase, Ext, HeadVersion, ReadVerificatio
|
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* TODO: what the request payload of rooms/keys/read carries. The outer document members (id, type, issuer, recipient, issuedAt, expiresAt, proof) are owned by the framework — SPEC §6.3.
|
|
11
|
+
*
|
|
12
|
+
* @deprecated superseded by rooms/keys/read/0.2
|
|
11
13
|
*/
|
|
12
14
|
export interface RoomsKeysReadPayload {
|
|
13
15
|
/**
|
|
@@ -29,6 +31,8 @@ export interface RoomsKeysReadPayload {
|
|
|
29
31
|
}
|
|
30
32
|
/**
|
|
31
33
|
* Success response to rooms/keys/read. Type https://trusttasks.org/spec/rooms/keys/read/0.1#response.
|
|
34
|
+
*
|
|
35
|
+
* @deprecated superseded by rooms/keys/read/0.2
|
|
32
36
|
*/
|
|
33
37
|
export interface RoomsKeysReadResponsePayload {
|
|
34
38
|
roomId: string;
|
|
@@ -83,15 +87,23 @@ export const EXTENDS: string | null = null;
|
|
|
83
87
|
* this package in a later scheduled batch (SPEC "Superseded and Withdrawn
|
|
84
88
|
* Versions").
|
|
85
89
|
*/
|
|
86
|
-
export const DEPRECATION: string | null =
|
|
90
|
+
export const DEPRECATION: string | null = "superseded by rooms/keys/read/0.2";
|
|
87
91
|
|
|
88
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Stable alias for this specification's request payload shape.
|
|
94
|
+
*
|
|
95
|
+
* @deprecated superseded by rooms/keys/read/0.2
|
|
96
|
+
*/
|
|
89
97
|
export type Payload = RoomsKeysReadPayload;
|
|
90
98
|
|
|
91
99
|
/** Trust Task response type URI (request type URI + "#response"). */
|
|
92
100
|
export const RESPONSE_TYPE_URI = "https://trusttasks.org/spec/rooms/keys/read/0.1#response" as const;
|
|
93
101
|
|
|
94
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Stable alias for this specification's success-response payload shape.
|
|
104
|
+
*
|
|
105
|
+
* @deprecated superseded by rooms/keys/read/0.2
|
|
106
|
+
*/
|
|
95
107
|
export type Response = RoomsKeysReadResponsePayload;
|
|
96
108
|
|
|
97
109
|
/**
|