@openvtc/trust-tasks 0.27.0 → 0.27.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. package/CHANGELOG.md +267 -0
  2. package/dist/_runtime/freshness.d.ts +3 -1
  3. package/dist/_runtime/freshness.d.ts.map +1 -1
  4. package/dist/_runtime/freshness.js +4 -2
  5. package/dist/_runtime/freshness.js.map +1 -1
  6. package/dist/_shared/components.d.ts +361 -24
  7. package/dist/_shared/components.d.ts.map +1 -1
  8. package/dist/device/list/0.1/payload.d.ts +4 -4
  9. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.1/payload.js +4 -2
  11. package/dist/device/list/0.1/payload.js.map +1 -1
  12. package/dist/device/list/0.2/payload.d.ts +4 -4
  13. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  14. package/dist/device/list/0.2/payload.js +4 -2
  15. package/dist/device/list/0.2/payload.js.map +1 -1
  16. package/dist/device/register/0.1/payload.d.ts +4 -4
  17. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.1/payload.js +4 -2
  19. package/dist/device/register/0.1/payload.js.map +1 -1
  20. package/dist/device/register/0.2/payload.d.ts +4 -4
  21. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  22. package/dist/device/register/0.2/payload.js +4 -2
  23. package/dist/device/register/0.2/payload.js.map +1 -1
  24. package/dist/index.d.ts +31 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +31 -0
  27. package/dist/index.js.map +1 -1
  28. package/dist/rooms/_shared/0.1/room.d.ts +1 -1
  29. package/dist/rooms/_shared/0.1/room.d.ts.map +1 -1
  30. package/dist/rooms/create/0.2/payload.d.ts +534 -0
  31. package/dist/rooms/create/0.2/payload.d.ts.map +1 -0
  32. package/dist/rooms/create/0.2/payload.js +293 -0
  33. package/dist/rooms/create/0.2/payload.js.map +1 -0
  34. package/dist/rooms/epoch/chain/0.2/payload.d.ts +534 -0
  35. package/dist/rooms/epoch/chain/0.2/payload.d.ts.map +1 -0
  36. package/dist/rooms/epoch/chain/0.2/payload.js +292 -0
  37. package/dist/rooms/epoch/chain/0.2/payload.js.map +1 -0
  38. package/dist/rooms/epoch/prune/0.2/payload.d.ts +467 -0
  39. package/dist/rooms/epoch/prune/0.2/payload.d.ts.map +1 -0
  40. package/dist/rooms/epoch/prune/0.2/payload.js +251 -0
  41. package/dist/rooms/epoch/prune/0.2/payload.js.map +1 -0
  42. package/dist/rooms/info/0.2/payload.d.ts +1129 -0
  43. package/dist/rooms/info/0.2/payload.d.ts.map +1 -0
  44. package/dist/rooms/info/0.2/payload.js +618 -0
  45. package/dist/rooms/info/0.2/payload.js.map +1 -0
  46. package/dist/rooms/keys/backfill/0.2/payload.d.ts +380 -0
  47. package/dist/rooms/keys/backfill/0.2/payload.d.ts.map +1 -0
  48. package/dist/rooms/keys/backfill/0.2/payload.js +197 -0
  49. package/dist/rooms/keys/backfill/0.2/payload.js.map +1 -0
  50. package/dist/rooms/keys/browse/0.1/payload.d.ts +4 -4
  51. package/dist/rooms/keys/browse/0.1/payload.js +2 -2
  52. package/dist/rooms/keys/browse/0.1/payload.js.map +1 -1
  53. package/dist/rooms/keys/browse/0.2/payload.d.ts +941 -0
  54. package/dist/rooms/keys/browse/0.2/payload.d.ts.map +1 -0
  55. package/dist/rooms/keys/browse/0.2/payload.js +558 -0
  56. package/dist/rooms/keys/browse/0.2/payload.js.map +1 -0
  57. package/dist/rooms/keys/chain/0.2/payload.d.ts +450 -0
  58. package/dist/rooms/keys/chain/0.2/payload.d.ts.map +1 -0
  59. package/dist/rooms/keys/chain/0.2/payload.js +248 -0
  60. package/dist/rooms/keys/chain/0.2/payload.js.map +1 -0
  61. package/dist/rooms/keys/profile/read/0.1/payload.d.ts +4 -4
  62. package/dist/rooms/keys/profile/read/0.1/payload.js +2 -2
  63. package/dist/rooms/keys/profile/read/0.1/payload.js.map +1 -1
  64. package/dist/rooms/keys/read/0.1/payload.d.ts +4 -4
  65. package/dist/rooms/keys/read/0.1/payload.js +2 -2
  66. package/dist/rooms/keys/read/0.1/payload.js.map +1 -1
  67. package/dist/rooms/owner/anchor/0.1/payload.d.ts +4 -4
  68. package/dist/rooms/owner/anchor/0.1/payload.js +2 -2
  69. package/dist/rooms/owner/anchor/0.1/payload.js.map +1 -1
  70. package/dist/rooms/records/get/0.1/payload.d.ts +4 -4
  71. package/dist/rooms/records/get/0.1/payload.js +2 -2
  72. package/dist/rooms/records/get/0.1/payload.js.map +1 -1
  73. package/dist/rooms/records/get/0.2/payload.d.ts +4 -4
  74. package/dist/rooms/records/get/0.2/payload.js +2 -2
  75. package/dist/rooms/records/get/0.2/payload.js.map +1 -1
  76. package/dist/rooms/records/list/0.1/payload.d.ts +4 -4
  77. package/dist/rooms/records/list/0.1/payload.js +2 -2
  78. package/dist/rooms/records/list/0.1/payload.js.map +1 -1
  79. package/dist/rooms/records/list/0.2/payload.d.ts +4 -4
  80. package/dist/rooms/records/list/0.2/payload.js +2 -2
  81. package/dist/rooms/records/list/0.2/payload.js.map +1 -1
  82. package/dist/rooms/records/list/0.3/payload.d.ts +970 -0
  83. package/dist/rooms/records/list/0.3/payload.d.ts.map +1 -0
  84. package/dist/rooms/records/list/0.3/payload.js +526 -0
  85. package/dist/rooms/records/list/0.3/payload.js.map +1 -0
  86. package/dist/rooms/records/prune/0.1/payload.d.ts +706 -0
  87. package/dist/rooms/records/prune/0.1/payload.d.ts.map +1 -0
  88. package/dist/rooms/records/prune/0.1/payload.js +374 -0
  89. package/dist/rooms/records/prune/0.1/payload.js.map +1 -0
  90. package/dist/rooms/records/put/0.3/payload.d.ts +1212 -0
  91. package/dist/rooms/records/put/0.3/payload.d.ts.map +1 -0
  92. package/dist/rooms/records/put/0.3/payload.js +646 -0
  93. package/dist/rooms/records/put/0.3/payload.js.map +1 -0
  94. package/dist/rooms/records/retention/set/0.1/payload.d.ts +521 -0
  95. package/dist/rooms/records/retention/set/0.1/payload.d.ts.map +1 -0
  96. package/dist/rooms/records/retention/set/0.1/payload.js +276 -0
  97. package/dist/rooms/records/retention/set/0.1/payload.js.map +1 -0
  98. package/dist/vault/credentials/present/0.1/payload.d.ts +407 -0
  99. package/dist/vault/credentials/present/0.1/payload.d.ts.map +1 -0
  100. package/dist/vault/credentials/present/0.1/payload.js +217 -0
  101. package/dist/vault/credentials/present/0.1/payload.js.map +1 -0
  102. package/dist/voting/_shared/0.1/voting.d.ts +1 -1
  103. package/dist/voting/_shared/0.1/voting.d.ts.map +1 -1
  104. package/dist/voting/board/read/0.1/payload.d.ts +58 -2
  105. package/dist/voting/board/read/0.1/payload.d.ts.map +1 -1
  106. package/dist/voting/board/read/0.1/payload.js +36 -0
  107. package/dist/voting/board/read/0.1/payload.js.map +1 -1
  108. package/dist/voting/trustees/authorize/0.1/payload.d.ts +617 -0
  109. package/dist/voting/trustees/authorize/0.1/payload.d.ts.map +1 -0
  110. package/dist/voting/trustees/authorize/0.1/payload.js +386 -0
  111. package/dist/voting/trustees/authorize/0.1/payload.js.map +1 -0
  112. package/dist/voting/trustees/status/0.1/payload.d.ts +106 -2
  113. package/dist/voting/trustees/status/0.1/payload.d.ts.map +1 -1
  114. package/dist/voting/trustees/status/0.1/payload.js +48 -0
  115. package/dist/voting/trustees/status/0.1/payload.js.map +1 -1
  116. package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts +1832 -0
  117. package/dist/vta/pcs/trustee/deal/0.2/payload.d.ts.map +1 -0
  118. package/dist/vta/pcs/trustee/deal/0.2/payload.js +1077 -0
  119. package/dist/vta/pcs/trustee/deal/0.2/payload.js.map +1 -0
  120. package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts +758 -0
  121. package/dist/vta/pcs/trustee/decrypt/0.2/payload.d.ts.map +1 -0
  122. package/dist/vta/pcs/trustee/decrypt/0.2/payload.js +423 -0
  123. package/dist/vta/pcs/trustee/decrypt/0.2/payload.js.map +1 -0
  124. package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts +1867 -0
  125. package/dist/vta/pcs/trustee/justify/0.2/payload.d.ts.map +1 -0
  126. package/dist/vta/pcs/trustee/justify/0.2/payload.js +1095 -0
  127. package/dist/vta/pcs/trustee/justify/0.2/payload.js.map +1 -0
  128. package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts +1912 -0
  129. package/dist/vta/pcs/trustee/keys/0.2/payload.d.ts.map +1 -0
  130. package/dist/vta/pcs/trustee/keys/0.2/payload.js +1115 -0
  131. package/dist/vta/pcs/trustee/keys/0.2/payload.js.map +1 -0
  132. package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts +2228 -0
  133. package/dist/vta/pcs/vote-encrypted/0.2/payload.d.ts.map +1 -0
  134. package/dist/vta/pcs/vote-encrypted/0.2/payload.js +1300 -0
  135. package/dist/vta/pcs/vote-encrypted/0.2/payload.js.map +1 -0
  136. package/dist/vta/webvh/dids/create/1.2/payload.d.ts +961 -0
  137. package/dist/vta/webvh/dids/create/1.2/payload.d.ts.map +1 -0
  138. package/dist/vta/webvh/dids/create/1.2/payload.js +480 -0
  139. package/dist/vta/webvh/dids/create/1.2/payload.js.map +1 -0
  140. package/dist/vtc/_shared/0.1/room-migration.d.ts +16 -0
  141. package/dist/vtc/_shared/0.1/room-migration.d.ts.map +1 -0
  142. package/dist/vtc/_shared/0.1/room-migration.js +6 -0
  143. package/dist/vtc/_shared/0.1/room-migration.js.map +1 -0
  144. package/dist/vtc/_shared/0.1/room-storage.d.ts +1 -1
  145. package/dist/vtc/_shared/0.1/room-storage.d.ts.map +1 -1
  146. package/dist/vtc/_shared/0.2/room-storage.d.ts +16 -0
  147. package/dist/vtc/_shared/0.2/room-storage.d.ts.map +1 -0
  148. package/dist/vtc/_shared/0.2/room-storage.js +6 -0
  149. package/dist/vtc/_shared/0.2/room-storage.js.map +1 -0
  150. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts +31 -0
  151. package/dist/vtc/admin/events/_shared/0.4/topic.d.ts.map +1 -0
  152. package/dist/vtc/admin/events/_shared/0.4/topic.js +6 -0
  153. package/dist/vtc/admin/events/_shared/0.4/topic.js.map +1 -0
  154. package/dist/vtc/admin/events/event/0.4/payload.d.ts +172 -0
  155. package/dist/vtc/admin/events/event/0.4/payload.d.ts.map +1 -0
  156. package/dist/vtc/admin/events/event/0.4/payload.js +103 -0
  157. package/dist/vtc/admin/events/event/0.4/payload.js.map +1 -0
  158. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts +409 -0
  159. package/dist/vtc/admin/events/subscribe/0.4/payload.d.ts.map +1 -0
  160. package/dist/vtc/admin/events/subscribe/0.4/payload.js +238 -0
  161. package/dist/vtc/admin/events/subscribe/0.4/payload.js.map +1 -0
  162. package/dist/vtc/elections/show/0.1/payload.d.ts +86 -2
  163. package/dist/vtc/elections/show/0.1/payload.d.ts.map +1 -1
  164. package/dist/vtc/elections/show/0.1/payload.js +40 -0
  165. package/dist/vtc/elections/show/0.1/payload.js.map +1 -1
  166. package/dist/vtc/rooms/get/0.2/payload.d.ts +1966 -0
  167. package/dist/vtc/rooms/get/0.2/payload.d.ts.map +1 -0
  168. package/dist/vtc/rooms/get/0.2/payload.js +976 -0
  169. package/dist/vtc/rooms/get/0.2/payload.js.map +1 -0
  170. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts +595 -0
  171. package/dist/vtc/rooms/storage/migrate/0.2/payload.d.ts.map +1 -0
  172. package/dist/vtc/rooms/storage/migrate/0.2/payload.js +336 -0
  173. package/dist/vtc/rooms/storage/migrate/0.2/payload.js.map +1 -0
  174. package/dist/vtc/storage/configs/create/0.1/payload.d.ts +1 -1
  175. package/dist/vtc/storage/configs/create/0.1/payload.d.ts.map +1 -1
  176. package/dist/vtc/storage/configs/create/0.2/payload.d.ts +1360 -0
  177. package/dist/vtc/storage/configs/create/0.2/payload.d.ts.map +1 -0
  178. package/dist/vtc/storage/configs/create/0.2/payload.js +783 -0
  179. package/dist/vtc/storage/configs/create/0.2/payload.js.map +1 -0
  180. package/dist/vtc/storage/configs/get/0.1/payload.d.ts +1 -1
  181. package/dist/vtc/storage/configs/get/0.1/payload.d.ts.map +1 -1
  182. package/dist/vtc/storage/configs/get/0.2/payload.d.ts +1854 -0
  183. package/dist/vtc/storage/configs/get/0.2/payload.d.ts.map +1 -0
  184. package/dist/vtc/storage/configs/get/0.2/payload.js +1075 -0
  185. package/dist/vtc/storage/configs/get/0.2/payload.js.map +1 -0
  186. package/dist/vtc/storage/configs/list/0.1/payload.d.ts +1 -1
  187. package/dist/vtc/storage/configs/list/0.1/payload.d.ts.map +1 -1
  188. package/dist/vtc/storage/configs/list/0.2/payload.d.ts +1955 -0
  189. package/dist/vtc/storage/configs/list/0.2/payload.d.ts.map +1 -0
  190. package/dist/vtc/storage/configs/list/0.2/payload.js +1125 -0
  191. package/dist/vtc/storage/configs/list/0.2/payload.js.map +1 -0
  192. package/dist/vtc/storage/configs/update/0.1/payload.d.ts +1 -1
  193. package/dist/vtc/storage/configs/update/0.1/payload.d.ts.map +1 -1
  194. package/dist/vtc/storage/configs/update/0.2/payload.d.ts +1362 -0
  195. package/dist/vtc/storage/configs/update/0.2/payload.d.ts.map +1 -0
  196. package/dist/vtc/storage/configs/update/0.2/payload.js +782 -0
  197. package/dist/vtc/storage/configs/update/0.2/payload.js.map +1 -0
  198. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts +1 -1
  199. package/dist/vtc/storage/credentials/set/0.1/payload.d.ts.map +1 -1
  200. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts +979 -0
  201. package/dist/vtc/storage/credentials/set/0.2/payload.d.ts.map +1 -0
  202. package/dist/vtc/storage/credentials/set/0.2/payload.js +573 -0
  203. package/dist/vtc/storage/credentials/set/0.2/payload.js.map +1 -0
  204. package/package.json +1 -1
  205. package/src/_runtime/freshness.ts +4 -2
  206. package/src/_shared/components.ts +388 -24
  207. package/src/device/list/0.1/payload.ts +4 -2
  208. package/src/device/list/0.2/payload.ts +4 -2
  209. package/src/device/register/0.1/payload.ts +4 -2
  210. package/src/device/register/0.2/payload.ts +4 -2
  211. package/src/index.ts +31 -0
  212. package/src/rooms/_shared/0.1/room.ts +1 -1
  213. package/src/rooms/create/0.2/payload.ts +364 -0
  214. package/src/rooms/epoch/chain/0.2/payload.ts +347 -0
  215. package/src/rooms/epoch/prune/0.2/payload.ts +315 -0
  216. package/src/rooms/info/0.2/payload.ts +700 -0
  217. package/src/rooms/keys/backfill/0.2/payload.ts +260 -0
  218. package/src/rooms/keys/browse/0.1/payload.ts +2 -2
  219. package/src/rooms/keys/browse/0.2/payload.ts +628 -0
  220. package/src/rooms/keys/chain/0.2/payload.ts +308 -0
  221. package/src/rooms/keys/profile/read/0.1/payload.ts +2 -2
  222. package/src/rooms/keys/read/0.1/payload.ts +2 -2
  223. package/src/rooms/owner/anchor/0.1/payload.ts +2 -2
  224. package/src/rooms/records/get/0.1/payload.ts +2 -2
  225. package/src/rooms/records/get/0.2/payload.ts +2 -2
  226. package/src/rooms/records/list/0.1/payload.ts +2 -2
  227. package/src/rooms/records/list/0.2/payload.ts +2 -2
  228. package/src/rooms/records/list/0.3/payload.ts +601 -0
  229. package/src/rooms/records/prune/0.1/payload.ts +451 -0
  230. package/src/rooms/records/put/0.3/payload.ts +741 -0
  231. package/src/rooms/records/retention/set/0.1/payload.ts +338 -0
  232. package/src/vault/credentials/present/0.1/payload.ts +283 -0
  233. package/src/voting/_shared/0.1/voting.ts +1 -1
  234. package/src/voting/board/read/0.1/payload.ts +38 -2
  235. package/src/voting/trustees/authorize/0.1/payload.ts +434 -0
  236. package/src/voting/trustees/status/0.1/payload.ts +58 -2
  237. package/src/vta/pcs/trustee/deal/0.2/payload.ts +1148 -0
  238. package/src/vta/pcs/trustee/decrypt/0.2/payload.ts +500 -0
  239. package/src/vta/pcs/trustee/justify/0.2/payload.ts +1167 -0
  240. package/src/vta/pcs/trustee/keys/0.2/payload.ts +1194 -0
  241. package/src/vta/pcs/vote-encrypted/0.2/payload.ts +1369 -0
  242. package/src/vta/webvh/dids/create/1.2/payload.ts +660 -0
  243. package/src/vtc/_shared/0.1/room-migration.ts +17 -0
  244. package/src/vtc/_shared/0.1/room-storage.ts +1 -1
  245. package/src/vtc/_shared/0.2/room-storage.ts +17 -0
  246. package/src/vtc/admin/events/_shared/0.4/topic.ts +32 -0
  247. package/src/vtc/admin/events/event/0.4/payload.ts +137 -0
  248. package/src/vtc/admin/events/subscribe/0.4/payload.ts +318 -0
  249. package/src/vtc/elections/show/0.1/payload.ts +46 -2
  250. package/src/vtc/rooms/get/0.2/payload.ts +1372 -0
  251. package/src/vtc/rooms/storage/migrate/0.2/payload.ts +408 -0
  252. package/src/vtc/storage/configs/create/0.1/payload.ts +1 -1
  253. package/src/vtc/storage/configs/create/0.2/payload.ts +830 -0
  254. package/src/vtc/storage/configs/get/0.1/payload.ts +1 -1
  255. package/src/vtc/storage/configs/get/0.2/payload.ts +1110 -0
  256. package/src/vtc/storage/configs/list/0.1/payload.ts +1 -1
  257. package/src/vtc/storage/configs/list/0.2/payload.ts +1177 -0
  258. package/src/vtc/storage/configs/update/0.1/payload.ts +1 -1
  259. package/src/vtc/storage/configs/update/0.2/payload.ts +829 -0
  260. package/src/vtc/storage/credentials/set/0.1/payload.ts +1 -1
  261. package/src/vtc/storage/credentials/set/0.2/payload.ts +619 -0
