@openvtc/trust-tasks 0.16.8 → 0.16.10

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 (206) hide show
  1. package/CHANGELOG.md +285 -0
  2. package/dist/_shared/components.d.ts +206 -7
  3. package/dist/_shared/components.d.ts.map +1 -1
  4. package/dist/device/list/0.1/payload.d.ts +4 -4
  5. package/dist/device/list/0.1/payload.d.ts.map +1 -1
  6. package/dist/device/list/0.1/payload.js +6 -2
  7. package/dist/device/list/0.1/payload.js.map +1 -1
  8. package/dist/device/list/0.2/payload.d.ts +4 -4
  9. package/dist/device/list/0.2/payload.d.ts.map +1 -1
  10. package/dist/device/list/0.2/payload.js +6 -2
  11. package/dist/device/list/0.2/payload.js.map +1 -1
  12. package/dist/device/register/0.1/payload.d.ts +4 -4
  13. package/dist/device/register/0.1/payload.d.ts.map +1 -1
  14. package/dist/device/register/0.1/payload.js +6 -2
  15. package/dist/device/register/0.1/payload.js.map +1 -1
  16. package/dist/device/register/0.2/payload.d.ts +4 -4
  17. package/dist/device/register/0.2/payload.d.ts.map +1 -1
  18. package/dist/device/register/0.2/payload.js +6 -2
  19. package/dist/device/register/0.2/payload.js.map +1 -1
  20. package/dist/index.d.ts +31 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +31 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/persona/_shared/0.1/persona-record.d.ts +22 -0
  25. package/dist/persona/_shared/0.1/persona-record.d.ts.map +1 -0
  26. package/dist/persona/_shared/0.1/persona-record.js +6 -0
  27. package/dist/persona/_shared/0.1/persona-record.js.map +1 -0
  28. package/dist/persona/attribute/delete/1.0/payload.d.ts +351 -0
  29. package/dist/persona/attribute/delete/1.0/payload.d.ts.map +1 -0
  30. package/dist/persona/attribute/delete/1.0/payload.js +188 -0
  31. package/dist/persona/attribute/delete/1.0/payload.js.map +1 -0
  32. package/dist/persona/attribute/list/1.0/payload.d.ts +895 -0
  33. package/dist/persona/attribute/list/1.0/payload.d.ts.map +1 -0
  34. package/dist/persona/attribute/list/1.0/payload.js +532 -0
  35. package/dist/persona/attribute/list/1.0/payload.js.map +1 -0
  36. package/dist/persona/attribute/put/1.0/payload.d.ts +829 -0
  37. package/dist/persona/attribute/put/1.0/payload.d.ts.map +1 -0
  38. package/dist/persona/attribute/put/1.0/payload.js +487 -0
  39. package/dist/persona/attribute/put/1.0/payload.js.map +1 -0
  40. package/dist/persona/binding/get/1.0/payload.d.ts +382 -0
  41. package/dist/persona/binding/get/1.0/payload.d.ts.map +1 -0
  42. package/dist/persona/binding/get/1.0/payload.js +206 -0
  43. package/dist/persona/binding/get/1.0/payload.js.map +1 -0
  44. package/dist/persona/binding/list/1.0/payload.d.ts +387 -0
  45. package/dist/persona/binding/list/1.0/payload.d.ts.map +1 -0
  46. package/dist/persona/binding/list/1.0/payload.js +210 -0
  47. package/dist/persona/binding/list/1.0/payload.js.map +1 -0
  48. package/dist/persona/binding/set/1.0/payload.d.ts +545 -0
  49. package/dist/persona/binding/set/1.0/payload.d.ts.map +1 -0
  50. package/dist/persona/binding/set/1.0/payload.js +302 -0
  51. package/dist/persona/binding/set/1.0/payload.js.map +1 -0
  52. package/dist/persona/contact/delete/1.0/payload.d.ts +313 -0
  53. package/dist/persona/contact/delete/1.0/payload.d.ts.map +1 -0
  54. package/dist/persona/contact/delete/1.0/payload.js +174 -0
  55. package/dist/persona/contact/delete/1.0/payload.js.map +1 -0
  56. package/dist/persona/contact/get/1.0/payload.d.ts +1027 -0
  57. package/dist/persona/contact/get/1.0/payload.d.ts.map +1 -0
  58. package/dist/persona/contact/get/1.0/payload.js +606 -0
  59. package/dist/persona/contact/get/1.0/payload.js.map +1 -0
  60. package/dist/persona/contact/list/1.0/payload.d.ts +490 -0
  61. package/dist/persona/contact/list/1.0/payload.d.ts.map +1 -0
  62. package/dist/persona/contact/list/1.0/payload.js +262 -0
  63. package/dist/persona/contact/list/1.0/payload.js.map +1 -0
  64. package/dist/persona/contact/put/1.0/payload.d.ts +885 -0
  65. package/dist/persona/contact/put/1.0/payload.d.ts.map +1 -0
  66. package/dist/persona/contact/put/1.0/payload.js +518 -0
  67. package/dist/persona/contact/put/1.0/payload.js.map +1 -0
  68. package/dist/persona/correlation/analyze/1.0/payload.d.ts +648 -0
  69. package/dist/persona/correlation/analyze/1.0/payload.d.ts.map +1 -0
  70. package/dist/persona/correlation/analyze/1.0/payload.js +338 -0
  71. package/dist/persona/correlation/analyze/1.0/payload.js.map +1 -0
  72. package/dist/persona/disclosure/history/1.0/payload.d.ts +639 -0
  73. package/dist/persona/disclosure/history/1.0/payload.d.ts.map +1 -0
  74. package/dist/persona/disclosure/history/1.0/payload.js +339 -0
  75. package/dist/persona/disclosure/history/1.0/payload.js.map +1 -0
  76. package/dist/persona/disclosure/present/1.0/payload.d.ts +400 -0
  77. package/dist/persona/disclosure/present/1.0/payload.d.ts.map +1 -0
  78. package/dist/persona/disclosure/present/1.0/payload.js +211 -0
  79. package/dist/persona/disclosure/present/1.0/payload.js.map +1 -0
  80. package/dist/persona/disclosure/preview/1.0/payload.d.ts +858 -0
  81. package/dist/persona/disclosure/preview/1.0/payload.d.ts.map +1 -0
  82. package/dist/persona/disclosure/preview/1.0/payload.js +480 -0
  83. package/dist/persona/disclosure/preview/1.0/payload.js.map +1 -0
  84. package/dist/persona/local/binding/set/1.0/payload.d.ts +394 -0
  85. package/dist/persona/local/binding/set/1.0/payload.d.ts.map +1 -0
  86. package/dist/persona/local/binding/set/1.0/payload.js +226 -0
  87. package/dist/persona/local/binding/set/1.0/payload.js.map +1 -0
  88. package/dist/persona/local/profile/delete/1.0/payload.d.ts +311 -0
  89. package/dist/persona/local/profile/delete/1.0/payload.d.ts.map +1 -0
  90. package/dist/persona/local/profile/delete/1.0/payload.js +173 -0
  91. package/dist/persona/local/profile/delete/1.0/payload.js.map +1 -0
  92. package/dist/persona/local/profile/get/1.0/payload.d.ts +368 -0
  93. package/dist/persona/local/profile/get/1.0/payload.d.ts.map +1 -0
  94. package/dist/persona/local/profile/get/1.0/payload.js +210 -0
  95. package/dist/persona/local/profile/get/1.0/payload.js.map +1 -0
  96. package/dist/persona/local/profile/list/1.0/payload.d.ts +387 -0
  97. package/dist/persona/local/profile/list/1.0/payload.d.ts.map +1 -0
  98. package/dist/persona/local/profile/list/1.0/payload.js +214 -0
  99. package/dist/persona/local/profile/list/1.0/payload.js.map +1 -0
  100. package/dist/persona/local/profile/put/1.0/payload.d.ts +545 -0
  101. package/dist/persona/local/profile/put/1.0/payload.d.ts.map +1 -0
  102. package/dist/persona/local/profile/put/1.0/payload.js +315 -0
  103. package/dist/persona/local/profile/put/1.0/payload.js.map +1 -0
  104. package/dist/persona/profile/delete/1.0/payload.d.ts +350 -0
  105. package/dist/persona/profile/delete/1.0/payload.d.ts.map +1 -0
  106. package/dist/persona/profile/delete/1.0/payload.js +189 -0
  107. package/dist/persona/profile/delete/1.0/payload.js.map +1 -0
  108. package/dist/persona/profile/get/1.0/payload.d.ts +1307 -0
  109. package/dist/persona/profile/get/1.0/payload.d.ts.map +1 -0
  110. package/dist/persona/profile/get/1.0/payload.js +804 -0
  111. package/dist/persona/profile/get/1.0/payload.js.map +1 -0
  112. package/dist/persona/profile/list/1.0/payload.d.ts +1120 -0
  113. package/dist/persona/profile/list/1.0/payload.d.ts.map +1 -0
  114. package/dist/persona/profile/list/1.0/payload.js +680 -0
  115. package/dist/persona/profile/list/1.0/payload.js.map +1 -0
  116. package/dist/persona/profile/put/1.0/payload.d.ts +1115 -0
  117. package/dist/persona/profile/put/1.0/payload.d.ts.map +1 -0
  118. package/dist/persona/profile/put/1.0/payload.js +675 -0
  119. package/dist/persona/profile/put/1.0/payload.js.map +1 -0
  120. package/dist/persona/renderers/list/1.0/payload.d.ts +362 -0
  121. package/dist/persona/renderers/list/1.0/payload.d.ts.map +1 -0
  122. package/dist/persona/renderers/list/1.0/payload.js +197 -0
  123. package/dist/persona/renderers/list/1.0/payload.js.map +1 -0
  124. package/dist/rooms/keys/commit/0.1/payload.d.ts +266 -0
  125. package/dist/rooms/keys/commit/0.1/payload.d.ts.map +1 -0
  126. package/dist/rooms/keys/commit/0.1/payload.js +146 -0
  127. package/dist/rooms/keys/commit/0.1/payload.js.map +1 -0
  128. package/dist/rooms/keys/key-package/0.1/payload.d.ts +272 -0
  129. package/dist/rooms/keys/key-package/0.1/payload.d.ts.map +1 -0
  130. package/dist/rooms/keys/key-package/0.1/payload.js +147 -0
  131. package/dist/rooms/keys/key-package/0.1/payload.js.map +1 -0
  132. package/dist/rooms/keys/welcome/0.1/payload.d.ts +276 -0
  133. package/dist/rooms/keys/welcome/0.1/payload.d.ts.map +1 -0
  134. package/dist/rooms/keys/welcome/0.1/payload.js +148 -0
  135. package/dist/rooms/keys/welcome/0.1/payload.js.map +1 -0
  136. package/dist/rooms/owner/claim/0.1/payload.d.ts +391 -0
  137. package/dist/rooms/owner/claim/0.1/payload.d.ts.map +1 -0
  138. package/dist/rooms/owner/claim/0.1/payload.js +214 -0
  139. package/dist/rooms/owner/claim/0.1/payload.js.map +1 -0
  140. package/dist/rooms/owner/transfer/0.1/payload.d.ts +391 -0
  141. package/dist/rooms/owner/transfer/0.1/payload.d.ts.map +1 -0
  142. package/dist/rooms/owner/transfer/0.1/payload.js +214 -0
  143. package/dist/rooms/owner/transfer/0.1/payload.js.map +1 -0
  144. package/dist/rooms/records/curate/0.1/payload.d.ts +500 -0
  145. package/dist/rooms/records/curate/0.1/payload.d.ts.map +1 -0
  146. package/dist/rooms/records/curate/0.1/payload.js +277 -0
  147. package/dist/rooms/records/curate/0.1/payload.js.map +1 -0
  148. package/dist/vta/_shared/0.1/app-state-record.d.ts +1 -1
  149. package/dist/vta/_shared/0.1/app-state-record.d.ts.map +1 -1
  150. package/dist/vta/app-state/delete/1.0/payload.d.ts +1 -1
  151. package/dist/vta/app-state/delete/1.0/payload.d.ts.map +1 -1
  152. package/dist/vta/app-state/get/1.0/payload.d.ts +1 -1
  153. package/dist/vta/app-state/get/1.0/payload.d.ts.map +1 -1
  154. package/dist/vta/app-state/get-many/1.0/payload.d.ts +1 -1
  155. package/dist/vta/app-state/get-many/1.0/payload.d.ts.map +1 -1
  156. package/dist/vta/app-state/list/1.0/payload.d.ts +1 -1
  157. package/dist/vta/app-state/list/1.0/payload.d.ts.map +1 -1
  158. package/dist/vta/app-state/put/1.0/payload.d.ts +1 -1
  159. package/dist/vta/app-state/put/1.0/payload.d.ts.map +1 -1
  160. package/dist/vta/app-state/put-many/1.0/payload.d.ts +1 -1
  161. package/dist/vta/app-state/put-many/1.0/payload.d.ts.map +1 -1
  162. package/package.json +1 -1
  163. package/src/_shared/components.ts +217 -7
  164. package/src/device/list/0.1/payload.ts +6 -2
  165. package/src/device/list/0.2/payload.ts +6 -2
  166. package/src/device/register/0.1/payload.ts +6 -2
  167. package/src/device/register/0.2/payload.ts +6 -2
  168. package/src/index.ts +31 -0
  169. package/src/persona/_shared/0.1/persona-record.ts +23 -0
  170. package/src/persona/attribute/delete/1.0/payload.ts +238 -0
  171. package/src/persona/attribute/list/1.0/payload.ts +590 -0
  172. package/src/persona/attribute/put/1.0/payload.ts +559 -0
  173. package/src/persona/binding/get/1.0/payload.ts +257 -0
  174. package/src/persona/binding/list/1.0/payload.ts +260 -0
  175. package/src/persona/binding/set/1.0/payload.ts +370 -0
  176. package/src/persona/contact/delete/1.0/payload.ts +216 -0
  177. package/src/persona/contact/get/1.0/payload.ts +662 -0
  178. package/src/persona/contact/list/1.0/payload.ts +323 -0
  179. package/src/persona/contact/put/1.0/payload.ts +580 -0
  180. package/src/persona/correlation/analyze/1.0/payload.ts +466 -0
  181. package/src/persona/disclosure/history/1.0/payload.ts +415 -0
  182. package/src/persona/disclosure/present/1.0/payload.ts +274 -0
  183. package/src/persona/disclosure/preview/1.0/payload.ts +597 -0
  184. package/src/persona/local/binding/set/1.0/payload.ts +267 -0
  185. package/src/persona/local/profile/delete/1.0/payload.ts +215 -0
  186. package/src/persona/local/profile/get/1.0/payload.ts +251 -0
  187. package/src/persona/local/profile/list/1.0/payload.ts +260 -0
  188. package/src/persona/local/profile/put/1.0/payload.ts +373 -0
  189. package/src/persona/profile/delete/1.0/payload.ts +236 -0
  190. package/src/persona/profile/get/1.0/payload.ts +846 -0
  191. package/src/persona/profile/list/1.0/payload.ts +723 -0
  192. package/src/persona/profile/put/1.0/payload.ts +741 -0
  193. package/src/persona/renderers/list/1.0/payload.ts +248 -0
  194. package/src/rooms/keys/commit/0.1/payload.ts +195 -0
  195. package/src/rooms/keys/key-package/0.1/payload.ts +196 -0
  196. package/src/rooms/keys/welcome/0.1/payload.ts +201 -0
  197. package/src/rooms/owner/claim/0.1/payload.ts +268 -0
  198. package/src/rooms/owner/transfer/0.1/payload.ts +268 -0
  199. package/src/rooms/records/curate/0.1/payload.ts +357 -0
  200. package/src/vta/_shared/0.1/app-state-record.ts +1 -1
  201. package/src/vta/app-state/delete/1.0/payload.ts +1 -1
  202. package/src/vta/app-state/get/1.0/payload.ts +1 -1
  203. package/src/vta/app-state/get-many/1.0/payload.ts +1 -1
  204. package/src/vta/app-state/list/1.0/payload.ts +1 -1
  205. package/src/vta/app-state/put/1.0/payload.ts +1 -1
  206. package/src/vta/app-state/put-many/1.0/payload.ts +1 -1
