@cef-ai/vault-sdk 4.0.0 → 4.1.0

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.
@@ -1,13 +1,75 @@
1
1
  import type { SignedGrant, SignedRoster } from "./types.js";
2
2
  /**
3
- * The schema string carried INSIDE the signed bytes (`authz.GrantSchema`).
4
- *
5
- * A v2 changes this string, so a v1 signature can never be replayed as a v2
6
- * grant — which is why `decodeGrantDoc` refuses any other value instead of
7
- * handing a v2 document's fields to a v1 reader under a signature that is
8
- * perfectly valid for the v2 meaning.
3
+ * The schema string a CEILING-LESS grant carries inside its signed bytes
4
+ * (`authz.GrantSchemaV1`). Still emitted, still the common case: a grant that
5
+ * sets no privacy ceiling is encoded at v1, byte for byte as it always was,
6
+ * so every signature minted before v2 existed goes on verifying.
9
7
  */
10
8
  export declare const GRANT_SCHEMA = "cere.vault.grant.v1";
9
+ /**
10
+ * The schema string a ceiling-carrying grant carries (`authz.GrantSchemaV2`).
11
+ *
12
+ * A document is v2 if and only if it carries a privacy ceiling. There is no
13
+ * v2 spelling of "no ceiling" — that is v1, and giving it two spellings is
14
+ * the ambiguity `NO_GRANT_EXPIRY`'s comment spends a paragraph refusing.
15
+ *
16
+ * The version is a FUNCTION of the ceiling rather than an unconditional bump:
17
+ * bumping it always would change the bytes of every grant, including the
18
+ * overwhelming majority that sets no ceiling, which is a flag day on every
19
+ * stored signature. See `canonicalGrantBytesWithCeiling`.
20
+ */
21
+ export declare const GRANT_SCHEMA_V2 = "cere.vault.grant.v2";
22
+ /**
23
+ * The most sensitive class of fact a membership may see, when the grant
24
+ * carries one — Go's `vault.PrivacyCeiling`, reproduced.
25
+ *
26
+ * # IT IS NOT A SCOPE LEVEL, AND THE TWO MUST NEVER BE COMPARED
27
+ *
28
+ * Level (audit|reader|member) is WHAT a member may do in a place. Privacy is
29
+ * HOW SENSITIVE a thing is, independent of where it lives. The two enums
30
+ * share no value, which is what makes a mix-up a refusal rather than a silent
31
+ * widening: `isValidPrivacyCeiling("member")` is false.
32
+ *
33
+ * A BRANDED string for the same reason `GrantExpiry` is one: it sits next to
34
+ * `expiresAt` in the encoder's parameter list, and two adjacent parameters of
35
+ * the same underlying kind are the slip that compiles and signs valid bytes
36
+ * for the wrong document. Use {@link privacyCeiling} to make one.
37
+ */
38
+ export type PrivacyCeiling = string & {
39
+ readonly __privacyCeiling: unique symbol;
40
+ };
41
+ /**
42
+ * The ONE spelling of "no privacy ceiling was ever signed for this
43
+ * membership" — and it is NOT a synonym for `"public"`.
44
+ *
45
+ * It means NOTHING VISIBLE, and that is a decision on the record: a caller
46
+ * whose ceiling is this sees no memory-graph row at all, because a ceiling
47
+ * nobody signed is not a ceiling. Picking `"internal"` as the default would
48
+ * invent an authorisation the vault owner never attested on the axis whose
49
+ * whole job is disclosure — the same ruling `NO_GRANT_EXPIRY` makes one field
50
+ * earlier, except that there the failure direction WIDENS an unsigned grant
51
+ * and here it NARROWS to zero, which is why failing closed is free.
52
+ *
53
+ * Selects {@link GRANT_SCHEMA} in the encoder: a grant carrying this is a v1
54
+ * document, byte for byte.
55
+ */
56
+ export declare const NO_PRIVACY_CEILING: PrivacyCeiling;
57
+ /**
58
+ * Every ceiling a grant may carry, least to most sensitive — Go's
59
+ * `validPrivacyCeilings`. {@link NO_PRIVACY_CEILING} is deliberately ABSENT:
60
+ * it is a legal decoded state (the document is v1) but never a value a caller
61
+ * may SET, and admitting `""` at the writer would give the state two
62
+ * spellings.
63
+ */
64
+ export declare const PRIVACY_CEILINGS: readonly ["public", "internal", "private", "restricted"];
65
+ /** The literal union of {@link PRIVACY_CEILINGS} — what `privacyCeiling` accepts. */
66
+ export type PrivacyCeilingName = (typeof PRIVACY_CEILINGS)[number];
67
+ /** Is `c` a ceiling a v2 grant may carry? The WRITER-side guard. */
68
+ export declare function isValidPrivacyCeiling(c: PrivacyCeiling): boolean;
69
+ /** Tags a string as a privacy ceiling. The parameter type is the literal
70
+ * union, so a misspelling is a compile error and an as-yet-unknown ceiling
71
+ * from a newer peer has to be cast deliberately. */
72
+ export declare function privacyCeiling(c: PrivacyCeilingName): PrivacyCeiling;
11
73
  /**
12
74
  * The header a membership write carries the vault owner's grant signature in
13
75
  * (`authz.GrantSignatureHeader`), hex, with or without an `0x` prefix.
@@ -186,16 +248,31 @@ export interface Grant {
186
248
  * see the header's rule.
187
249
  */
188
250
  expiresAt: GrantExpiry;