@@ -0,0 +1,534 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/rooms/create/0.2/payload.schema.json
4
+ */
5
+ import type { AnchorCadence, Ext, RecordRetention, RetentionPolicy, Visibility } from "../../../_shared/components.js";
6
+ /**
7
+ * An owner registers a data room with a host. 0.2 adds `recordRetention`: how long the room keeps its records by age, stated at creation so that no record is ever removed under a rule its readers could not have read.
8
+ */
9
+ export interface RoomsCreatePayload {
10
+ /**
11
+ * The room's identifier, minted by its owner before this call. A host is told the identifier; it does not assign one, because a room whose identity the host chose could not move to another host.
12
+ */
13
+ roomId: string;
14
+ visibility: Visibility;
15
+ /**
16
+ * The room's accountable party: the controller of the room's identifier, the issuer of every credential in it, and the party a host addresses about quota, abuse, or lifecycle. Visible at every visibility, including `private` — a room has someone answerable for it.
17
+ */
18
+ ownerDid: string;
19
+ /**
20
+ * Whether this room keeps its history readable across a membership change. Absent means `chained`, which is the choice a room wants unless it has a reason not to: joining a room should mean being able to read it. A host MUST reject an epoch link for a room whose policy is `fromJoin` rather than storing one it declared it would not have.
21
+ */
22
+ retentionPolicy?: RetentionPolicy;
23
+ /**
24
+ * How long the host will hold the room after its epoch lapses without renewal, before storage may be reclaimed. Stated at creation rather than discovered: reclamation that surprises a member is a failure of the design, not of the member.
25
+ */
26
+ retentionDays?: number;
27
+ /**
28
+ * What this room intends about anchoring. OPTIONAL; absent reads as `manual`, which draws no expectation and is the honest default for a room whose owner has not decided. A host stores it and serves it back — it constrains nothing the host does.
29
+ */
30
+ anchorCadence?: AnchorCadence;
31
+ /**
32
+ * How long the room keeps its records, by age: which records `rooms/records/prune` may remove. OPTIONAL; absent means no record is ever eligible by age. Unlike `retentionPolicy` it is not fixed: a holder of `admin` changes it with `rooms/records/retention/set`.
33
+ */
34
+ recordRetention?: RecordRetention;
35
+ /**
36
+ * Ecosystem-defined extension members per SPEC.md §4.5.1.
37
+ */
38
+ ext?: Ext;
39
+ }
40
+ /**
41
+ * Success response to rooms/create. Type https://trusttasks.org/spec/rooms/create/0.2#response.
42
+ */
43
+ export interface RoomsCreateResponsePayload {
44
+ roomId: string;
45
+ /**
46
+ * Always 1 for a new room.
47
+ */
48
+ epoch: number;
49
+ /**
50
+ * Echoed so a caller knows what was recorded rather than what was asked — the two differ on a host that predates this member.
51
+ */
52
+ anchorCadence?: AnchorCadence;
53
+ /**
54
+ * The record retention the host recorded, echoed for the same reason `anchorCadence` is: a caller learns what is in force rather than what it asked for. Absent when none was recorded.
55
+ */
56
+ recordRetention?: RecordRetention;
57
+ ext?: Ext;
58
+ }
59
+ /** Shared definitions this specification references, re-exported under the names it used to declare them with. */
60
+ export type { AnchorCadence, Ext, RecordRetention, RetentionPolicy, Visibility };
61
+ /** Trust Task type URI. */
62
+ export declare const TYPE_URI: "https://trusttasks.org/spec/rooms/create/0.2";
63
+ /** Stable alias for this specification's request payload shape. */
64
+ export type Payload = RoomsCreatePayload;
65
+ /** Trust Task response type URI (request type URI + "#response"). */
66
+ export declare const RESPONSE_TYPE_URI: "https://trusttasks.org/spec/rooms/create/0.2#response";
67
+ /** Stable alias for this specification's success-response payload shape. */
68
+ export type Response = RoomsCreateResponsePayload;
69
+ /**
70
+ * This specification's payload schema, as a value.
71
+ *
72
+ * SPEC.md §7.2 item 2 is performed against this. It is shipped as data
73
+ * rather than only as a `.json` file because TypeScript types are erased
74
+ * at runtime: without a schema a consumer has nothing to validate, and
75
+ * every REQUIRED payload member is optional in practice. Cross-file
76
+ * `$ref`s are already inlined, so it needs no resolver.
77
+ */
78
+ export declare const PAYLOAD_SCHEMA: {
79
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
80
+ readonly $id: "https://trusttasks.org/spec/rooms/create/0.2";
81
+ readonly title: "Rooms Create — payload";
82
+ readonly type: "object";
83
+ readonly additionalProperties: false;
84
+ readonly required: readonly ["roomId", "visibility", "ownerDid"];
85
+ readonly properties: {
86
+ readonly roomId: {
87
+ readonly type: "string";
88
+ readonly description: "The room's identifier, minted by its owner before this call. A host is told the identifier; it does not assign one, because a room whose identity the host chose could not move to another host.";
89
+ };
90
+ readonly visibility: {
91
+ readonly $ref: "#/$defs/Visibility";
92
+ };
93
+ readonly ownerDid: {
94
+ readonly type: "string";
95
+ readonly description: "The room's accountable party: the controller of the room's identifier, the issuer of every credential in it, and the party a host addresses about quota, abuse, or lifecycle. Visible at every visibility, including `private` — a room has someone answerable for it.";
96
+ };
97
+ readonly retentionPolicy: {
98
+ readonly $ref: "#/$defs/RetentionPolicy";
99
+ readonly description: "Whether this room keeps its history readable across a membership change. Absent means `chained`, which is the choice a room wants unless it has a reason not to: joining a room should mean being able to read it. A host MUST reject an epoch link for a room whose policy is `fromJoin` rather than storing one it declared it would not have.";
100
+ };
101
+ readonly retentionDays: {
102
+ readonly type: "integer";
103
+ readonly minimum: 1;
104
+ readonly description: "How long the host will hold the room after its epoch lapses without renewal, before storage may be reclaimed. Stated at creation rather than discovered: reclamation that surprises a member is a failure of the design, not of the member.";
105
+ };
106
+ readonly anchorCadence: {
107
+ readonly $ref: "#/$defs/AnchorCadence";
108
+ readonly description: "What this room intends about anchoring. OPTIONAL; absent reads as `manual`, which draws no expectation and is the honest default for a room whose owner has not decided. A host stores it and serves it back — it constrains nothing the host does.";
109
+ };
110
+ readonly recordRetention: {
111
+ readonly $ref: "#/$defs/RecordRetention";
112
+ readonly description: "How long the room keeps its records, by age: which records `rooms/records/prune` may remove. OPTIONAL; absent means no record is ever eligible by age. Unlike `retentionPolicy` it is not fixed: a holder of `admin` changes it with `rooms/records/retention/set`.";
113
+ };
114
+ readonly ext: {
115
+ readonly $ref: "#/$defs/Ext";
116
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
117
+ };
118
+ };
119
+ readonly $defs: {
120
+ readonly Response: {
121
+ readonly $anchor: "response";
122
+ readonly title: "Rooms Create — response payload";
123
+ readonly description: "Success response to rooms/create. Type https://trusttasks.org/spec/rooms/create/0.2#response.";
124
+ readonly type: "object";
125
+ readonly additionalProperties: false;
126
+ readonly required: readonly ["roomId", "epoch"];
127
+ readonly properties: {
128
+ readonly roomId: {
129
+ readonly type: "string";
130
+ };
131
+ readonly epoch: {
132
+ readonly type: "integer";
133
+ readonly minimum: 1;
134
+ readonly description: "Always 1 for a new room.";
135
+ };
136
+ readonly anchorCadence: {
137
+ readonly $ref: "#/$defs/AnchorCadence";
138
+ readonly description: "Echoed so a caller knows what was recorded rather than what was asked — the two differ on a host that predates this member.";
139
+ };
140
+ readonly recordRetention: {
141
+ readonly $ref: "#/$defs/RecordRetention";
142
+ readonly description: "The record retention the host recorded, echoed for the same reason `anchorCadence` is: a caller learns what is in force rather than what it asked for. Absent when none was recorded.";
143
+ };
144
+ readonly ext: {
145
+ readonly $ref: "#/$defs/Ext";
146
+ };
147
+ };
148
+ };
149
+ readonly Ext: {
150
+ readonly title: "Ext";
151
+ readonly 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.";
152
+ readonly type: "object";
153
+ readonly minProperties: 1;
154
+ readonly additionalProperties: true;
155
+ readonly propertyNames: {
156
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
157
+ };
158
+ };
159
+ readonly RecordRetention: {
160
+ readonly title: "RecordRetention";
161
+ readonly type: "object";
162
+ readonly additionalProperties: false;
163
+ readonly description: "How long a room keeps its records, by age: the room's **record retention**. Records older than it states become **eligible** to be removed by `rooms/records/prune`; nothing is removed until a holder of `admin` asks for a prune, and nothing a prune removes can be brought back.\n\n**Not `retentionPolicy`, and not `retentionDays`.** Both names are taken in this family and mean other things. `retentionPolicy` (`RetentionPolicy`) is whether a room's *key chain* lets a member read epochs from before they joined, fixed at creation because key material either exists for an epoch or it does not. `retentionDays` (`rooms/create`) is how long a host keeps a whole room after it lapses unrenewed. This is a third question — how long the room keeps its *records* while it is live — and unlike the first it is a decision a room revisits, so it is changeable (`rooms/records/retention/set`). A name sharing either's would invite a reader to apply one's rules to the other.\n\n**Age is the host's to measure, so age is `updatedAt`.** On the sealed tiers a host can read nothing of a record but its key, version, status, pinning and when it last changed, so a policy the host applies can only be stated in those terms. That is also why it cannot use a record's own `validUntil`, which is sealed: expiry is a reader's rule, retention a host's. A curation is a change, so it restarts a record's age — a retraction starts a tombstone's.\n\n**Absent, or `{}`, means no record is ever eligible by age**, and that is the reading a host MUST apply whenever it cannot read a policy: removing data under a rule nobody stated is the failure this member exists to prevent. Every member can read the policy in force (`rooms/info`), so a record is never removed under a rule its readers could not have known.";
164
+ readonly properties: {
165
+ readonly tombstoneDays: {
166
+ readonly type: "integer";
167
+ readonly minimum: 1;
168
+ readonly maximum: 36500;
169
+ readonly description: "Days a retracted record's tombstone is kept after its retraction. A tombstone whose `updatedAt` is more than this long ago is eligible. Tombstones exist so that a member syncing incrementally learns of a retraction (`rooms/records/curate`); this is how long a member may stay away and still learn of one that way rather than by rebuilding their copy of the room. Absent means tombstones are never eligible.";
170
+ };
171
+ readonly recordDays: {
172
+ readonly type: "integer";
173
+ readonly minimum: 1;
174
+ readonly maximum: 36500;
175
+ readonly description: "Days a record is kept after it last changed, whatever its standing. A record — `active`, `deprecated` or `retracted` — whose `updatedAt` is more than this long ago is eligible, **unless it is pinned**: pinning says what matters in the room, and a room that wants a pinned record gone unpins it first. Absent means records are never eligible by age.";
176
+ };
177
+ readonly ext: {
178
+ readonly $ref: "#/$defs/Ext";
179
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1. A host MUST NOT treat a member here as making more records eligible: a removal rule a member's reader cannot understand is one they were never told about.";
180
+ };
181
+ };
182
+ };
183
+ readonly AnchorCadence: {
184
+ readonly title: "AnchorCadence";
185
+ readonly type: "string";
186
+ readonly enum: readonly ["never", "renewal", "manual"];
187
+ readonly description: "How often this room intends to write an `EpochAnchor`. **A statement of intent, not a schedule anything enforces** — nothing in this family can make an owner anchor.\n\nIt is worth stating anyway, and the reason is the interesting part: it makes **silence legible**. A room that says `renewal` and has not anchored in ten epochs is telling a member something, and a member who did not know what to expect could not have noticed. A room that says `never` is telling them not to wait for one.\n\n - `never` — no anchor is intended. Honest, and cheap: anchoring costs a witnessed update and a rotation of the room DID's update key each time.\n - `renewal` — one anchor per epoch change, which is the cadence §9's lifecycle already moves at.\n - `manual` — the owner anchors when they decide to. A member should draw no freshness expectation from this at all, which is exactly what it is for: it is the honest answer where there is no rule.\n\nDeliberately not a duration. A room that promised \"daily\" would be making a claim its owner's availability cannot keep, and a member comparing against a clock would read an owner's holiday as a host's misbehaviour.";
188
+ };
189
+ readonly RetentionPolicy: {
190
+ readonly title: "RetentionPolicy";
191
+ readonly type: "string";
192
+ readonly enum: readonly ["chained", "fromJoin"];
193
+ readonly description: "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.";
194
+ readonly $comment: "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it.";
195
+ };
196
+ readonly Visibility: {
197
+ readonly title: "Visibility";
198
+ readonly type: "string";
199
+ readonly enum: readonly ["open", "attributed", "private"];
200
+ readonly description: "How much of a room its host can see, fixed at creation and immutable thereafter. `open`: records are cleartext, searchable and fully audited. `attributed`: record content is sealed, and the host still learns which member acted. `private`: content is sealed and membership is presented in zero knowledge, so the host verifies that a member acted without learning which. Immutable because a downgrade cannot un-see cleartext and an upgrade would protect only what came after while presenting as though it protected everything.";
201
+ };
202
+ };
203
+ readonly description: "An owner registers a data room with a host. 0.2 adds `recordRetention`: how long the room keeps its records by age, stated at creation so that no record is ever removed under a rule its readers could not have read.";
204
+ };
205
+ /** As {@link PAYLOAD_SCHEMA}, for the success-response variant. */
206
+ export declare const RESPONSE_PAYLOAD_SCHEMA: {
207
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
208
+ readonly $ref: "#/$defs/Response";
209
+ readonly $defs: {
210
+ readonly Response: {
211
+ readonly $anchor: "response";
212
+ readonly title: "Rooms Create — response payload";
213
+ readonly description: "Success response to rooms/create. Type https://trusttasks.org/spec/rooms/create/0.2#response.";
214
+ readonly type: "object";
215
+ readonly additionalProperties: false;
216
+ readonly required: readonly ["roomId", "epoch"];
217
+ readonly properties: {
218
+ readonly roomId: {
219
+ readonly type: "string";
220
+ };
221
+ readonly epoch: {
222
+ readonly type: "integer";
223
+ readonly minimum: 1;
224
+ readonly description: "Always 1 for a new room.";
225
+ };
226
+ readonly anchorCadence: {
227
+ readonly $ref: "#/$defs/AnchorCadence";
228
+ readonly description: "Echoed so a caller knows what was recorded rather than what was asked — the two differ on a host that predates this member.";
229
+ };
230
+ readonly recordRetention: {
231
+ readonly $ref: "#/$defs/RecordRetention";
232
+ readonly description: "The record retention the host recorded, echoed for the same reason `anchorCadence` is: a caller learns what is in force rather than what it asked for. Absent when none was recorded.";
233
+ };
234
+ readonly ext: {
235
+ readonly $ref: "#/$defs/Ext";
236
+ };
237
+ };
238
+ };
239
+ readonly Ext: {
240
+ readonly title: "Ext";
241
+ readonly 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.";
242
+ readonly type: "object";
243
+ readonly minProperties: 1;
244
+ readonly additionalProperties: true;
245
+ readonly propertyNames: {
246
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
247
+ };
248
+ };
249
+ readonly RecordRetention: {
250
+ readonly title: "RecordRetention";
251
+ readonly type: "object";
252
+ readonly additionalProperties: false;
253
+ readonly description: "How long a room keeps its records, by age: the room's **record retention**. Records older than it states become **eligible** to be removed by `rooms/records/prune`; nothing is removed until a holder of `admin` asks for a prune, and nothing a prune removes can be brought back.\n\n**Not `retentionPolicy`, and not `retentionDays`.** Both names are taken in this family and mean other things. `retentionPolicy` (`RetentionPolicy`) is whether a room's *key chain* lets a member read epochs from before they joined, fixed at creation because key material either exists for an epoch or it does not. `retentionDays` (`rooms/create`) is how long a host keeps a whole room after it lapses unrenewed. This is a third question — how long the room keeps its *records* while it is live — and unlike the first it is a decision a room revisits, so it is changeable (`rooms/records/retention/set`). A name sharing either's would invite a reader to apply one's rules to the other.\n\n**Age is the host's to measure, so age is `updatedAt`.** On the sealed tiers a host can read nothing of a record but its key, version, status, pinning and when it last changed, so a policy the host applies can only be stated in those terms. That is also why it cannot use a record's own `validUntil`, which is sealed: expiry is a reader's rule, retention a host's. A curation is a change, so it restarts a record's age — a retraction starts a tombstone's.\n\n**Absent, or `{}`, means no record is ever eligible by age**, and that is the reading a host MUST apply whenever it cannot read a policy: removing data under a rule nobody stated is the failure this member exists to prevent. Every member can read the policy in force (`rooms/info`), so a record is never removed under a rule its readers could not have known.";
254
+ readonly properties: {
255
+ readonly tombstoneDays: {
256
+ readonly type: "integer";
257
+ readonly minimum: 1;
258
+ readonly maximum: 36500;
259
+ readonly description: "Days a retracted record's tombstone is kept after its retraction. A tombstone whose `updatedAt` is more than this long ago is eligible. Tombstones exist so that a member syncing incrementally learns of a retraction (`rooms/records/curate`); this is how long a member may stay away and still learn of one that way rather than by rebuilding their copy of the room. Absent means tombstones are never eligible.";
260
+ };
261
+ readonly recordDays: {
262
+ readonly type: "integer";
263
+ readonly minimum: 1;
264
+ readonly maximum: 36500;
265
+ readonly description: "Days a record is kept after it last changed, whatever its standing. A record — `active`, `deprecated` or `retracted` — whose `updatedAt` is more than this long ago is eligible, **unless it is pinned**: pinning says what matters in the room, and a room that wants a pinned record gone unpins it first. Absent means records are never eligible by age.";
266
+ };
267
+ readonly ext: {
268
+ readonly $ref: "#/$defs/Ext";
269
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1. A host MUST NOT treat a member here as making more records eligible: a removal rule a member's reader cannot understand is one they were never told about.";
270
+ };
271
+ };
272
+ };
273
+ readonly AnchorCadence: {
274
+ readonly title: "AnchorCadence";
275
+ readonly type: "string";
276
+ readonly enum: readonly ["never", "renewal", "manual"];
277
+ readonly description: "How often this room intends to write an `EpochAnchor`. **A statement of intent, not a schedule anything enforces** — nothing in this family can make an owner anchor.\n\nIt is worth stating anyway, and the reason is the interesting part: it makes **silence legible**. A room that says `renewal` and has not anchored in ten epochs is telling a member something, and a member who did not know what to expect could not have noticed. A room that says `never` is telling them not to wait for one.\n\n - `never` — no anchor is intended. Honest, and cheap: anchoring costs a witnessed update and a rotation of the room DID's update key each time.\n - `renewal` — one anchor per epoch change, which is the cadence §9's lifecycle already moves at.\n - `manual` — the owner anchors when they decide to. A member should draw no freshness expectation from this at all, which is exactly what it is for: it is the honest answer where there is no rule.\n\nDeliberately not a duration. A room that promised \"daily\" would be making a claim its owner's availability cannot keep, and a member comparing against a clock would read an owner's holiday as a host's misbehaviour.";
278
+ };
279
+ readonly RetentionPolicy: {
280
+ readonly title: "RetentionPolicy";
281
+ readonly type: "string";
282
+ readonly enum: readonly ["chained", "fromJoin"];
283
+ readonly description: "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.";
284
+ readonly $comment: "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it.";
285
+ };
286
+ readonly Visibility: {
287
+ readonly title: "Visibility";
288
+ readonly type: "string";
289
+ readonly enum: readonly ["open", "attributed", "private"];
290
+ readonly description: "How much of a room its host can see, fixed at creation and immutable thereafter. `open`: records are cleartext, searchable and fully audited. `attributed`: record content is sealed, and the host still learns which member acted. `private`: content is sealed and membership is presented in zero knowledge, so the host verifies that a member acted without learning which. Immutable because a downgrade cannot un-see cleartext and an upgrade would protect only what came after while presenting as though it protected everything.";
291
+ };
292
+ };
293
+ };
294
+ /**
295
+ * SPEC.md §7.2 policy for the request variant, from this specification's
296
+ * front matter. Pass to `consumeInbound` — items 5b, 7 and 8 are
297
+ * per-specification and cannot be derived from the document alone, and
298
+ * item 2 needs the schema this carries.
299
+ */
300
+ export declare const SPEC: {
301
+ readonly typeUri: "https://trusttasks.org/spec/rooms/create/0.2";
302
+ readonly isBearer: false;
303
+ readonly isProofRequired: true;
304
+ readonly isRecipientRequired: true;
305
+ readonly isIssuedAtRequired: true;
306
+ readonly payloadSchema: {
307
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
308
+ readonly $id: "https://trusttasks.org/spec/rooms/create/0.2";
309
+ readonly title: "Rooms Create — payload";
310
+ readonly type: "object";
311
+ readonly additionalProperties: false;
312
+ readonly required: readonly ["roomId", "visibility", "ownerDid"];
313
+ readonly properties: {
314
+ readonly roomId: {
315
+ readonly type: "string";
316
+ readonly description: "The room's identifier, minted by its owner before this call. A host is told the identifier; it does not assign one, because a room whose identity the host chose could not move to another host.";
317
+ };
318
+ readonly visibility: {
319
+ readonly $ref: "#/$defs/Visibility";
320
+ };
321
+ readonly ownerDid: {
322
+ readonly type: "string";
323
+ readonly description: "The room's accountable party: the controller of the room's identifier, the issuer of every credential in it, and the party a host addresses about quota, abuse, or lifecycle. Visible at every visibility, including `private` — a room has someone answerable for it.";
324
+ };
325
+ readonly retentionPolicy: {
326
+ readonly $ref: "#/$defs/RetentionPolicy";
327
+ readonly description: "Whether this room keeps its history readable across a membership change. Absent means `chained`, which is the choice a room wants unless it has a reason not to: joining a room should mean being able to read it. A host MUST reject an epoch link for a room whose policy is `fromJoin` rather than storing one it declared it would not have.";
328
+ };
329
+ readonly retentionDays: {
330
+ readonly type: "integer";
331
+ readonly minimum: 1;
332
+ readonly description: "How long the host will hold the room after its epoch lapses without renewal, before storage may be reclaimed. Stated at creation rather than discovered: reclamation that surprises a member is a failure of the design, not of the member.";
333
+ };
334
+ readonly anchorCadence: {
335
+ readonly $ref: "#/$defs/AnchorCadence";
336
+ readonly description: "What this room intends about anchoring. OPTIONAL; absent reads as `manual`, which draws no expectation and is the honest default for a room whose owner has not decided. A host stores it and serves it back — it constrains nothing the host does.";
337
+ };
338
+ readonly recordRetention: {
339
+ readonly $ref: "#/$defs/RecordRetention";
340
+ readonly description: "How long the room keeps its records, by age: which records `rooms/records/prune` may remove. OPTIONAL; absent means no record is ever eligible by age. Unlike `retentionPolicy` it is not fixed: a holder of `admin` changes it with `rooms/records/retention/set`.";
341
+ };
342
+ readonly ext: {
343
+ readonly $ref: "#/$defs/Ext";
344
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1.";
345
+ };
346
+ };
347
+ readonly $defs: {
348
+ readonly Response: {
349
+ readonly $anchor: "response";
350
+ readonly title: "Rooms Create — response payload";
351
+ readonly description: "Success response to rooms/create. Type https://trusttasks.org/spec/rooms/create/0.2#response.";
352
+ readonly type: "object";
353
+ readonly additionalProperties: false;
354
+ readonly required: readonly ["roomId", "epoch"];
355
+ readonly properties: {
356
+ readonly roomId: {
357
+ readonly type: "string";
358
+ };
359
+ readonly epoch: {
360
+ readonly type: "integer";
361
+ readonly minimum: 1;
362
+ readonly description: "Always 1 for a new room.";
363
+ };
364
+ readonly anchorCadence: {
365
+ readonly $ref: "#/$defs/AnchorCadence";
366
+ readonly description: "Echoed so a caller knows what was recorded rather than what was asked — the two differ on a host that predates this member.";
367
+ };
368
+ readonly recordRetention: {
369
+ readonly $ref: "#/$defs/RecordRetention";
370
+ readonly description: "The record retention the host recorded, echoed for the same reason `anchorCadence` is: a caller learns what is in force rather than what it asked for. Absent when none was recorded.";
371
+ };
372
+ readonly ext: {
373
+ readonly $ref: "#/$defs/Ext";
374
+ };
375
+ };
376
+ };
377
+ readonly Ext: {
378
+ readonly title: "Ext";
379
+ readonly 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.";
380
+ readonly type: "object";
381
+ readonly minProperties: 1;
382
+ readonly additionalProperties: true;
383
+ readonly propertyNames: {
384
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
385
+ };
386
+ };
387
+ readonly RecordRetention: {
388
+ readonly title: "RecordRetention";
389
+ readonly type: "object";
390
+ readonly additionalProperties: false;
391
+ readonly description: "How long a room keeps its records, by age: the room's **record retention**. Records older than it states become **eligible** to be removed by `rooms/records/prune`; nothing is removed until a holder of `admin` asks for a prune, and nothing a prune removes can be brought back.\n\n**Not `retentionPolicy`, and not `retentionDays`.** Both names are taken in this family and mean other things. `retentionPolicy` (`RetentionPolicy`) is whether a room's *key chain* lets a member read epochs from before they joined, fixed at creation because key material either exists for an epoch or it does not. `retentionDays` (`rooms/create`) is how long a host keeps a whole room after it lapses unrenewed. This is a third question — how long the room keeps its *records* while it is live — and unlike the first it is a decision a room revisits, so it is changeable (`rooms/records/retention/set`). A name sharing either's would invite a reader to apply one's rules to the other.\n\n**Age is the host's to measure, so age is `updatedAt`.** On the sealed tiers a host can read nothing of a record but its key, version, status, pinning and when it last changed, so a policy the host applies can only be stated in those terms. That is also why it cannot use a record's own `validUntil`, which is sealed: expiry is a reader's rule, retention a host's. A curation is a change, so it restarts a record's age — a retraction starts a tombstone's.\n\n**Absent, or `{}`, means no record is ever eligible by age**, and that is the reading a host MUST apply whenever it cannot read a policy: removing data under a rule nobody stated is the failure this member exists to prevent. Every member can read the policy in force (`rooms/info`), so a record is never removed under a rule its readers could not have known.";
392
+ readonly properties: {
393
+ readonly tombstoneDays: {
394
+ readonly type: "integer";
395
+ readonly minimum: 1;
396
+ readonly maximum: 36500;
397
+ readonly description: "Days a retracted record's tombstone is kept after its retraction. A tombstone whose `updatedAt` is more than this long ago is eligible. Tombstones exist so that a member syncing incrementally learns of a retraction (`rooms/records/curate`); this is how long a member may stay away and still learn of one that way rather than by rebuilding their copy of the room. Absent means tombstones are never eligible.";
398
+ };
399
+ readonly recordDays: {
400
+ readonly type: "integer";
401
+ readonly minimum: 1;
402
+ readonly maximum: 36500;
403
+ readonly description: "Days a record is kept after it last changed, whatever its standing. A record — `active`, `deprecated` or `retracted` — whose `updatedAt` is more than this long ago is eligible, **unless it is pinned**: pinning says what matters in the room, and a room that wants a pinned record gone unpins it first. Absent means records are never eligible by age.";
404
+ };
405
+ readonly ext: {
406
+ readonly $ref: "#/$defs/Ext";
407
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1. A host MUST NOT treat a member here as making more records eligible: a removal rule a member's reader cannot understand is one they were never told about.";
408
+ };
409
+ };
410
+ };
411
+ readonly AnchorCadence: {
412
+ readonly title: "AnchorCadence";
413
+ readonly type: "string";
414
+ readonly enum: readonly ["never", "renewal", "manual"];
415
+ readonly description: "How often this room intends to write an `EpochAnchor`. **A statement of intent, not a schedule anything enforces** — nothing in this family can make an owner anchor.\n\nIt is worth stating anyway, and the reason is the interesting part: it makes **silence legible**. A room that says `renewal` and has not anchored in ten epochs is telling a member something, and a member who did not know what to expect could not have noticed. A room that says `never` is telling them not to wait for one.\n\n - `never` — no anchor is intended. Honest, and cheap: anchoring costs a witnessed update and a rotation of the room DID's update key each time.\n - `renewal` — one anchor per epoch change, which is the cadence §9's lifecycle already moves at.\n - `manual` — the owner anchors when they decide to. A member should draw no freshness expectation from this at all, which is exactly what it is for: it is the honest answer where there is no rule.\n\nDeliberately not a duration. A room that promised \"daily\" would be making a claim its owner's availability cannot keep, and a member comparing against a clock would read an owner's holiday as a host's misbehaviour.";
416
+ };
417
+ readonly RetentionPolicy: {
418
+ readonly title: "RetentionPolicy";
419
+ readonly type: "string";
420
+ readonly enum: readonly ["chained", "fromJoin"];
421
+ readonly description: "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.";
422
+ readonly $comment: "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it.";
423
+ };
424
+ readonly Visibility: {
425
+ readonly title: "Visibility";
426
+ readonly type: "string";
427
+ readonly enum: readonly ["open", "attributed", "private"];
428
+ readonly description: "How much of a room its host can see, fixed at creation and immutable thereafter. `open`: records are cleartext, searchable and fully audited. `attributed`: record content is sealed, and the host still learns which member acted. `private`: content is sealed and membership is presented in zero knowledge, so the host verifies that a member acted without learning which. Immutable because a downgrade cannot un-see cleartext and an upgrade would protect only what came after while presenting as though it protected everything.";
429
+ };
430
+ };
431
+ readonly description: "An owner registers a data room with a host. 0.2 adds `recordRetention`: how long the room keeps its records by age, stated at creation so that no record is ever removed under a rule its readers could not have read.";
432
+ };
433
+ };
434
+ /**
435
+ * SPEC.md §7.2 policy for the success-response variant. `isRecipientRequired`
436
+ * tracks the *issuer* party's requirement because a response swaps the
437
+ * parties (§7.3 item 5).
438
+ */
439
+ export declare const RESPONSE_SPEC: {
440
+ readonly typeUri: "https://trusttasks.org/spec/rooms/create/0.2#response";
441
+ readonly isBearer: false;
442
+ readonly isProofRequired: true;
443
+ readonly isRecipientRequired: true;
444
+ readonly isIssuedAtRequired: true;
445
+ readonly payloadSchema: {
446
+ readonly $schema: "https://json-schema.org/draft/2020-12/schema";
447
+ readonly $ref: "#/$defs/Response";
448
+ readonly $defs: {
449
+ readonly Response: {
450
+ readonly $anchor: "response";
451
+ readonly title: "Rooms Create — response payload";
452
+ readonly description: "Success response to rooms/create. Type https://trusttasks.org/spec/rooms/create/0.2#response.";
453
+ readonly type: "object";
454
+ readonly additionalProperties: false;
455
+ readonly required: readonly ["roomId", "epoch"];
456
+ readonly properties: {
457
+ readonly roomId: {
458
+ readonly type: "string";
459
+ };
460
+ readonly epoch: {
461
+ readonly type: "integer";
462
+ readonly minimum: 1;
463
+ readonly description: "Always 1 for a new room.";
464
+ };
465
+ readonly anchorCadence: {
466
+ readonly $ref: "#/$defs/AnchorCadence";
467
+ readonly description: "Echoed so a caller knows what was recorded rather than what was asked — the two differ on a host that predates this member.";
468
+ };
469
+ readonly recordRetention: {
470
+ readonly $ref: "#/$defs/RecordRetention";
471
+ readonly description: "The record retention the host recorded, echoed for the same reason `anchorCadence` is: a caller learns what is in force rather than what it asked for. Absent when none was recorded.";
472
+ };
473
+ readonly ext: {
474
+ readonly $ref: "#/$defs/Ext";
475
+ };
476
+ };
477
+ };
478
+ readonly Ext: {
479
+ readonly title: "Ext";
480
+ readonly 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.";
481
+ readonly type: "object";
482
+ readonly minProperties: 1;
483
+ readonly additionalProperties: true;
484
+ readonly propertyNames: {
485
+ readonly pattern: "^[a-z][a-z0-9-]*(\\.[a-z0-9-]+)+$";
486
+ };
487
+ };
488
+ readonly RecordRetention: {
489
+ readonly title: "RecordRetention";
490
+ readonly type: "object";
491
+ readonly additionalProperties: false;
492
+ readonly description: "How long a room keeps its records, by age: the room's **record retention**. Records older than it states become **eligible** to be removed by `rooms/records/prune`; nothing is removed until a holder of `admin` asks for a prune, and nothing a prune removes can be brought back.\n\n**Not `retentionPolicy`, and not `retentionDays`.** Both names are taken in this family and mean other things. `retentionPolicy` (`RetentionPolicy`) is whether a room's *key chain* lets a member read epochs from before they joined, fixed at creation because key material either exists for an epoch or it does not. `retentionDays` (`rooms/create`) is how long a host keeps a whole room after it lapses unrenewed. This is a third question — how long the room keeps its *records* while it is live — and unlike the first it is a decision a room revisits, so it is changeable (`rooms/records/retention/set`). A name sharing either's would invite a reader to apply one's rules to the other.\n\n**Age is the host's to measure, so age is `updatedAt`.** On the sealed tiers a host can read nothing of a record but its key, version, status, pinning and when it last changed, so a policy the host applies can only be stated in those terms. That is also why it cannot use a record's own `validUntil`, which is sealed: expiry is a reader's rule, retention a host's. A curation is a change, so it restarts a record's age — a retraction starts a tombstone's.\n\n**Absent, or `{}`, means no record is ever eligible by age**, and that is the reading a host MUST apply whenever it cannot read a policy: removing data under a rule nobody stated is the failure this member exists to prevent. Every member can read the policy in force (`rooms/info`), so a record is never removed under a rule its readers could not have known.";
493
+ readonly properties: {
494
+ readonly tombstoneDays: {
495
+ readonly type: "integer";
496
+ readonly minimum: 1;
497
+ readonly maximum: 36500;
498
+ readonly description: "Days a retracted record's tombstone is kept after its retraction. A tombstone whose `updatedAt` is more than this long ago is eligible. Tombstones exist so that a member syncing incrementally learns of a retraction (`rooms/records/curate`); this is how long a member may stay away and still learn of one that way rather than by rebuilding their copy of the room. Absent means tombstones are never eligible.";
499
+ };
500
+ readonly recordDays: {
501
+ readonly type: "integer";
502
+ readonly minimum: 1;
503
+ readonly maximum: 36500;
504
+ readonly description: "Days a record is kept after it last changed, whatever its standing. A record — `active`, `deprecated` or `retracted` — whose `updatedAt` is more than this long ago is eligible, **unless it is pinned**: pinning says what matters in the room, and a room that wants a pinned record gone unpins it first. Absent means records are never eligible by age.";
505
+ };
506
+ readonly ext: {
507
+ readonly $ref: "#/$defs/Ext";
508
+ readonly description: "Ecosystem-defined extension members per SPEC.md §4.5.1. A host MUST NOT treat a member here as making more records eligible: a removal rule a member's reader cannot understand is one they were never told about.";
509
+ };
510
+ };
511
+ };
512
+ readonly AnchorCadence: {
513
+ readonly title: "AnchorCadence";
514
+ readonly type: "string";
515
+ readonly enum: readonly ["never", "renewal", "manual"];
516
+ readonly description: "How often this room intends to write an `EpochAnchor`. **A statement of intent, not a schedule anything enforces** — nothing in this family can make an owner anchor.\n\nIt is worth stating anyway, and the reason is the interesting part: it makes **silence legible**. A room that says `renewal` and has not anchored in ten epochs is telling a member something, and a member who did not know what to expect could not have noticed. A room that says `never` is telling them not to wait for one.\n\n - `never` — no anchor is intended. Honest, and cheap: anchoring costs a witnessed update and a rotation of the room DID's update key each time.\n - `renewal` — one anchor per epoch change, which is the cadence §9's lifecycle already moves at.\n - `manual` — the owner anchors when they decide to. A member should draw no freshness expectation from this at all, which is exactly what it is for: it is the honest answer where there is no rule.\n\nDeliberately not a duration. A room that promised \"daily\" would be making a claim its owner's availability cannot keep, and a member comparing against a clock would read an owner's holiday as a host's misbehaviour.";
517
+ };
518
+ readonly RetentionPolicy: {
519
+ readonly title: "RetentionPolicy";
520
+ readonly type: "string";
521
+ readonly enum: readonly ["chained", "fromJoin"];
522
+ readonly description: "Whether a room keeps its history readable across a membership change, fixed at creation and immutable thereafter — like `Visibility`, and for the same reason: the rungs of an epoch key chain either exist for an epoch or they do not, and no later change of mind can seal key material that was never sealed or unseal what was already severed. `chained`: each advance produces an `EpochLink`, so every member reads the room's whole retained history however long they have been in it — what a **library** wants, at the cost of post-compromise security for record content, since a compromised current key then reaches every retained epoch. `fromJoin`: no rungs are produced, so a member reads only from the epoch their group state is at — what a **stream** wants, and what a room under a strict forward-secrecy obligation wants, at the cost that a joining member finds an empty-looking room and nobody can reread a record once their group state has moved past the epoch it was sealed under. Absent means `chained`; see the prose on why the absent case is the readable one.";
523
+ readonly $comment: "Deliberately no JSON Schema `default`. A declared default is materialised by the generated bindings — the member becomes non-optional with a serde default — so an absent value would reappear as an explicit one on re-serialisation and break round-trip idempotence for every document written before this member existed. The meaning of absence is stated in prose, where a binding cannot act on it.";
524
+ };
525
+ readonly Visibility: {
526
+ readonly title: "Visibility";
527
+ readonly type: "string";
528
+ readonly enum: readonly ["open", "attributed", "private"];
529
+ readonly description: "How much of a room its host can see, fixed at creation and immutable thereafter. `open`: records are cleartext, searchable and fully audited. `attributed`: record content is sealed, and the host still learns which member acted. `private`: content is sealed and membership is presented in zero knowledge, so the host verifies that a member acted without learning which. Immutable because a downgrade cannot un-see cleartext and an upgrade would protect only what came after while presenting as though it protected everything.";
530
+ };
531
+ };
532
+ };
533
+ };
534
+ //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../../src/rooms/create/0.2/payload.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAGvH;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,UAAU,CAAC;IACvB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC;;OAEG;IACH,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AACD;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;OAEG;IACH,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,GAAG,CAAC,EAAE,GAAG,CAAC;CACX;AAED,kHAAkH;AAClH,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE,eAAe,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC;AAEjF,2BAA2B;AAC3B,eAAO,MAAM,QAAQ,EAAG,8CAAuD,CAAC;AAEhF,mEAAmE;AACnE,MAAM,MAAM,OAAO,GAAG,kBAAkB,CAAC;AAEzC,qEAAqE;AACrE,eAAO,MAAM,iBAAiB,EAAG,uDAAgE,CAAC;AAElG,4EAA4E;AAC5E,MAAM,MAAM,QAAQ,GAAG,0BAA0B,CAAC;AAElD;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgJjB,CAAC;AAEX,mEAAmE;AACnE,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqG1B,CAAC;AAEX;;;;;GAKG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOP,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOhB,CAAC"}