@@ -45,7 +45,9 @@ export type Capability_DeviceV0_1 =
45
45
  | "sign-trust-task"
46
46
  | "credential-write"
47
47
  | "memory-read"
48
- | "memory-write";
48
+ | "memory-write"
49
+ | "room-present"
50
+ | "room-open";
49
51
  /**
50
52
  * Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything.
51
53
  */
@@ -61,7 +63,17 @@ export type Capability_DeviceV0_2 =
61
63
  | "signTrustTask"
62
64
  | "credentialWrite"
63
65
  | "memoryRead"
64
- | "memoryWrite";
66
+ | "memoryWrite"
67
+ | "roomPresent"
68
+ | "roomOpen";
69
+ /**
70
+ * The vocabulary token naming what a value IS — `name.legal`, `phone.mobile`, `address.postal`, `person.birthDate`. Dotted, most-general segment first, so that a consumer with no knowledge of the specific token can still group by its prefix.
71
+ *
72
+ * The token is the maintainer's own; no external vocabulary is primary. External vocabularies (vCard/jCard, OIDC standard claims, schema.org) are mappings applied at PRESENTATION by a renderer, not at rest, so that a query written in any of them can be matched without the store having to live inside any one of them.
73
+ *
74
+ * The `x:` prefix is an open extension namespace and is not decoration. The closest prior art — Windows CardSpace's self-issued card — supported exactly fifteen predefined claim types with no extensibility, and that is the specific way it failed the requirement a holder actually has. An `x:` attribute stores, composes, binds and discloses exactly like a known one; it renders generically and matches only an explicit query.
75
+ */
76
+ export type ClaimType = string;
65
77
  /**
66
78
  * Discriminator: is this consumer a user-driven Companion or a headless Service?
67
79
  */