251
+ /**
252
+ * The most sensitive class of fact this membership may see, or
253
+ * {@link NO_PRIVACY_CEILING} when the document is v1 and no ceiling was
254
+ * signed.
255
+ *
256
+ * NO_PRIVACY_CEILING HERE MEANS NOTHING VISIBLE, not "public". Read that
257
+ * as "this membership was signed before the memory surface existed and
258
+ * attests no disclosure at all" — the vault owner opts a member in by
259
+ * signing a v2 grant, which is a ceremony, not a default.
260
+ *
261
+ * Mirrors Go's `Grant.PrivacyCeiling`, which decodes v1 documents to
262
+ * `NoPrivacyCeiling` for the same reason.
263
+ */
264
+ privacyCeiling: PrivacyCeiling;
189
265
  }
190
266
  /**
191
267
  * A signed grant that could not be trusted: the signature does not verify,
192
268
  * the document does not decode, its schema is unknown, or it describes a
193
269
  * different membership from the one it was served under.
194
270
  *
195
- * A THROWN error rather than a filtered-out entry, because every one of those
196
- * states on an authorization artifact means the response is not what it
197
- * claims to be. Silently dropping the bad entry and returning the rest would
198
- * hand a caller a shorter roster that looks complete. `memberPubkey` names
271
+ * THROWN by {@link verifyGrant}, where one grant IS the whole question and a
272
+ * failure must stop the caller. REPORTED (and the entry skipped) by
273
+ * {@link verifySignedRoster}, where the same failure on one entry used to
274
+ * fail the whole roster for every other member — see that function's doc
275
+ * comment for the outage that ruling turned out to be. `memberPubkey` names
199
276
  * the entry so an operator can find it.
200
277
  */
201
278
  export declare class GrantVerificationError extends Error {
@@ -214,8 +291,17 @@ export declare class GrantVerificationError extends Error {
214
291
  memberPubkey?: string);
215
292
  }
216
293
  /**
217
- * The exact bytes a grant signature covers, mirroring
218
- * `authz.CanonicalGrantBytes`.
294
+ * The exact bytes a CEILING-LESS grant signature covers — v1, byte for byte
295
+ * as `authz.CanonicalGrantBytes` has always emitted them. Delegates to
296
+ * {@link canonicalGrantBytesWithCeiling}; see that function for the full
297
+ * contract, and this file's header for why the version is a function of the
298
+ * ceiling rather than an unconditional bump.
299
+ */
300
+ export declare function canonicalGrantBytes(vaultId: string, memberPubkey: string, role: string, scopes: Record<string, string>, issuedAt: string, expiresAt: GrantExpiry): Uint8Array;
301
+ /**
302
+ * The encoder, mirroring `authz.CanonicalGrantBytesWithCeiling`. Emits
303
+ * {@link GRANT_SCHEMA} when the grant sets no privacy ceiling and
304
+ * {@link GRANT_SCHEMA_V2} when it sets one.
219
305
  *
220
306
  * Every bound value is inside the output: a document proves ONE member's
221
307
  * standing on ONE vault and nothing else. `scopes` is emitted as an ARRAY
@@ -230,12 +316,16 @@ export declare class GrantVerificationError extends Error {
230
316
  * document with no mint time that verifies exactly as well as one with a mint
231
317
  * time.
232
318
  *
233
- * `issuedAt` is LAST BUT ONE and `expiresAt` is LAST, mirroring Go's field and
234
- * parameter order. In Go the map between `issuedAt` and the other strings is
235
- * what makes a transposition a compile error instead of a valid signature over
236
- * the wrong bytes; the one pair the map cannot sit between is `issuedAt` and
237
- * `expiresAt`, which Go separates with a defined type and this file mirrors
238
- * with {@link GrantExpiry}'s brand.
319
+ * `privacyCeiling` is emitted LAST, after `expiresAt`, and ONLY when set —
320
+ * `omitempty` in Go, an append here — so a ceiling-less grant is
321
+ * byte-identical to a v1 document and every signature already stored goes on
322
+ * matching what this encoder rebuilds.
323
+ *
324
+ * The ceiling is REFUSED, never coerced: an unrecognised value throws, because
325
+ * a document that verifies perfectly and confers a ceiling nobody named is,
326
+ * on the disclosure axis, the one output this function must never hand back.
327
+ * {@link NO_PRIVACY_CEILING} is the single exception and is not a value: it
328
+ * selects v1.
239
329
  *
240
330
  * `issuedAt` has NO DEFAULT on purpose: a `new Date().toISOString()` fallback
241
331
  * would be a hidden clock inside the encoder, and a caller who forgot to pass
@@ -247,15 +337,19 @@ export declare class GrantVerificationError extends Error {
247
337
  *
248
338
  * `expiresAt` is the ONE parameter with no emptiness check, because `""` is
249
339
  * {@link NO_GRANT_EXPIRY} — a legal, common, deliberate value rather than a
250
- * missing one.
340
+ * missing one. `ceiling` shares the exemption for the same reason.
251
341
  */
252
- export declare function canonicalGrantBytes(vaultId: string, memberPubkey: string, role: string, scopes: Record<string, string>, issuedAt: string, expiresAt: GrantExpiry): Uint8Array;
342
+ export declare function canonicalGrantBytesWithCeiling(vaultId: string, memberPubkey: string, role: string, scopes: Record<string, string>, issuedAt: string, expiresAt: GrantExpiry, privacyCeiling: PrivacyCeiling): Uint8Array;
253
343
  /**
254
344
  * Reads a canonical grant document back into its parts, mirroring
255
345
  * `authz.DecodeGrantDoc`. Never re-encodes; the bytes stay the authority.
256
346
  *
257
- * Throws on an unknown schema (see `GRANT_SCHEMA`) and on the same three
258
- * required fields the encoder refuses to omit.
347
+ * Accepts BOTH current schemas — {@link GRANT_SCHEMA} and
348
+ * {@link GRANT_SCHEMA_V2} — with the field that distinguishes them checked in
349
+ * both directions (a v1 document carrying a `privacyCeiling` is a forgery
350
+ * shape; a v2 document without a recognised one has given "no ceiling" a
351
+ * second spelling). Throws on any other schema and on the same three required
352
+ * fields the encoder refuses to omit.
259
353
  */