@@ -112,10 +124,14 @@ export type DigestMultibase = string;
112
124
  * Whether the subject is permitted. The ABSENCE of any grant is treated as `deny` (default-deny).
113
125
  */
114
126
  export type Effect_ConsentV0_1 = "allow" | "deny";
127
+ /**
128
+ * Optimistic-concurrency precondition. A positive value requires the record's current `version` to equal it exactly; zero means create-only and applies only when no live record exists at the address.
129
+ */
130
+ export type ExpectedVersion_PersonaV0_1 = number;
115
131
  /**
116
132
  * Optimistic-concurrency precondition on a write. A positive value requires that the record's current `version` equals it exactly. Zero means "create only" — the write applies only if no LIVE record exists at the address, which is what makes lease acquisition safe: without it two instances can each read "absent", each write, and each believe it won. A tombstone is not a live record, so `expectedVersion: 0` succeeds over one; the created record takes the namespace's next counter value, which is necessarily greater than the tombstone's.
117
133
  */
118
- export type ExpectedVersion = number;
134
+ export type ExpectedVersion_VtaV0_1 = number;
119
135
  /**
120
136
  * `issued` is outstanding and revocable; `consumed` and `expired` are terminal.
121
137
  */
@@ -144,6 +160,95 @@ export type Kind = "dm" | "group" | "channel";
144
160
  * Scopes one application's records within a context, so several tools can share a context without colliding — `openvtc`, `cnm`, an agent runtime. The maintainer MUST NOT interpret the value; it is an opaque partition name. Namespaces are first-come and unreserved, so an application SHOULD pick a stable, specific one: a future per-namespace ACL would grant on this exact string, which makes renaming a namespace a migration rather than an edit.
145
161
  */
146
162
  export type Namespace = string;
163
+ /**
164
+ * One line of a profile, in exactly one of four forms. Together they are the whole of a profile's flexibility, and each exists for a case the others handle badly.
165
+ *
166
+ * `{ref}` — use the pool attribute, live. Editing the pool updates every profile that references it, which is the point.
167
+ *
168
+ * `{ref, pinVersion}` — use the value as it was at that version. For a profile that must keep presenting the value a counterparty already verified.
169
+ *
170
+ * `{ref, override}` — the same fact, a different value here. ("In the gaming profile my display name is different.")
171
+ *
172
+ * `{inline}` — a value that never enters the pool, and so never leaks into another profile.
173
+ *
174
+ * Omission is exclusion; there is no removal marker.
175
+ */
176
+ export type ProfileEntry =
177
+ | {
178
+ ref: Ulid;
179
+ }
180
+ | {
181
+ ref: Ulid;
182
+ pinVersion: Version_PersonaV0_1;
183
+ }
184
+ | {
185
+ ref: Ulid;
186
+ /**
187
+ * Replaces the pool attribute's value for this profile only. `type`, `valueType` and `provenance` are inherited from the referenced attribute and MUST NOT be overridden — an override that changed provenance would let a self-asserted value present as attested.
188
+ */
189
+ override: {
190
+ value: unknown;
191
+ label?: string;
192
+ };
193
+ }
194
+ | {
195
+ inline: {
196
+ type: ClaimType;
197
+ valueType: ValueType;
198
+ value: unknown;
199
+ label?: string;
200
+ provenance: Provenance;
201
+ };
202
+ };
203
+ /**
204
+ * How strongly a credential-backed claim is hidden when presented, ordered most private first. `predicate` proves a statement over a claim without disclosing the claim. `derived` discloses exactly the claims needed via an unlinkable derived proof, so two presentations cannot be joined. `selectiveDisclosure` discloses exactly the claims needed but carries the issuer's signature unchanged, so two presentations ARE linkable. `whole` discloses the entire credential.
205
+ *
206
+ * The distinction between the first two and the last two is of kind, not degree: only `predicate` and `derived` avoid handing two verifiers a join key. A maintainer MUST default to the highest rung the credential's format supports, and MUST NOT silently fall to a lower one — a request that cannot be satisfied at the rung a producer asked for is refused, because a silent privacy downgrade discloses material the holder believed was hidden.
207
+ */
208
+ export type ProofRung = "predicate" | "derived" | "selectiveDisclosure" | "whole";
209
+ /**
210
+ * Where a value comes from, and the member that makes this family worth building on a trust stack rather than in an address book. It survives to the verifier, so a recipient can tell — per field — what the holder typed from what an issuer attested.
211
+ *
212
+ * `selfAsserted` — the holder supplied it.
213
+ *
214
+ * `credentialBacked` — the value is derived from a credential in the vault at `claimPath`. The stored value is a CACHE FOR DISPLAY; the credential is the truth. A maintainer MUST re-derive it on read and MUST fail closed (never presenting a stale value) when the credential has been revoked, has expired, or has been archived or deleted.
215
+ *
216
+ * `generated` — the value is minted per verifier at disclosure time and recorded against that verifier, so every relying party receives a different one that routes back to the holder. This is the shape of the most widely adopted consumer privacy feature in this space; a maintainer need not operate a relay to conform, but the shape must exist, because retrofitting per-verifier values into a pool-of-values model is a migration rather than an addition.
217
+ */
218
+ export type Provenance =
219
+ | {
220
+ kind: "selfAsserted";
221
+ }
222
+ | {
223
+ kind: "credentialBacked";
224
+ /**
225
+ * Vault identifier of the backing credential.
226
+ */
227
+ credentialId: string;
228
+ /**
229
+ * RFC 6901 JSON Pointer to the claim within the credential, e.g. `/credentialSubject/familyName`.
230
+ */
231
+ claimPath: string;
232
+ /**
233
+ * Issuer of the backing credential. Advisory: a consumer MUST verify the credential rather than trusting this member.
234
+ */
235
+ issuerDid?: string;
236
+ /**
237
+ * The disclosure rung this claim was, or will be, presented at.
238
+ */
239
+ proof?: ProofRung;
240
+ }
241
+ | {
242
+ kind: "generated";
243
+ /**
244
+ * Names the minting scheme, e.g. `relayEmail`. Maintainer-defined.
245
+ */
246
+ generator: string;
247
+ /**
248
+ * When true (the default and the only useful setting), a distinct value is minted for each verifier.
249
+ */
250
+ perVerifier?: boolean;
251
+ };
147
252
  /**
148
253
  * A device's platform push channel — the body the device registers with its push GATEWAY (push wake-up binding, https://trusttasks.org/binding/push/0.1; modeled on Aries RFC 0699/0734). The gateway holds this token and returns an opaque WakeHandle in exchange; the token is held by the gateway ONLY, never by the mediator or the maintainer/VTA. The gateway uses it to send a contentless wake-up when an authorized trigger asks — the push payload never carries Trust Task content. Tagged union over the discriminator `platform`.
149
254
  */