260
354
  export declare function decodeGrantDoc(doc: Uint8Array): Grant;
261
355
  /**
@@ -271,6 +365,25 @@ export declare function decodeGrantDoc(doc: Uint8Array): Grant;
271
365
  * wallets and SDKs disagree about both.
272
366
  */
273
367
  export declare function verifyGrantSig(orgWalletPubkeyHex: string, doc: Uint8Array, sigHex: string): Promise<boolean>;
368
+ /**
369
+ * Options for {@link verifySignedRoster}.
370
+ */
371
+ export interface RosterVerifyOptions {
372
+ /**
373
+ * Called once for EVERY entry the roster serves that could not be verified,
374
+ * with the failure. The entry is DEGRADED — omitted from the returned
375
+ * grants — and the roster as a whole still verifies; this callback is the
376
+ * only place the degradation is visible, so a caller that enforces on the
377
+ * result should treat every reported member as holding NOTHING PROVEN
378
+ * rather than as absent from the vault.
379
+ *
380
+ * A v2 grant minted by a server newer than this SDK decodes fine and is
381
+ * NOT reported here; what lands in this callback is an entry whose bytes
382
+ * could not be trusted at all — a future schema, a corrupt row, a
383
+ * signature that does not verify.
384
+ */
385
+ onUnverifiableGrant?: (err: GrantVerificationError) => void;
386
+ }
274
387
  /**
275
388
  * Verifies EVERY grant in a signed roster against the vault owner's key and
276
389
  * returns the grants decoded from the verified bytes.
@@ -282,16 +395,35 @@ export declare function verifyGrantSig(orgWalletPubkeyHex: string, doc: Uint8Arr
282
395
  * of the same document and are not covered by anything you checked.
283
396
  *
284
397
  * Three bindings are checked per entry, and the last two matter as much as
285
- * the signature: the document must carry the schema this SDK understands, it
398
+ * the signature: the document must carry a schema this SDK understands, it
286
399
  * must name the vault the roster is FOR, and it must name the member it was
287
400
  * served UNDER. A document that verifies but describes a different membership
288
401
  * is a valid signature over somebody else's grant — the substitution the
289
402
  * canonical bytes bind all four values to prevent.
290
403
  *
291
- * Fail-closed: the FIRST unverifiable entry throws
292
- * `GrantVerificationError` and no partial list is returned. An authorization
293
- * artifact with one entry you cannot prove is not a shorter roster, it is a
294
- * roster you cannot trust.
404
+ * # One unverifiable entry degrades the ENTRY, not the roster
405
+ *
406
+ * An entry that fails any of its checks is skipped and reported to
407
+ * {@link RosterVerifyOptions.onUnverifiableGrant} (when given) rather than
408
+ * thrown, and the remaining entries are returned. This is deliberate, and it
409
+ * is the second half of the condition ddc-node's `allowV2GrantMint` hold
410
+ * names for lifting: the loop this replaces threw on the FIRST bad entry, so
411
+ * one grant a consumer could not read — a ceiling-carrying v2 under 4.0.0, a
412
+ * future v3, a corrupt row — made the WHOLE roster fail verification for
413
+ * every member of that vault. An outage with a bystander list that long is
414
+ * not fail-closed, it is fail-everyone-else's.
415
+ *
416
+ * The envelope is still fail-closed: a roster naming the wrong vault, a
417
+ * signing key that does not derive the vault, or a malformed roster shape
418
+ * throws `GrantVerificationError` and NOTHING is returned — until the anchor
419
+ * holds, every entry is attacker-supplied, and there is no per-entry question
420
+ * to degrade to.
421
+ *
422
+ * SILENT SHORTENING IS THE RESIDUAL RISK, and the callback is the mitigation:
423
+ * a caller that ignores `onUnverifiableGrant` sees a shorter roster that
424
+ * looks complete. Treat a reported member as UNPROVEN — absence from the
425
+ * returned list means "no verified standing", which for authorization means
426
+ * deny, not "not in the vault".
295
427
  *
296
428
  * # `expectedVaultId` is the trust anchor, and it is why this is a
297
429
  * # verification rather than a consistency check
@@ -330,7 +462,7 @@ export declare function verifyGrantSig(orgWalletPubkeyHex: string, doc: Uint8Arr
330
462
  * itself learned from an untrusted party, the result is trust in THAT party's
331
463
  * choice of vault. Anchor it to something you already knew.
332
464
  */