@@ -244,6 +349,14 @@ export type SyncEvent_SyncV0_2 =
244
349
  | VaultDeletedEvent_SyncV0_2
245
350
  | AclChangedEvent_SyncV0_2
246
351
  | PolicyChangedEvent_SyncV0_2;
352
+ /**
353
+ * A ULID in Crockford base32, uppercase. Used for `attributeId` and `profileId`. Chosen over a UUID because the leading 48 bits are a timestamp, so a key-ordered scan of the store is also creation-ordered and a `list` needs no secondary sort. Server-assigned on create; a producer MAY supply one to make a create idempotent, and a maintainer MUST reject a supplied value that already exists rather than silently overwriting.
354
+ */
355
+ export type Ulid = string;
356
+ /**
357
+ * The JSON shape of `value`, declared so that a consumer can render and compare without guessing. The maintainer validates that `value` agrees with this member and does nothing further: it does NOT validate a phone number against a phone-number grammar. That is a producer's affordance, and a store that grows opinions about the contents of its records eventually blocks its consumer's release.
358
+ */
359
+ export type ValueType = "string" | "number" | "boolean" | "date" | "object";
247
360
  /**
248
361
  * What the policy decided.
249
362
  *
@@ -252,10 +365,14 @@ export type SyncEvent_SyncV0_2 =
252
365
  * The four are not reducible to a pending/decided pair. `refer` and `requestMore` are both 'not decided', but they place the next action with different parties: `refer` waits on the community, `requestMore` waits on the applicant. A consumer that cannot tell them apart cannot tell a user whether to wait or to act.
253
366
  */
254
367
  export type VerdictEffect = "allow" | "deny" | "refer" | "requestMore";
368
+ /**
369
+ * A value of the store's monotonic write counter. Server-assigned; a producer never chooses one.
370
+ */
371
+ export type Version_PersonaV0_1 = number;
255
372
  /**
256
373
  * A value of the namespace's monotonic write counter (see this schema's description). Server-assigned; a producer never chooses one.
257
374
  */
258
- export type Version = number;
375
+ export type Version_VtaV0_1 = number;
259
376
  /**
260
377
  * A Verifiable Identifier (SPEC §4.8). For a mediator-served account this is the account's controlling DID, carried verbatim and compared by exact string equality. For privacy — and because some mediators key accounts by a one-way hash and never hold the full DID — a stable hash of the DID (e.g. its SHA-256 digest) is an equally valid value here: producer and consumer simply agree on the same opaque identifier and compare by exact string equality. The field carries whichever form the issuing mediator uses.
261
378
  */
@@ -431,7 +548,7 @@ export interface AppStateRecord {
431
548
  /**
432
549
  * The namespace counter value this record's most recent write took. Supply it as `expectedVersion` on the next write to make that write conditional on nothing having changed in between.
433
550
  */
434
- version: Version;
551
+ version: Version_VtaV0_1;
435
552
  /**
436
553
  * The stored JSON, in whatever shape the owning application chose. Any JSON value, including `null`. The maintainer neither validates nor interprets it. Absent when this is a tombstone or a metadata-only view — see this definition's description for why that is not the same as a null value.
437
554
  */
@@ -528,6 +645,36 @@ export interface AttachmentRef_VaultV0_3 {
528
645
  */
529
646
  contentType?: string;
530
647
  }
648
+ /**
649
+ * One atomic fact a holder keeps about themselves. Several attributes MAY share a `type` — three phone numbers, a legal name and a preferred name — which is why `attributeId` is the identity of a fact and `type` is not. The pool is flat and unordered; ordering is a profile's concern.
650
+ */
651
+ export interface Attribute {
652
+ attributeId: Ulid;
653
+ type: ClaimType;
654
+ valueType: ValueType;
655
+ /**
656
+ * The fact itself, agreeing with `valueType`. Encrypted at rest by the maintainer. Absent when the caller asked for a metadata-only view, and absent when a credential-backed value could not be re-derived — a consumer MUST NOT conflate the two and MUST read `stale` to tell them apart.
657
+ */
658
+ value: {
659
+ [k: string]: unknown | undefined;
660
+ };
661
+ /**
662
+ * The holder's own words for this attribute, shown in a picker. Never disclosed to a verifier; it is a note to self.
663
+ */
664
+ label?: string;
665
+ provenance: Provenance;
666
+ /**
667
+ * Present and true when a `credentialBacked` value could not be re-derived. `staleReason` says why. A maintainer MUST refuse to disclose a stale attribute.
668
+ */
669
+ stale?: boolean;
670
+ /**
671
+ * Why re-derivation failed. Present only alongside `stale`.
672
+ */
673
+ staleReason?: "revoked" | "expired" | "archived" | "deleted" | "notFound";
674
+ version: Version_PersonaV0_1;
675
+ createdAt?: string;
676
+ updatedAt: string;
677
+ }
531
678
  /**
532
679
  * One record in the mediator's privileged-change audit log: one change, by one actor, at one time.
533
680
  */
@@ -994,6 +1141,46 @@ export interface Service_DeviceV0_2 {
994
1141
  kind: "service";
995
1142
  serviceKind: "mediator" | "aiAgent" | "daemon";
996
1143
  }
1144
+ /**
1145
+ * What a peer disclosed, as received. Structurally the same claim set a holder composes and presents — a profile and a contact card are one schema seen from two sides — which is why a maintainer validates both with the same code and a consumer renders both with the same view.
1146
+ */
1147
+ export interface ContactDocument {
1148
+ /**
1149
+ * The DID that published the document, as it appeared. Normally a pairwise identifier, so it names the relationship rather than the person.
1150
+ */
1151
+ publisher?: string;
1152
+ /**
1153
+ * The publisher's own monotonic counter, if they supplied one. Advisory: it orders the publisher's revisions relative to each other and MUST NOT be trusted to order them against anything else.
1154
+ */
1155
+ cardVersion?: number;
1156
+ /**
1157
+ * @maxItems 256
1158
+ */
1159
+ claims: {
1160
+ type: ClaimType;
1161
+ valueType: ValueType;
1162
+ value: unknown;
1163
+ /**
1164
+ * As asserted by the publisher. A recipient MUST NOT treat a claimed credentialBacked provenance as verified — it is a statement about what the publisher says backs the claim, and verification is a separate act against the credential itself.
1165
+ */
1166
+ provenance?: Provenance;
1167
+ }[];
1168
+ }
1169
+ /**
1170
+ * One received version of a contact's document. Revisions exist because an address book that silently replaces a payment address is a phishing surface, and one that says what changed and when is a defence.
1171
+ */
1172
+ export interface ContactRevision {
1173
+ /**
1174
+ * Monotonic per contact, assigned by the recipient. Not the publisher's cardVersion — a recipient counts what it received, which is the only sequence it can vouch for.
1175
+ */
1176
+ rev: number;
1177
+ receivedAt: string;
1178
+ /**
1179
+ * When a later revision replaced this one. Null for the current revision.
1180
+ */
1181
+ supersededAt?: string | null;
1182
+ document?: ContactDocument;
1183
+ }
997
1184
  /**
998
1185
  * Per-context restrictions the VTA enforces. Every member is optional, and **absence means unrestricted, not empty** — a policy that omits `presentableTypes` permits every type, while one that sets it to `[]` permits none. The two are opposite instructions and a consumer MUST NOT collapse them.
999
1186
  */
@@ -2204,6 +2391,29 @@ export interface PolicyModule {
2204
2391
  updatedAt: string;
2205
2392
  ext?: Ext;
2206
2393
  }
2394
+ /**
2395
+ * A named projection over the pool. Agent-scoped, like the pool it draws from. `entries` is ordered and the order is display order.
2396
+ */
2397
+ export interface Profile {
2398
+ profileId: Ulid;
2399
+ /**
2400
+ * The holder's name for this profile — "Work", "Gaming". Not disclosed.
2401
+ */
2402
+ name: string;
2403
+ /**
2404
+ * @maxItems 256
2405
+ */
2406
+ entries: ProfileEntry[];
2407
+ /**
2408
+ * Vault identifiers of credentials associated with this profile as INVENTORY, distinct from the evidence relationship a `credentialBacked` attribute expresses. The two answer different questions — what can this persona prove, versus what backs this specific claim — and a consumer MUST NOT read one as the other.
2409
+ *
2410
+ * @maxItems 256
2411
+ */
2412
+ credentialRefs?: string[];
2413
+ version: Version_PersonaV0_1;
2414
+ createdAt?: string;
2415
+ updatedAt: string;
2416
+ }
2207
2417
  /**
2208
2418
  * Server-issued options for `navigator.credentials.create({ publicKey: ... })`. Mirrors the WebAuthn Level 2 `PublicKeyCredentialCreationOptions` dictionary; binary fields are base64url-encoded strings (rather than ArrayBuffers) so the value is JSON-safe over the wire.
2209
2419
  */
@@ -3252,7 +3462,7 @@ export interface WriteResult {
3252
3462
  /**
3253
3463
  * The new version, on `written`.
3254
3464
  */
3255
- version?: Version;
3465
+ version?: Version_VtaV0_1;
3256
3466
  /**
3257
3467
  * On `written`: true when no live record existed at the address beforehand.
3258
3468
  */
@@ -3260,7 +3470,7 @@ export interface WriteResult {
3260
3470
  /**
3261
3471
  * On `conflict`: the version the maintainer actually holds. Absent when the conflict is that no record exists (`expectedVersion` was positive and the address is empty).
3262
3472
  */
3263
- currentVersion?: Version;
3473
+ currentVersion?: Version_VtaV0_1;
3264
3474
  /**
3265
3475
  * On `conflict`: the value the maintainer actually holds, returned WITH the rejection rather than left for the caller to re-read. A bare rejection has no fixed point under contention — between the rejection and the re-read the record can change again — so returning the winner's view removes the race rather than narrowing it. Absent when `currentDeleted` is true or no record exists.
3266
3476
  */
@@ -245,7 +245,9 @@ export const PAYLOAD_SCHEMA = {
245
245
  "sign-trust-task",
246
246
  "credential-write",
247
247
  "memory-read",
248
- "memory-write"
248
+ "memory-write",
249
+ "room-present",
250
+ "room-open"
249
251
  ],
250
252
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
251
253
  },
@@ -581,7 +583,9 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
581
583
  "sign-trust-task",
582
584
  "credential-write",
583
585
  "memory-read",
584
- "memory-write"
586
+ "memory-write",
587
+ "room-present",
588
+ "room-open"
585
589
  ],
586
590
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
587
591
  },