333
- export declare function verifySignedRoster(roster: SignedRoster, expectedVaultId: string): Promise<Grant[]>;
465
+ export declare function verifySignedRoster(roster: SignedRoster, expectedVaultId: string, options?: RosterVerifyOptions): Promise<Grant[]>;
334
466
  /**
335
467
  * One entry of `verifySignedRoster`, exposed for a caller holding a single
336
468
  * grant (a member proving their own standing, say) rather than a whole
@@ -1 +1 @@
1
- {"version":3,"file":"grant-doc.d.ts","sourceRoot":"","sources":["../../src/core/grant-doc.ts"],"names":[],"mappings":"AA0FA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK5D;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,wBAAwB,CAAC;AAElD;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAK1D;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,aAAa,EAAE,OAAO,MAAM,CAAA;CAAE,CAAC;AAE7E;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,eAAe,EAAS,WAAW,CAAC;AAEjD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CAExD;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;;;;;;OASG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;;;;;;;OAUG;IACH,SAAS,EAAE,WAAW,CAAC;CACxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAG7C;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,MAAM;gBAN7B,OAAO,EAAE,MAAM;IACf;;;;OAIG;IACM,YAAY,GAAE,MAAW;CAKrC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,WAAW,GACrB,UAAU,CAsBZ;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,UAAU,GAAG,KAAK,CAsDrD;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,cAAc,CAClC,kBAAkB,EAAE,MAAM,EAC1B,GAAG,EAAE,UAAU,EACf,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAkBlB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0DG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,KAAK,EAAE,CAAC,CA8ClB;AAQD;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC,KAAK,CAAC,CAwChB"}
1
+ {"version":3,"file":"grant-doc.d.ts","sourceRoot":"","sources":["../../src/core/grant-doc.ts"],"names":[],"mappings":"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"}
@@ -90,14 +90,69 @@ import { decodeBase64, hexToBytes, strip0xHex } from "./canonical.js";
90
90
  const enc = new TextEncoder();
91
91
  const dec = new TextDecoder();
92
92
  /**
93
- * The schema string carried INSIDE the signed bytes (`authz.GrantSchema`).
94
- *
95
- * A v2 changes this string, so a v1 signature can never be replayed as a v2
96
- * grant — which is why `decodeGrantDoc` refuses any other value instead of
97
- * handing a v2 document's fields to a v1 reader under a signature that is
98
- * perfectly valid for the v2 meaning.
93
+ * The schema string a CEILING-LESS grant carries inside its signed bytes
94
+ * (`authz.GrantSchemaV1`). Still emitted, still the common case: a grant that
95
+ * sets no privacy ceiling is encoded at v1, byte for byte as it always was,
96
+ * so every signature minted before v2 existed goes on verifying.
99
97
  */
100
98
  export const GRANT_SCHEMA = "cere.vault.grant.v1";
99
+ /**
100
+ * The schema string a ceiling-carrying grant carries (`authz.GrantSchemaV2`).
101
+ *
102
+ * A document is v2 if and only if it carries a privacy ceiling. There is no
103
+ * v2 spelling of "no ceiling" — that is v1, and giving it two spellings is
104
+ * the ambiguity `NO_GRANT_EXPIRY`'s comment spends a paragraph refusing.
105
+ *
106
+ * The version is a FUNCTION of the ceiling rather than an unconditional bump:
107
+ * bumping it always would change the bytes of every grant, including the
108
+ * overwhelming majority that sets no ceiling, which is a flag day on every
109
+ * stored signature. See `canonicalGrantBytesWithCeiling`.
110
+ */
111
+ export const GRANT_SCHEMA_V2 = "cere.vault.grant.v2";
112
+ /**
113
+ * The ONE spelling of "no privacy ceiling was ever signed for this
114
+ * membership" — and it is NOT a synonym for `"public"`.
115
+ *
116
+ * It means NOTHING VISIBLE, and that is a decision on the record: a caller
117
+ * whose ceiling is this sees no memory-graph row at all, because a ceiling
118
+ * nobody signed is not a ceiling. Picking `"internal"` as the default would
119
+ * invent an authorisation the vault owner never attested on the axis whose
120
+ * whole job is disclosure — the same ruling `NO_GRANT_EXPIRY` makes one field
121
+ * earlier, except that there the failure direction WIDENS an unsigned grant
122
+ * and here it NARROWS to zero, which is why failing closed is free.
123
+ *
124
+ * Selects {@link GRANT_SCHEMA} in the encoder: a grant carrying this is a v1
125
+ * document, byte for byte.
126
+ */
127
+ export const NO_PRIVACY_CEILING = "";
128
+ /**
129
+ * Every ceiling a grant may carry, least to most sensitive — Go's
130
+ * `validPrivacyCeilings`. {@link NO_PRIVACY_CEILING} is deliberately ABSENT:
131
+ * it is a legal decoded state (the document is v1) but never a value a caller
132
+ * may SET, and admitting `""` at the writer would give the state two
133
+ * spellings.
134
+ */
135
+ export const PRIVACY_CEILINGS = [
136
+ "public",
137
+ "internal",
138
+ "private",
139
+ "restricted",
140
+ ];
141
+ /** Is `c` a ceiling a v2 grant may carry? The WRITER-side guard. */
142
+ export function isValidPrivacyCeiling(c) {
143
+ return PRIVACY_CEILINGS.includes(c);
144
+ }
145
+ /** Renders the valid ceilings for an error, as Go's `PrivacyCeilingsList`. */
146
+ function privacyCeilingsList() {
147
+ const quoted = PRIVACY_CEILINGS.map((c) => `"${c}"`);
148
+ return quoted.slice(0, -1).join(", ") + " or " + quoted[quoted.length - 1];
149
+ }
150
+ /** Tags a string as a privacy ceiling. The parameter type is the literal
151
+ * union, so a misspelling is a compile error and an as-yet-unknown ceiling
152
+ * from a newer peer has to be cast deliberately. */
153
+ export function privacyCeiling(c) {
154
+ return c;
155
+ }
101
156
  /**
102
157
  * The header a membership write carries the vault owner's grant signature in
103
158
  * (`authz.GrantSignatureHeader`), hex, with or without an `0x` prefix.
@@ -239,10 +294,11 @@ export function grantExpiry(rfc3339) {
239
294
  * the document does not decode, its schema is unknown, or it describes a
240
295
  * different membership from the one it was served under.
241
296
  *
242
- * A THROWN error rather than a filtered-out entry, because every one of those
243
- * states on an authorization artifact means the response is not what it
244
- * claims to be. Silently dropping the bad entry and returning the rest would
245
- * hand a caller a shorter roster that looks complete. `memberPubkey` names
297
+ * THROWN by {@link verifyGrant}, where one grant IS the whole question and a
298
+ * failure must stop the caller. REPORTED (and the entry skipped) by
299
+ * {@link verifySignedRoster}, where the same failure on one entry used to
300
+ * fail the whole roster for every other member — see that function's doc
301
+ * comment for the outage that ruling turned out to be. `memberPubkey` names
246
302
  * the entry so an operator can find it.
247
303
  */
248
304
  export class GrantVerificationError extends Error {
@@ -260,8 +316,19 @@ export class GrantVerificationError extends Error {
260
316
  }
261
317
  }
262
318
  /**
263
- * The exact bytes a grant signature covers, mirroring
264
- * `authz.CanonicalGrantBytes`.
319
+ * The exact bytes a CEILING-LESS grant signature covers — v1, byte for byte
320
+ * as `authz.CanonicalGrantBytes` has always emitted them. Delegates to
321
+ * {@link canonicalGrantBytesWithCeiling}; see that function for the full
322
+ * contract, and this file's header for why the version is a function of the
323
+ * ceiling rather than an unconditional bump.
324
+ */
325
+ export function canonicalGrantBytes(vaultId, memberPubkey, role, scopes, issuedAt, expiresAt) {
326
+ return canonicalGrantBytesWithCeiling(vaultId, memberPubkey, role, scopes, issuedAt, expiresAt, NO_PRIVACY_CEILING);
327
+ }
328
+ /**
329
+ * The encoder, mirroring `authz.CanonicalGrantBytesWithCeiling`. Emits
330
+ * {@link GRANT_SCHEMA} when the grant sets no privacy ceiling and
331
+ * {@link GRANT_SCHEMA_V2} when it sets one.
265
332
  *
266
333
  * Every bound value is inside the output: a document proves ONE member's
267
334
  * standing on ONE vault and nothing else. `scopes` is emitted as an ARRAY
@@ -276,12 +343,16 @@ export class GrantVerificationError extends Error {
276
343
  * document with no mint time that verifies exactly as well as one with a mint
277
344
  * time.
278
345
  *
279
- * `issuedAt` is LAST BUT ONE and `expiresAt` is LAST, mirroring Go's field and
280
- * parameter order. In Go the map between `issuedAt` and the other strings is
281
- * what makes a transposition a compile error instead of a valid signature over
282
- * the wrong bytes; the one pair the map cannot sit between is `issuedAt` and
283
- * `expiresAt`, which Go separates with a defined type and this file mirrors
284
- * with {@link GrantExpiry}'s brand.
346
+ * `privacyCeiling` is emitted LAST, after `expiresAt`, and ONLY when set —
347
+ * `omitempty` in Go, an append here — so a ceiling-less grant is
348
+ * byte-identical to a v1 document and every signature already stored goes on
349
+ * matching what this encoder rebuilds.
350
+ *
351
+ * The ceiling is REFUSED, never coerced: an unrecognised value throws, because
352
+ * a document that verifies perfectly and confers a ceiling nobody named is,
353
+ * on the disclosure axis, the one output this function must never hand back.
354
+ * {@link NO_PRIVACY_CEILING} is the single exception and is not a value: it
355
+ * selects v1.
285
356
  *
286
357
  * `issuedAt` has NO DEFAULT on purpose: a `new Date().toISOString()` fallback
287
358
  * would be a hidden clock inside the encoder, and a caller who forgot to pass
@@ -293,9 +364,9 @@ export class GrantVerificationError extends Error {
293
364
  *
294
365
  * `expiresAt` is the ONE parameter with no emptiness check, because `""` is
295
366
  * {@link NO_GRANT_EXPIRY} — a legal, common, deliberate value rather than a
296
- * missing one.
367
+ * missing one. `ceiling` shares the exemption for the same reason.
297
368
  */