@@ -245,7 +245,9 @@ export const PAYLOAD_SCHEMA = {
245
245
  "signTrustTask",
246
246
  "credentialWrite",
247
247
  "memoryRead",
248
- "memoryWrite"
248
+ "memoryWrite",
249
+ "roomPresent",
250
+ "roomOpen"
249
251
  ],
250
252
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
251
253
  },
@@ -581,7 +583,9 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
581
583
  "signTrustTask",
582
584
  "credentialWrite",
583
585
  "memoryRead",
584
- "memoryWrite"
586
+ "memoryWrite",
587
+ "roomPresent",
588
+ "roomOpen"
585
589
  ],
586
590
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
587
591
  },
@@ -213,7 +213,9 @@ export const PAYLOAD_SCHEMA = {
213
213
  "sign-trust-task",
214
214
  "credential-write",
215
215
  "memory-read",
216
- "memory-write"
216
+ "memory-write",
217
+ "room-present",
218
+ "room-open"
217
219
  ],
218
220
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
219
221
  },
@@ -539,7 +541,9 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
539
541
  "sign-trust-task",
540
542
  "credential-write",
541
543
  "memory-read",
542
- "memory-write"
544
+ "memory-write",
545
+ "room-present",
546
+ "room-open"
543
547
  ],
544
548
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
545
549
  },
@@ -213,7 +213,9 @@ export const PAYLOAD_SCHEMA = {
213
213
  "signTrustTask",
214
214
  "credentialWrite",
215
215
  "memoryRead",
216
- "memoryWrite"
216
+ "memoryWrite",
217
+ "roomPresent",
218
+ "roomOpen"
217
219
  ],
218
220
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
219
221
  },
@@ -539,7 +541,9 @@ export const RESPONSE_PAYLOAD_SCHEMA = {
539
541
  "signTrustTask",
540
542
  "credentialWrite",
541
543
  "memoryRead",
542
- "memoryWrite"
544
+ "memoryWrite",
545
+ "roomPresent",
546
+ "roomOpen"
543
547
  ],
544
548
  "description": "Fine-grained capability flag scoped to the device's allowed contexts. See SPEC.md for the full semantics of each. Capability values are additive: a consumer MUST ignore a value it does not recognise rather than reject the binding, and MUST NOT treat an unrecognised value as conferring anything."
545
549
  },
package/src/index.ts CHANGED
@@ -168,6 +168,31 @@ export * as MessagingAdminConfig_v0_1 from "./messaging/admin/config/0.1/payload
168
168
  export * as MessagingAdminList_v0_1 from "./messaging/admin/list/0.1/payload.js";
169
169
  export * as MessagingAdminStrip_v0_1 from "./messaging/admin/strip/0.1/payload.js";
170
170
  export * as MessagingPing_v0_1 from "./messaging/ping/0.1/payload.js";
171
+ export * as PersonaRecordShared_v0_1 from "./persona/_shared/0.1/persona-record.js";
172
+ export * as PersonaAttributeDelete_v1_0 from "./persona/attribute/delete/1.0/payload.js";
173
+ export * as PersonaAttributeList_v1_0 from "./persona/attribute/list/1.0/payload.js";
174
+ export * as PersonaAttributePut_v1_0 from "./persona/attribute/put/1.0/payload.js";
175
+ export * as PersonaBindingGet_v1_0 from "./persona/binding/get/1.0/payload.js";
176
+ export * as PersonaBindingList_v1_0 from "./persona/binding/list/1.0/payload.js";
177
+ export * as PersonaBindingSet_v1_0 from "./persona/binding/set/1.0/payload.js";
178
+ export * as PersonaContactDelete_v1_0 from "./persona/contact/delete/1.0/payload.js";
179
+ export * as PersonaContactGet_v1_0 from "./persona/contact/get/1.0/payload.js";
180
+ export * as PersonaContactList_v1_0 from "./persona/contact/list/1.0/payload.js";
181
+ export * as PersonaContactPut_v1_0 from "./persona/contact/put/1.0/payload.js";
182
+ export * as PersonaCorrelationAnalyze_v1_0 from "./persona/correlation/analyze/1.0/payload.js";
183
+ export * as PersonaDisclosureHistory_v1_0 from "./persona/disclosure/history/1.0/payload.js";
184
+ export * as PersonaDisclosurePresent_v1_0 from "./persona/disclosure/present/1.0/payload.js";
185
+ export * as PersonaDisclosurePreview_v1_0 from "./persona/disclosure/preview/1.0/payload.js";
186
+ export * as PersonaLocalBindingSet_v1_0 from "./persona/local/binding/set/1.0/payload.js";
187
+ export * as PersonaLocalProfileDelete_v1_0 from "./persona/local/profile/delete/1.0/payload.js";
188
+ export * as PersonaLocalProfileGet_v1_0 from "./persona/local/profile/get/1.0/payload.js";
189
+ export * as PersonaLocalProfileList_v1_0 from "./persona/local/profile/list/1.0/payload.js";
190
+ export * as PersonaLocalProfilePut_v1_0 from "./persona/local/profile/put/1.0/payload.js";
191
+ export * as PersonaProfileDelete_v1_0 from "./persona/profile/delete/1.0/payload.js";
192
+ export * as PersonaProfileGet_v1_0 from "./persona/profile/get/1.0/payload.js";
193
+ export * as PersonaProfileList_v1_0 from "./persona/profile/list/1.0/payload.js";
194
+ export * as PersonaProfilePut_v1_0 from "./persona/profile/put/1.0/payload.js";
195
+ export * as PersonaRenderersList_v1_0 from "./persona/renderers/list/1.0/payload.js";
171
196
  export * as PolicyShared_v0_1 from "./policy/_shared/0.1/policy.js";