298
- export function canonicalGrantBytes(vaultId, memberPubkey, role, scopes, issuedAt, expiresAt) {
369
+ export function canonicalGrantBytesWithCeiling(vaultId, memberPubkey, role, scopes, issuedAt, expiresAt, privacyCeiling) {
299
370
  if (vaultId === "")
300
371
  throw new Error("canonical grant: vaultId is required");
301
372
  if (memberPubkey === "")
@@ -304,26 +375,44 @@ export function canonicalGrantBytes(vaultId, memberPubkey, role, scopes, issuedA
304
375
  throw new Error("canonical grant: role is required");
305
376
  if (issuedAt === "")
306
377
  throw new Error("canonical grant: issuedAt is required");
378
+ // The version gate, and the writer-side refusal, in one place: anything
379
+ // that is neither "no ceiling" nor a recognised class stops here.
380
+ let schema = GRANT_SCHEMA;
381
+ if (privacyCeiling !== NO_PRIVACY_CEILING) {
382
+ if (!isValidPrivacyCeiling(privacyCeiling)) {
383
+ throw new Error(`canonical grant: privacyCeiling ${JSON.stringify(privacyCeiling)} must be ${privacyCeilingsList()}`);
384
+ }
385
+ schema = GRANT_SCHEMA_V2;
386
+ }
307
387
  const names = Object.keys(scopes).sort(compareCodePoints);
308
388
  const parts = names.map((name) => `{"name":${goString(name)},"level":${goString(scopes[name])}}`);
309
389
  // Hand-assembled rather than `JSON.stringify`d because the field ORDER is
310
390
  // the wire contract (Go emits struct fields in declaration order) and
311
391
  // because `goString` has to do the HTML escaping `JSON.stringify` will not.
312
- const doc = `{"schema":${goString(GRANT_SCHEMA)},` +
392
+ const doc = `{"schema":${goString(schema)},` +
313
393
  `"vaultId":${goString(vaultId)},` +
314
394
  `"memberPubkey":${goString(memberPubkey)},` +
315
395
  `"role":${goString(role)},` +
316
396
  `"scopes":[${parts.join(",")}],` +
317
397
  `"issuedAt":${goString(issuedAt)},` +
318
- `"expiresAt":${goString(expiresAt)}}`;
398
+ `"expiresAt":${goString(expiresAt)}` +
399
+ // omitempty: the ceiling key is present in a v2 document ONLY. Appending
400
+ // it unconditionally would give v1 a second spelling and break every
401
+ // stored signature's rebuild.
402
+ (privacyCeiling === NO_PRIVACY_CEILING ? "" : `,"privacyCeiling":${goString(privacyCeiling)}`) +
403
+ "}";
319
404
  return enc.encode(doc);
320
405
  }
321
406
  /**
322
407
  * Reads a canonical grant document back into its parts, mirroring
323
408
  * `authz.DecodeGrantDoc`. Never re-encodes; the bytes stay the authority.
324
409
  *
325
- * Throws on an unknown schema (see `GRANT_SCHEMA`) and on the same three
326
- * required fields the encoder refuses to omit.
410
+ * Accepts BOTH current schemas — {@link GRANT_SCHEMA} and
411
+ * {@link GRANT_SCHEMA_V2} — with the field that distinguishes them checked in
412
+ * both directions (a v1 document carrying a `privacyCeiling` is a forgery
413
+ * shape; a v2 document without a recognised one has given "no ceiling" a
414
+ * second spelling). Throws on any other schema and on the same three required
415
+ * fields the encoder refuses to omit.
327
416
  */
328
417
  export function decodeGrantDoc(doc) {
329
418
  if (doc.length === 0)
@@ -340,8 +429,39 @@ export function decodeGrantDoc(doc) {
340
429
  }
341
430
  const obj = raw;
342
431
  const schema = stringField(obj, "schema");
343
- if (schema !== GRANT_SCHEMA) {
344
- throw new Error(`decode grant: schema ${JSON.stringify(schema)} is not ${JSON.stringify(GRANT_SCHEMA)}`);
432
+ // THE VERSION GATE, AND IT IS TWO-WAY — mirroring `DecodeGrantDoc`'s switch.
433
+ //
434
+ // It used to be one equality against one constant. Two schema strings are
435
+ // current, and the field that distinguishes them must be checked in BOTH
436
+ // directions, because a JSON reader ignores unknown keys by default:
437
+ //
438
+ // - a v1 document carrying a privacyCeiling key would otherwise decode
439
+ // as a clean v1 grant with the field silently dropped. That is a
440
+ // forgery shape — the owner attested v1 semantics and somebody
441
+ // appended a field — and dropping it quietly is how a reader comes to
442
+ // disagree with the bytes it verified.
443
+ // - a v2 document with no usable ceiling would otherwise decode to
444
+ // NO_PRIVACY_CEILING, giving "no ceiling" a second spelling under a
445
+ // schema string that promises one.
446
+ //
447
+ // Refusing both is what keeps the schema string an honest description of
448
+ // the bytes rather than a label. Note the emptiness (not presence) check
449
+ // on v1: Go unmarshals `"privacyCeiling":""` into the empty string and
450
+ // treats it as absent, so a v1 document with an EMPTY ceiling key decodes
451
+ // as v1 here too — matching the bytes Go accepts, not a stricter rule.
452
+ const rawCeiling = stringField(obj, "privacyCeiling", true);
453
+ if (schema === GRANT_SCHEMA) {
454
+ if (rawCeiling !== "") {
455
+ throw new Error(`decode grant: schema ${JSON.stringify(schema)} carries a privacyCeiling; that is ${JSON.stringify(GRANT_SCHEMA_V2)}`);
456
+ }
457
+ }
458
+ else if (schema === GRANT_SCHEMA_V2) {
459
+ if (!isValidPrivacyCeiling(rawCeiling)) {
460
+ throw new Error(`decode grant: schema ${JSON.stringify(schema)} requires a privacyCeiling of ${privacyCeilingsList()}, got ${JSON.stringify(rawCeiling)}`);
461
+ }
462
+ }
463
+ else {
464
+ throw new Error(`decode grant: schema ${JSON.stringify(schema)} is not ${JSON.stringify(GRANT_SCHEMA)} or ${JSON.stringify(GRANT_SCHEMA_V2)}`);
345
465
  }
346
466
  const vaultId = stringField(obj, "vaultId");
347
467
  const memberPubkey = stringField(obj, "memberPubkey");
@@ -382,7 +502,10 @@ export function decodeGrantDoc(doc) {
382
502
  // what Go's `raw.ExpiresAt == nil` refuses; an `=== ""` guard here would make
383
503
  // "this membership never expires" undecodable.
384
504
  const expiresAt = stringField(obj, "expiresAt");
385
- return { schema, vaultId, memberPubkey, role, scopes, issuedAt, expiresAt };
505
+ // v1 decodes to NO_PRIVACY_CEILING — the version gate above has already
506
+ // proved the key was absent-or-empty for v1 and valid for v2.
507
+ const ceiling = (schema === GRANT_SCHEMA_V2 ? rawCeiling : "");
508
+ return { schema, vaultId, memberPubkey, role, scopes, issuedAt, expiresAt, privacyCeiling: ceiling };
386
509
  }
387
510
  /**
388
511
  * Is `sigHex` `orgWalletPubkeyHex`'s ed25519 signature over `doc`?
@@ -430,16 +553,35 @@ export async function verifyGrantSig(orgWalletPubkeyHex, doc, sigHex) {
430
553
  * of the same document and are not covered by anything you checked.
431
554
  *
432
555
  * Three bindings are checked per entry, and the last two matter as much as
433
- * the signature: the document must carry the schema this SDK understands, it
556
+ * the signature: the document must carry a schema this SDK understands, it
434
557
  * must name the vault the roster is FOR, and it must name the member it was
435
558
  * served UNDER. A document that verifies but describes a different membership
436
559
  * is a valid signature over somebody else's grant — the substitution the
437
560
  * canonical bytes bind all four values to prevent.
438
561
  *
439
- * Fail-closed: the FIRST unverifiable entry throws
440
- * `GrantVerificationError` and no partial list is returned. An authorization
441
- * artifact with one entry you cannot prove is not a shorter roster, it is a
442
- * roster you cannot trust.
562
+ * # One unverifiable entry degrades the ENTRY, not the roster
563
+ *
564
+ * An entry that fails any of its checks is skipped and reported to
565
+ * {@link RosterVerifyOptions.onUnverifiableGrant} (when given) rather than
566
+ * thrown, and the remaining entries are returned. This is deliberate, and it
567
+ * is the second half of the condition ddc-node's `allowV2GrantMint` hold
568
+ * names for lifting: the loop this replaces threw on the FIRST bad entry, so
569
+ * one grant a consumer could not read — a ceiling-carrying v2 under 4.0.0, a
570
+ * future v3, a corrupt row — made the WHOLE roster fail verification for
571
+ * every member of that vault. An outage with a bystander list that long is
572
+ * not fail-closed, it is fail-everyone-else's.
573
+ *
574
+ * The envelope is still fail-closed: a roster naming the wrong vault, a
575
+ * signing key that does not derive the vault, or a malformed roster shape
576
+ * throws `GrantVerificationError` and NOTHING is returned — until the anchor
577
+ * holds, every entry is attacker-supplied, and there is no per-entry question
578
+ * to degrade to.
579
+ *
580
+ * SILENT SHORTENING IS THE RESIDUAL RISK, and the callback is the mitigation:
581
+ * a caller that ignores `onUnverifiableGrant` sees a shorter roster that
582
+ * looks complete. Treat a reported member as UNPROVEN — absence from the
583
+ * returned list means "no verified standing", which for authorization means
584
+ * deny, not "not in the vault".
443
585
  *
444
586
  * # `expectedVaultId` is the trust anchor, and it is why this is a
445
587
  * # verification rather than a consistency check
@@ -478,7 +620,7 @@ export async function verifyGrantSig(orgWalletPubkeyHex, doc, sigHex) {
478
620
  * itself learned from an untrusted party, the result is trust in THAT party's
479
621
  * choice of vault. Anchor it to something you already knew.
480
622
  */
481
- export async function verifySignedRoster(roster, expectedVaultId) {
623
+ export async function verifySignedRoster(roster, expectedVaultId, options = {}) {
482
624
  if (typeof expectedVaultId !== "string" || expectedVaultId === "") {
483
625
  throw new GrantVerificationError("expectedVaultId is required: verifying a roster against the vault id it " +
484
626
  "carries only proves the response agrees with itself");
@@ -508,10 +650,26 @@ export async function verifySignedRoster(roster, expectedVaultId) {
508
650
  }
509
651
  const out = [];
510
652
  for (const grant of roster.grants) {
653
+ // A non-object entry is an ENTRY-level malformation — it belongs to no
654
+ // member in particular, but it is one row's bytes that are wrong, not the
655
+ // envelope's, so it degrades like any other unverifiable entry rather
656
+ // than poisoning the roster.
511
657
  if (typeof grant !== "object" || grant === null) {
512
- throw new GrantVerificationError(`signed roster holds a grant that is not an object`);
658
+ const err = new GrantVerificationError(`signed roster holds a grant that is not an object`);
659
+ options.onUnverifiableGrant?.(err);
660
+ continue;
661
+ }
662
+ try {
663
+ out.push(await verifyGrant(expectedVaultId, roster.orgWalletPubkey, grant));
664
+ }
665
+ catch (err) {
666
+ if (!(err instanceof GrantVerificationError))
667
+ throw err;
668
+ // DEGRADE THE ENTRY, NOT THE ROSTER — see the doc comment above for why
669
+ // this replaced the first-bad-entry throw, and what a caller owes the
670
+ // members reported here.
671
+ options.onUnverifiableGrant?.(err);
513
672
  }
514
- out.push(await verifyGrant(expectedVaultId, roster.orgWalletPubkey, grant));
515
673
  }
516
674
  return out;
517
675
  }
@@ -559,9 +717,16 @@ export async function verifyGrant(vaultId, orgWalletPubkey, grant) {
559
717
  }
560
718
  return decoded;
561
719
  }
562
- /** A required string field, or a typed failure naming it. */
563
- function stringField(obj, key) {
720
+ /**
721
+ * A required string field, or a typed failure naming it. With `absentOk`, an
722
+ * ABSENT key reads as `""` — for `privacyCeiling`, whose absence is v1's
723
+ * whole spelling and whose empty-string presence Go's decoder treats the
724
+ * same way. A present-but-non-string value still fails either way.
725
+ */
726
+ function stringField(obj, key, absentOk = false) {
564
727
  const v = obj[key];
728
+ if (v === undefined && absentOk)
729
+ return "";
565
730
  if (typeof v !== "string") {
566
731
  throw new Error(`decode grant: ${key} must be a string, got ${v === undefined ? "nothing" : typeof v}`);
567
732
  }
@@ -1 +1 @@
1
- {"version":3,"file":"grant-doc.js","sourceRoot":"","sources":["../../src/core/grant-doc.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"grant-doc.js","sourceRoot":"","sources":["../../src/core/grant-doc.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -20,8 +20,8 @@ export type { HealthResponse } from "./internal/health.js";
20
20
  export { GarClient, signAndSubmitAgreement, getAsPubkey, } from "./agreements/index.js";
21
21
  export type { SignedAgreementEnvelope, SignAndSubmitAgreementOptions, SignAndSubmitAgreementResult, } from "./agreements/index.js";
22
22
  export { VaultRequestError, VaultNotImplementedError, VaultSignerRequiredError, } from "./core/errors.js";
23
- export { GRANT_ISSUED_AT_HEADER, GRANT_SCHEMA, GRANT_SIGNATURE_HEADER, GrantVerificationError, NO_GRANT_EXPIRY, canonicalGrantBytes, canonicalPubkeyHex, decodeGrantDoc, grantExpiry, vaultIdFor, verifyGrant, verifyGrantSig, verifySignedRoster, } from "./core/grant-doc.js";
24
- export type { Grant, GrantExpiry } from "./core/grant-doc.js";
23
+ export { GRANT_ISSUED_AT_HEADER, GRANT_SCHEMA, GRANT_SCHEMA_V2, GRANT_SIGNATURE_HEADER, GrantVerificationError, NO_GRANT_EXPIRY, NO_PRIVACY_CEILING, PRIVACY_CEILINGS, canonicalGrantBytes, canonicalGrantBytesWithCeiling, canonicalPubkeyHex, decodeGrantDoc, grantExpiry, isValidPrivacyCeiling, privacyCeiling, vaultIdFor, verifyGrant, verifyGrantSig, verifySignedRoster, } from "./core/grant-doc.js";
24
+ export type { Grant, GrantExpiry, PrivacyCeiling, PrivacyCeilingName, RosterVerifyOptions } from "./core/grant-doc.js";
25
25
  export type { PutMemberOptions, PutScopesOptions } from "./internal/memberships.js";
26
26
  export type { Task, TasksPage, TaskState, AgentConnection, AgentConnectionStatus, ConnectAgentRequest, CubbyQueryResponse, CubbyExecResponse, EventInput, EventRole, EventsPage, IngestOrigin, Job, JobsPage, JobState, Member, MemberRole, MembershipState, MembershipSummary, PublishResult, Scope, ScopeGrants, ScopeLevel, SignedGrant, SignedRoster, StreamSummary, StreamsListResponse, VaultCredentialStatus, VaultEvent, VaultRecord, VaultSigType, } from "./core/types.js";
27
27
  export { VaultInfo } from "./internal/vault-info.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -19,7 +19,7 @@ export { VaultRequestError, VaultNotImplementedError, VaultSignerRequiredError,
19
19
  // `/internal`, because a consumer that cannot reach it easily will read
20
20
  // `SignedGrant.role`/`.scopes` instead and end up with a signature it checked
21
21
  // and did not act on.
22
- export { GRANT_ISSUED_AT_HEADER, GRANT_SCHEMA, GRANT_SIGNATURE_HEADER, GrantVerificationError, NO_GRANT_EXPIRY, canonicalGrantBytes, canonicalPubkeyHex, decodeGrantDoc, grantExpiry, vaultIdFor, verifyGrant, verifyGrantSig, verifySignedRoster, } from "./core/grant-doc.js";
22
+ export { GRANT_ISSUED_AT_HEADER, GRANT_SCHEMA, GRANT_SCHEMA_V2, GRANT_SIGNATURE_HEADER, GrantVerificationError, NO_GRANT_EXPIRY, NO_PRIVACY_CEILING, PRIVACY_CEILINGS, canonicalGrantBytes, canonicalGrantBytesWithCeiling, canonicalPubkeyHex, decodeGrantDoc, grantExpiry, isValidPrivacyCeiling, privacyCeiling, vaultIdFor, verifyGrant, verifyGrantSig, verifySignedRoster, } from "./core/grant-doc.js";
23
23
  // Delegate-grant surface — `vault.delegate.{pubkey,grant,revoke}` (see
24
24
  // `client.ts`) covers the common connect-time flow, but the frontend also
25
25
  // needs direct access to `VaultInfo`'s `DelegateInfo` type (Task 3 left
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAU9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAC9E,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,UAAU,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AA0C7B,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wEAAwE;AACxE,kCAAkC;AAElC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAOvC,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAOlC,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAQhD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAS9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAU9D,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,WAAW,GACZ,MAAM,uBAAuB,CAAC;AAO/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAC9E,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,mBAAmB,EACnB,8BAA8B,EAC9B,kBAAkB,EAClB,cAAc,EACd,WAAW,EACX,qBAAqB,EACrB,cAAc,EACd,UAAU,EACV,WAAW,EACX,cAAc,EACd,kBAAkB,GACnB,MAAM,qBAAqB,CAAC;AA0C7B,uEAAuE;AACvE,0EAA0E;AAC1E,wEAAwE;AACxE,8EAA8E;AAC9E,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,wEAAwE;AACxE,wBAAwB;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,oBAAoB,GACrB,MAAM,iCAAiC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cef-ai/vault-sdk",
3
- "version": "4.0.0",
3
+ "version": "4.1.0",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -25,9 +25,9 @@
25
25
  "@polkadot/keyring": "^14.0.3",
26
26
  "@polkadot/util": "^14.0.3",
27
27
  "@polkadot/util-crypto": "^14.0.3",
28
+ "@cef-ai/account": "1.3.1",
28
29
  "@cef-ai/signer": "1.0.0",
29
- "@cef-ai/transport": "1.1.0",
30
- "@cef-ai/account": "1.3.1"
30
+ "@cef-ai/transport": "1.1.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^20.11.0",