172
197
  export * as PolicyShared_v0_2 from "./policy/_shared/0.2/policy.js";
173
198
  export * as PolicyShared_v0_3 from "./policy/_shared/0.3/policy.js";
@@ -205,8 +230,14 @@ export * as RegistryRecordUpdate_v0_1 from "./registry/record/update/0.1/payload
205
230
  export * as RoomShared_v0_1 from "./rooms/_shared/0.1/room.js";
206
231
  export * as RoomsCreate_v0_1 from "./rooms/create/0.1/payload.js";
207
232
  export * as RoomsEpochMint_v0_1 from "./rooms/epoch/mint/0.1/payload.js";
233
+ export * as RoomsKeysCommit_v0_1 from "./rooms/keys/commit/0.1/payload.js";
234
+ export * as RoomsKeysKeyPackage_v0_1 from "./rooms/keys/key-package/0.1/payload.js";
208
235
  export * as RoomsKeysOpen_v0_1 from "./rooms/keys/open/0.1/payload.js";
209
236
  export * as RoomsKeysPresent_v0_1 from "./rooms/keys/present/0.1/payload.js";
237
+ export * as RoomsKeysWelcome_v0_1 from "./rooms/keys/welcome/0.1/payload.js";
238
+ export * as RoomsOwnerClaim_v0_1 from "./rooms/owner/claim/0.1/payload.js";
239
+ export * as RoomsOwnerTransfer_v0_1 from "./rooms/owner/transfer/0.1/payload.js";
240
+ export * as RoomsRecordsCurate_v0_1 from "./rooms/records/curate/0.1/payload.js";
210
241
  export * as RoomsRecordsGet_v0_1 from "./rooms/records/get/0.1/payload.js";
211
242
  export * as RoomsRecordsList_v0_1 from "./rooms/records/list/0.1/payload.js";
212
243
  export * as RoomsRecordsPut_v0_1 from "./rooms/records/put/0.1/payload.js";
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Generated by scripts/build-ts-bindings.mjs — DO NOT EDIT BY HAND.
3
+ * Source: specs/persona/_shared/0.1/persona-record.schema.json
4
+ */
5
+
6
+ /**
7
+ * The persona store holds the identity information a holder keeps about themselves, and the contact records peers disclose to them. It is a distinct store from the credential vault (`vault/*`, which holds verifiable credentials) and from application state (`vta/app-state/*`, which is schema-agnostic and never interpreted). The distinction is not filing: disclosure control is the point of this family, and a maintainer that cannot read a record cannot decide which of its members may leave, cannot audit which ones did, and cannot answer "what have I shared with whom".
8
+ *
9
+ * Two scopes, and the split is normative. The **attribute pool and profiles are agent-scoped** — one person, one set of facts about themselves, above every trust context. **Bindings, contacts and disclosure records are context-scoped**, because a persona lives in a context and so do its counterparties. A maintainer MUST NOT allow a context-scoped caller to read the pool: the direction is a control, not a convenience, and §Authorization of each task states which side it falls on. An access-control failure over a readable pool discloses everything; a pool no context can address has nothing to disclose.
10
+ *
11
+ * Attributes are values and profiles are projections. A profile references pool attributes rather than copying them, so a holder who changes a phone number changes it once. The four entry forms (`ProfileEntry`) are the whole of that flexibility: reference live, reference pinned, reference with an override, or supply a profile-local value. Omission is exclusion — a profile is a whitelist, because a blacklist over a growing pool leaks by default the first time an attribute is added.
12
+ *
13
+ * The version counter follows the `vta/app-state` precedent exactly and for the same reason: monotonic per store rather than per record, so that one number serves as both the optimistic-concurrency token and the change-feed watermark. Consumers MUST treat versions as opaque and monotonic; a record's version can jump by any amount between two writes because its neighbours consumed the intervening values.
14
+ */
15
+ export interface PersonaRecordSharedDefinitionsForThePersonaSpecFamily {
16
+ [k: string]: unknown | undefined;
17
+ }
18
+
19
+ /**
20
+ * The definitions this shared schema publishes, hoisted to one declaration each.
21
+ * See "../../../_shared/components.js".
22
+ */
23
+ export type { Attribute, ClaimType, ContactDocument, ContactRevision, ExpectedVersion_PersonaV0_1 as ExpectedVersion, Profile, ProfileEntry, ProofRung, Provenance, Ulid, ValueType, Version_PersonaV0_1 as Version } from "../../../_shared/components.js";