@cef-ai/vault-sdk 3.0.0 → 3.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.
@@ -14,6 +14,18 @@ export interface AuthRequest {
14
14
  query: string;
15
15
  /** Mutation body before authentication. AuthProvider may stamp + serialise. */
16
16
  body?: Record<string, unknown>;
17
+ /**
18
+ * Hex-encoded SHA-256 of a raw (non-JSON) request body about to be
19
+ * streamed — set only for a streamed object upload (ADR-002). Computed
20
+ * once by `VaultHttpClient.send` (not per-provider) since every provider
21
+ * needs the identical value. `WalletAuthProvider` signs a preamble
22
+ * committing to this hash instead of the body itself (the preamble's own
23
+ * wire field is `contentSha256` — see `buildPreamble` — this is just the
24
+ * value flowing in), so a large upload never has to be buffered to
25
+ * authenticate it; providers that don't sign body content (`NoAuth`,
26
+ * `DelegationAuthProvider`) simply ignore it.
27
+ */
28
+ hash?: string;
17
29
  }
18
30
  export interface AuthOutcome {
19
31
  /** Headers to spread onto the outgoing fetch. */
@@ -1 +1 @@
1
- {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/auth/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtD"}
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../src/auth/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,+EAA+E;IAC/E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,iDAAiD;IACjD,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC;;;;OAIG;IACH,IAAI,CAAC,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/auth/wallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5E,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,iBAAsB;IAGzC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CA4B3D"}
1
+ {"version":3,"file":"wallet.d.ts","sourceRoot":"","sources":["../../src/auth/wallet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5E,8CAA8C;AAC9C,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,qCAAqC;IACrC,KAAK,CAAC,EAAE,MAAM,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IAEnD,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBADJ,MAAM,EAAE,MAAM,EACd,IAAI,GAAE,iBAAsB;IAGzC,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;CA2C3D"}
@@ -22,6 +22,21 @@ export class WalletAuthProvider {
22
22
  "X-Signature-Type": sigType,
23
23
  };
24
24
  const upper = req.method.toUpperCase();
25
+ if (req.hash !== undefined) {
26
+ // A streamed object upload (ADR-002): there is no JSON body to sign —
27
+ // signing the whole body would mean buffering a potentially large
28
+ // upload just to authenticate it. Sign a preamble that commits to the
29
+ // body's hash instead (AWS SigV4's X-Amz-Content-Sha256 precedent);
30
+ // vault-api verifies this preamble without ever reading the body, then
31
+ // checks the claimed hash against what actually streamed through once
32
+ // the write completes. No Content-Type header here — the caller sets
33
+ // that directly from the object's real content type.
34
+ const { bytes } = buildPreamble(upper, req.path, req.query, this.opts.clock, req.hash);
35
+ const sig = await this.signer.sign(bytes, "data");
36
+ headers["X-Signed-Preamble"] = encodeBase64Url(bytes);
37
+ headers["X-Signature"] = strip0xHex(bytesToHex(sig));
38
+ return { headers };
39
+ }
25
40
  if (upper === "GET" || upper === "HEAD") {
26
41
  const { bytes } = buildPreamble(upper, req.path, req.query, this.opts.clock);
27
42
  const sig = await this.signer.sign(bytes, "data");
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/auth/wallet.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,aAAa,EACb,eAAe,EACf,WAAW,EACX,SAAS,EACT,UAAU,EACV,UAAU,GACX,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAUlD;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,MAAc,EACd,OAA0B,EAAE;QAD5B,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAwB;IAC5C,CAAC;IAEJ,KAAK,CAAC,YAAY,CAAC,GAAgB;QACjC,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,IAAI,KAAK,UAAU;YACzC,MAAM,IAAI,wBAAwB,EAAE,CAAC;QAEvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpE,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC9D,kBAAkB,EAAE,OAAO;SAC5B,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACvC,IAAI,KAAK,KAAK,KAAK,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACxC,MAAM,EAAE,KAAK,EAAE,GAAG,aAAa,CAC7B,KAAK,EACL,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,KAAK,EACT,IAAI,CAAC,IAAI,CAAC,KAAK,CAChB,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAClD,OAAO,CAAC,mBAAmB,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;YACtD,OAAO,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACrD,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAClD,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;QAC7C,OAAO,CAAC,aAAa,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/auth/wallet.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export { bytesToHex, encodeBase64Url, ensure0xHex, strip0xHex } from "@cef-ai/transport";
1
+ export { bytesToHex, encodeBase64Url, decodeBase64Url, ensure0xHex, strip0xHex } from "@cef-ai/transport";
2
2
  export declare const nowRFC3339: () => string;
3
3
  export declare function stripHexPrefix(s: string): string;
4
4
  export interface StampedBody {
@@ -10,5 +10,13 @@ export interface Preamble {
10
10
  preamble: string;
11
11
  bytes: Uint8Array;
12
12
  }
13
- export declare function buildPreamble(method: string, path: string, query: string, clock?: () => string): Preamble;
13
+ export declare function buildPreamble(method: string, path: string, query: string, clock?: () => string, contentSha256?: string): Preamble;
14
+ /**
15
+ * SHA-256 of `data`, hex-encoded — the content-hash commitment a streamed
16
+ * object upload (ADR-002) signs instead of the body itself. Uses the
17
+ * standard Web Crypto API (`crypto.subtle`), available as a global in both
18
+ * browsers and Node >=20 (this package's minimum), so no extra hashing
19
+ * dependency is needed.
20
+ */
21
+ export declare function sha256Hex(data: Uint8Array): Promise<string>;
14
22
  //# sourceMappingURL=canonical.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIzF,eAAO,MAAM,UAAU,QAAO,MAAkC,CAAC;AAEjE,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACjF,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,KAAK,GAAE,MAAM,MAAmB,GAC/B,WAAW,CASb;AAED,MAAM,WAAW,QAAQ;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACjE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,MAAmB,GAC/B,QAAQ,CAQV"}
1
+ {"version":3,"file":"canonical.d.ts","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAK1G,eAAO,MAAM,UAAU,QAAO,MAAkC,CAAC;AAEjE,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,MAAM,WAAW,WAAW;IAAG,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACjF,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EACzC,KAAK,GAAE,MAAM,MAAmB,GAC/B,WAAW,CASb;AAED,MAAM,WAAW,QAAQ;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,UAAU,CAAA;CAAE;AACjE,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAM,MAAmB,EAChC,aAAa,CAAC,EAAE,MAAM,GACrB,QAAQ,CAcV;AAED;;;;;;GAMG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAGjE"}
@@ -3,7 +3,8 @@
3
3
  // them rather than maintain a second copy. The signing-preamble
4
4
  // helpers below (stampBody/buildPreamble/nowRFC3339) are vault-specific and
5
5
  // stay here. `stripHexPrefix` is kept as a vault-local alias of `strip0xHex`.
6
- export { bytesToHex, encodeBase64Url, ensure0xHex, strip0xHex } from "@cef-ai/transport";
6
+ export { bytesToHex, encodeBase64Url, decodeBase64Url, ensure0xHex, strip0xHex } from "@cef-ai/transport";
7
+ import { bytesToHex } from "@cef-ai/transport";
7
8
  const enc = new TextEncoder();
8
9
  export const nowRFC3339 = () => new Date().toISOString();
9
10
  export function stripHexPrefix(s) {
@@ -20,13 +21,31 @@ export function stampBody(body, clock = nowRFC3339) {
20
21
  // change the signed bytes and break verification.
21
22
  return { body: stamped, bytes: enc.encode(JSON.stringify(stamped)) };
22
23
  }
23
- export function buildPreamble(method, path, query, clock = nowRFC3339) {
24
- const preamble = JSON.stringify({
24
+ export function buildPreamble(method, path, query, clock = nowRFC3339, contentSha256) {
25
+ const fields = {
25
26
  method: method.toUpperCase(),
26
27
  path,
27
28
  query,
28
29
  timestamp: clock(),
29
- });
30
+ };
31
+ // Only present for a streamed object upload (ADR-002) — the field vault-
32
+ // api's VerifyStreamedUpload requires so it can authenticate the request
33
+ // and the claimed hash without ever reading the (possibly large) body.
34
+ // Omitted entirely for GET/HEAD so their signed bytes are unchanged.
35
+ if (contentSha256 !== undefined)
36
+ fields.contentSha256 = contentSha256;
37
+ const preamble = JSON.stringify(fields);
30
38
  return { preamble, bytes: enc.encode(preamble) };
31
39
  }
40
+ /**
41
+ * SHA-256 of `data`, hex-encoded — the content-hash commitment a streamed
42
+ * object upload (ADR-002) signs instead of the body itself. Uses the
43
+ * standard Web Crypto API (`crypto.subtle`), available as a global in both
44
+ * browsers and Node >=20 (this package's minimum), so no extra hashing
45
+ * dependency is needed.
46
+ */
47
+ export async function sha256Hex(data) {
48
+ const digest = await crypto.subtle.digest("SHA-256", data);
49
+ return bytesToHex(new Uint8Array(digest));
50
+ }
32
51
  //# sourceMappingURL=canonical.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,8EAA8E;AAC9E,gEAAgE;AAChE,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEzF,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAGD,MAAM,UAAU,SAAS,CACvB,IAAyC,EACzC,QAAsB,UAAU;IAEhC,MAAM,OAAO,GAA4B,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7D,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,kDAAkD;IAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAGD,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,IAAY,EACZ,KAAa,EACb,QAAsB,UAAU;IAEhC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;QAC9B,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5B,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,KAAK,EAAE;KACnB,CAAC,CAAC;IACH,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"canonical.js","sourceRoot":"","sources":["../../src/core/canonical.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,8EAA8E;AAC9E,gEAAgE;AAChE,4EAA4E;AAC5E,8EAA8E;AAC9E,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1G,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;AAE9B,MAAM,CAAC,MAAM,UAAU,GAAG,GAAW,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAEjE,MAAM,UAAU,cAAc,CAAC,CAAS;IACtC,OAAO,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAGD,MAAM,UAAU,SAAS,CACvB,IAAyC,EACzC,QAAsB,UAAU;IAEhC,MAAM,OAAO,GAA4B,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;IAC7D,IAAI,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ;QAAE,OAAO,CAAC,SAAS,GAAG,KAAK,EAAE,CAAC;IACvE,2EAA2E;IAC3E,0EAA0E;IAC1E,4EAA4E;IAC5E,4EAA4E;IAC5E,kDAAkD;IAClD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;AACvE,CAAC;AAGD,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,IAAY,EACZ,KAAa,EACb,QAAsB,UAAU,EAChC,aAAsB;IAEtB,MAAM,MAAM,GAA2B;QACrC,MAAM,EAAE,MAAM,CAAC,WAAW,EAAE;QAC5B,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,KAAK,EAAE;KACnB,CAAC;IACF,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,qEAAqE;IACrE,IAAI,aAAa,KAAK,SAAS;QAAE,MAAM,CAAC,aAAa,GAAG,aAAa,CAAC;IACtE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACxC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAgB;IAC9C,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5C,CAAC"}
@@ -7,6 +7,9 @@ export declare const endpoints: {
7
7
  readonly agents: (v: string) => string;
8
8
  readonly agent: (v: string, a: string) => string;
9
9
  readonly scopeEvents: (v: string, s: string) => string;
10
+ readonly scopeObjects: (v: string, s: string) => string;
11
+ readonly scopeObject: (v: string, s: string, path: string) => string;
12
+ readonly scopeObjectsPresignedUrl: (v: string, s: string) => string;
10
13
  readonly scopeStreams: (v: string, s: string) => string;
11
14
  readonly stream: (v: string, s: string, ctx: string) => string;
12
15
  readonly streamEvents: (v: string, s: string, ctx: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/core/endpoints.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,SAAS;;wBAET,MAAM;mCACK,MAAM;yBAChB,MAAM;wBACP,MAAM,KAAK,MAAM;yBAChB,MAAM;wBACP,MAAM,KAAK,MAAM;8BACX,MAAM,KAAK,MAAM;+BAChB,MAAM,KAAK,MAAM;yBACvB,MAAM,KAAK,MAAM,OAAO,MAAM;+BAExB,MAAM,KAAK,MAAM,OAAO,MAAM;uBAEtC,MAAM;sBACP,MAAM,KAAK,MAAM;4BACX,MAAM,KAAK,MAAM;2BAClB,MAAM,KAAK,MAAM;0BAClB,MAAM,KAAK,MAAM,KAAK,MAAM;8BAExB,MAAM,KAAK,MAAM,KAAK,MAAM;6BAE7B,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,MAAM;4BAE5C,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,MAAM;;mCAGpC,MAAM;0CACC,MAAM,KAAK,MAAM;;;;;CAMtC,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
1
+ {"version":3,"file":"endpoints.d.ts","sourceRoot":"","sources":["../../src/core/endpoints.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,SAAS;;wBAET,MAAM;mCACK,MAAM;yBAChB,MAAM;wBACP,MAAM,KAAK,MAAM;yBAChB,MAAM;wBACP,MAAM,KAAK,MAAM;8BACX,MAAM,KAAK,MAAM;+BAChB,MAAM,KAAK,MAAM;8BAClB,MAAM,KAAK,MAAM,QAAQ,MAAM;2CAQlB,MAAM,KAAK,MAAM;+BAE7B,MAAM,KAAK,MAAM;yBACvB,MAAM,KAAK,MAAM,OAAO,MAAM;+BAExB,MAAM,KAAK,MAAM,OAAO,MAAM;uBAEtC,MAAM;sBACP,MAAM,KAAK,MAAM;4BACX,MAAM,KAAK,MAAM;2BAClB,MAAM,KAAK,MAAM;0BAClB,MAAM,KAAK,MAAM,KAAK,MAAM;8BAExB,MAAM,KAAK,MAAM,KAAK,MAAM;6BAE7B,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,MAAM;4BAE5C,MAAM,KAAK,MAAM,KAAK,MAAM,SAAS,MAAM;;mCAGpC,MAAM;0CACC,MAAM,KAAK,MAAM;;;;;CAMtC,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC"}
@@ -1,5 +1,12 @@
1
1
  const API_BASE = "/api/v1";
2
2
  const seg = (s) => encodeURIComponent(s);
3
+ // segPath encodes an object path's individual "/"-delimited segments (each
4
+ // via `seg`, matching a single URL path segment's escaping) while leaving
5
+ // the "/" separators themselves literal — unlike `seg`, which would encode
6
+ // them to %2F and break the server's wildcard route match. ADR-002's vault
7
+ // path is deliberately hierarchical, so this is the one endpoint builder in
8
+ // this file that isn't a single opaque segment.
9
+ const segPath = (p) => p.split("/").map(seg).join("/");
3
10
  export const endpoints = {
4
11
  vaults: () => `${API_BASE}/vaults`,
5
12
  vault: (v) => `${API_BASE}/vaults/${seg(v)}`,
@@ -9,6 +16,15 @@ export const endpoints = {
9
16
  agents: (v) => `${API_BASE}/vaults/${seg(v)}/agents`,
10
17
  agent: (v, a) => `${API_BASE}/vaults/${seg(v)}/agents/${seg(a)}`,
11
18
  scopeEvents: (v, s) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/events`,
19
+ scopeObjects: (v, s) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/objects`,
20
+ scopeObject: (v, s, path) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/objects/${segPath(path)}`,
21
+ // A route of its own, not nested under scopeObject's path — the target
22
+ // object path travels as a query parameter (set by the caller), not a URL
23
+ // path segment, because the path itself is an arbitrary-depth wildcard on
24
+ // the server; a literal ".../{path}/presigned-url" suffix would be
25
+ // ambiguous with a real object path ending the same way (see ADR-002 and
26
+ // ddc-node's ObjectHandler.PresignedURL doc comment).
27
+ scopeObjectsPresignedUrl: (v, s) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/objects/presigned-url`,
12
28
  scopeStreams: (v, s) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/streams`,
13
29
  stream: (v, s, ctx) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/streams/${seg(ctx)}`,
14
30
  streamEvents: (v, s, ctx) => `${API_BASE}/vaults/${seg(v)}/scopes/${seg(s)}/streams/${seg(ctx)}/events`,
@@ -1 +1 @@
1
- {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/core/endpoints.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"endpoints.js","sourceRoot":"","sources":["../../src/core/endpoints.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,36 @@ export interface VaultHttpClientConfig {
10
10
  }
11
11
  export interface SendOptions {
12
12
  body?: Record<string, unknown>;
13
+ /**
14
+ * Raw (non-JSON) request body — for object upload (ADR-002), where the
15
+ * body is the object's actual bytes, never JSON/base64. Mutually
16
+ * exclusive with `body`. `send` hashes it once and passes the hash to the
17
+ * auth provider as `AuthRequest.hash` so a wallet caller signs a
18
+ * commitment to it instead of the bytes themselves (no whole-body
19
+ * buffering to authenticate a potentially large upload); it is then sent
20
+ * verbatim as the request body.
21
+ */
22
+ rawBody?: Uint8Array;
23
+ /**
24
+ * Extra headers layered on top of whatever the auth provider returns —
25
+ * e.g. object upload's Content-Type, which describes the payload itself
26
+ * and has nothing to do with authentication. Caller headers win on
27
+ * conflict, since they're always more specific than the generic auth
28
+ * layer.
29
+ */
30
+ headers?: Record<string, string>;
13
31
  query?: QueryMap;
14
32
  /** Per-call auth override. Pass `new NoAuth()` for public endpoints on an authed client. */
15
33
  auth?: AuthProvider;
34
+ /**
35
+ * `"bytes"` skips JSON decoding of the response and resolves `T` as a
36
+ * `Uint8Array` — for object downloads (ADR-002), where the body is
37
+ * arbitrary binary content, not JSON. `"headers"` is for HEAD calls: `T`
38
+ * resolves as `Record<string, string>` built from the response headers,
39
+ * and no body is read at all (a HEAD response must not carry one). Default
40
+ * `"json"`, unchanged.
41
+ */
42
+ responseType?: "json" | "bytes" | "headers";
16
43
  }
17
44
  /**
18
45
  * Vault transport: the request-signing seam (`AuthProvider`) layered on top of
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAIxD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,YAAY,CAAC;CACrB;AAKD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,qBAAqB;IAgBzC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IAwB/E,OAAO,CAAC,QAAQ;CAWjB"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"AACA,OAAO,EAML,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAKxD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,qBAAqB;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,UAAU,CAAC;IACrB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,4FAA4F;IAC5F,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;CAC7C;AAKD;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,MAAM,EAAE,qBAAqB;IAgBzC;;;OAGG;IACG,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,CAAC,CAAC;IA2B/E,OAAO,CAAC,QAAQ;CAWjB"}
package/dist/core/http.js CHANGED
@@ -2,6 +2,7 @@
2
2
  import { HttpClient, HttpError, TimeoutError, NetworkError, TransportError, } from "@cef-ai/transport";
3
3
  import { mapResponseError, VaultRequestError } from "./errors.js";
4
4
  import { NoAuth } from "../auth/no-auth.js";
5
+ import { sha256Hex } from "./canonical.js";
5
6
  const DEFAULT_TIMEOUT_MS = 30_000;
6
7
  const NO_AUTH = new NoAuth();
7
8
  /**
@@ -49,13 +50,16 @@ export class VaultHttpClient {
49
50
  path: url.pathname,
50
51
  query: url.search.replace(/^\?/, ""),
51
52
  body: opts.body,
53
+ hash: opts.rawBody !== undefined ? await sha256Hex(opts.rawBody) : undefined,
52
54
  });
53
55
  try {
54
56
  return await this.http.request(method, path, {
55
57
  query: opts.query,
56
- headers: outcome.headers,
57
- // Uint8Array (the signed bytes) is sent verbatim by HttpClient.
58
- body: outcome.body,
58
+ headers: { ...outcome.headers, ...opts.headers },
59
+ // Uint8Array (the signed bytes, or the raw upload body the auth
60
+ // provider had nothing to add to) is sent verbatim by HttpClient.
61
+ body: outcome.body ?? opts.rawBody,
62
+ responseType: opts.responseType,
59
63
  });
60
64
  }
61
65
  catch (err) {
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/core/http.ts"],"names":[],"mappings":"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"}
@@ -184,4 +184,30 @@ export interface ConnectAgentRequest {
184
184
  settings?: Record<string, unknown>;
185
185
  agreementSignature?: string;
186
186
  }
187
+ /**
188
+ * ADR-002 object storage (company-memory-bank
189
+ * 04-cef/user-vault/decisions/ADR-002-vault-object-storage.md).
190
+ */
191
+ export interface ObjectUploadResult {
192
+ vaultPath: string;
193
+ size: number;
194
+ contentType: string;
195
+ etag?: string;
196
+ }
197
+ export interface ObjectMeta {
198
+ size: number;
199
+ contentType: string;
200
+ etag?: string;
201
+ updatedAt?: string;
202
+ }
203
+ export interface ObjectPresignedUrl {
204
+ url: string;
205
+ expiresAt: string;
206
+ }
207
+ export interface ObjectListItem {
208
+ path: string;
209
+ }
210
+ export interface ObjectListResult {
211
+ items: ObjectListItem[];
212
+ }
187
213
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,49 @@
1
1
  import type { VaultHttpClient } from "../core/http.js";
2
+ import { type ListOptions, type PresignedUrlOptions, type UploadOptions } from "../internal/objects.js";
2
3
  import { type ListStreamEventsOptions, type ListStreamsOptions } from "../internal/browse.js";
3
- import type { EventInput, EventsPage, StreamSummary, StreamsListResponse } from "../core/types.js";
4
+ import type { EventInput, EventsPage, ObjectListResult, ObjectMeta, ObjectPresignedUrl, ObjectUploadResult, StreamSummary, StreamsListResponse } from "../core/types.js";
4
5
  import { type SubscribeFilter, type SubscribeHandler, type SubscribeOptions, type Subscription } from "./subscribe.js";
5
6
  export interface PublishedEvent {
6
7
  eventId: string;
7
8
  }
9
+ /** `upload()`'s optional "store then announce" convenience — two Vault API
10
+ * calls (upload, then publish) under the hood, never a hidden coupling. */
11
+ export interface UploadAndPublishOptions extends UploadOptions {
12
+ publishEvent?: {
13
+ type: string;
14
+ context: string;
15
+ payload?: Record<string, unknown>;
16
+ };
17
+ }
8
18
  export declare class ScopeHandle {
9
19
  private readonly http;
10
20
  private readonly vaultId;
11
21
  readonly name: string;
12
22
  private readonly events;
13
23
  private readonly browse;
24
+ private readonly _objects;
14
25
  constructor(http: VaultHttpClient, vaultId: string, name: string);
15
26
  publish<P>(input: EventInput<P>): Promise<PublishedEvent>;
16
27
  streams: {
17
28
  list: (o?: ListStreamsOptions) => Promise<StreamsListResponse>;
18
29
  get: (ctx: string) => Promise<StreamSummary>;
19
30
  };
31
+ /**
32
+ * ADR-002 object storage: upload / download / metadata / delete / list on
33
+ * the vault's own bucket, addressed by a client-defined hierarchical path.
34
+ * A named collection (like `streams` above), not a bare verb like
35
+ * `publish` — objects are symmetric CRUD from the start, so they follow
36
+ * the multi-operation-resource convention rather than the single-write-op
37
+ * one `publish` uses. See ADR-002 for the full naming rationale.
38
+ */
39
+ objects: {
40
+ upload: (path: string, data: Uint8Array, opts?: UploadAndPublishOptions) => Promise<ObjectUploadResult>;
41
+ get: (path: string) => Promise<Uint8Array>;
42
+ head: (path: string) => Promise<ObjectMeta>;
43
+ presignedUrl: (path: string, opts?: PresignedUrlOptions) => Promise<ObjectPresignedUrl>;
44
+ delete: (path: string) => Promise<void>;
45
+ list: (opts?: ListOptions) => Promise<ObjectListResult>;
46
+ };
20
47
  stream(context: string): {
21
48
  events: {
22
49
  list: <P = unknown>(o?: ListStreamEventsOptions) => Promise<EventsPage<P>>;
@@ -1 +1 @@
1
- {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAU,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACnG,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAAG,OAAO,EAAE,MAAM,CAAA;CAAE;AAEnD,qBAAa,WAAW;IAKpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,IAAI,EAAE,MAAM;IAN9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAGb,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM;IAMxB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAc/D,OAAO;mBACK,kBAAkB,KAAQ,OAAO,CAAC,mBAAmB,CAAC;mBAErD,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;MAE1C;IAEF,MAAM,CAAC,OAAO,EAAE,MAAM;;mBAGT,CAAC,gBAAe,uBAAuB,KAAQ,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;;IAMlF,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,GAAE,gBAAqB,GAC1B,YAAY;IAIf;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EACtB,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,GAAE,yBAA8B,GACnC,YAAY;CAWhB;AAED,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
1
+ {"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,EAAW,KAAK,WAAW,EAAE,KAAK,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACjH,OAAO,EAAU,KAAK,uBAAuB,EAAE,KAAK,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACtG,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,mBAAmB,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EAClB,MAAM,gBAAgB,CAAC;AAExB,MAAM,WAAW,cAAc;IAAG,OAAO,EAAE,MAAM,CAAA;CAAE;AAEnD;2EAC2E;AAC3E,MAAM,WAAW,uBAAwB,SAAQ,aAAa;IAC5D,YAAY,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACnC,CAAC;CACH;AAED,qBAAa,WAAW;IAMpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,IAAI,EAAE,MAAM;IAP9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;gBAGhB,IAAI,EAAE,eAAe,EACrB,OAAO,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM;IAOxB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,cAAc,CAAC;IAc/D,OAAO;mBACK,kBAAkB,KAAQ,OAAO,CAAC,mBAAmB,CAAC;mBAErD,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;MAE1C;IAEF;;;;;;;OAOG;IACH,OAAO;uBAEG,MAAM,QACN,UAAU,SACV,uBAAuB,KAC5B,OAAO,CAAC,kBAAkB,CAAC;oBAWlB,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC;qBAE3B,MAAM,KAAG,OAAO,CAAC,UAAU,CAAC;6BAEpB,MAAM,SAAQ,mBAAmB,KAAQ,OAAO,CAAC,kBAAkB,CAAC;uBAE1E,MAAM,KAAG,OAAO,CAAC,IAAI,CAAC;sBAExB,WAAW,KAAQ,OAAO,CAAC,gBAAgB,CAAC;MAEzD;IAEF,MAAM,CAAC,OAAO,EAAE,MAAM;;mBAGT,CAAC,gBAAe,uBAAuB,KAAQ,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;;;IAMlF,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,GAAE,gBAAqB,GAC1B,YAAY;IAIf;;;;;;;;;;;OAWG;IACH,YAAY,CAAC,CAAC,GAAG,OAAO,EACtB,MAAM,EAAE,wBAAwB,EAChC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAC5B,IAAI,GAAE,yBAA8B,GACnC,YAAY;CAWhB;AAED,MAAM,WAAW,wBAAwB;IACvC,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -1,4 +1,5 @@
1
1
  import { Events } from "../internal/events.js";
2
+ import { Objects } from "../internal/objects.js";
2
3
  import { Browse } from "../internal/browse.js";
3
4
  import { subscribe, } from "./subscribe.js";
4
5
  export class ScopeHandle {
@@ -7,12 +8,14 @@ export class ScopeHandle {
7
8
  name;
8
9
  events;
9
10
  browse;
11
+ _objects;
10
12
  constructor(http, vaultId, name) {
11
13
  this.http = http;
12
14
  this.vaultId = vaultId;
13
15
  this.name = name;
14
16
  this.events = new Events(http);
15
17
  this.browse = new Browse(http);
18
+ this._objects = new Objects(http);
16
19
  }
17
20
  async publish(input) {
18
21
  const res = await this.events.publish(this.vaultId, this.name, input);
@@ -31,6 +34,32 @@ export class ScopeHandle {
31
34
  list: (o = {}) => this.browse.listStreams(this.vaultId, this.name, o),
32
35
  get: (ctx) => this.browse.getStream(this.vaultId, this.name, ctx),
33
36
  };
37
+ /**
38
+ * ADR-002 object storage: upload / download / metadata / delete / list on
39
+ * the vault's own bucket, addressed by a client-defined hierarchical path.
40
+ * A named collection (like `streams` above), not a bare verb like
41
+ * `publish` — objects are symmetric CRUD from the start, so they follow
42
+ * the multi-operation-resource convention rather than the single-write-op
43
+ * one `publish` uses. See ADR-002 for the full naming rationale.
44
+ */
45
+ objects = {
46
+ upload: async (path, data, opts = {}) => {
47
+ const result = await this._objects.upload(this.vaultId, this.name, path, data, opts);
48
+ if (opts.publishEvent) {
49
+ await this.publish({
50
+ type: opts.publishEvent.type,
51
+ context: opts.publishEvent.context,
52
+ payload: { ...opts.publishEvent.payload, vaultPath: result.vaultPath },
53
+ });
54
+ }
55
+ return result;
56
+ },
57
+ get: (path) => this._objects.get(this.vaultId, this.name, path),
58
+ head: (path) => this._objects.head(this.vaultId, this.name, path),
59
+ presignedUrl: (path, opts = {}) => this._objects.presignedUrl(this.vaultId, this.name, path, opts),
60
+ delete: (path) => this._objects.delete(this.vaultId, this.name, path),
61
+ list: (opts = {}) => this._objects.list(this.vaultId, this.name, opts),
62
+ };
34
63
  stream(context) {
35
64
  return {
36
65
  events: {
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ import type { VaultHttpClient } from "../core/http.js";
2
+ import type { ObjectListResult, ObjectMeta, ObjectPresignedUrl, ObjectUploadResult } from "../core/types.js";
3
+ export interface UploadOptions {
4
+ contentType?: string;
5
+ }
6
+ export interface PresignedUrlOptions {
7
+ /** Overrides vault-api's default TTL (config.ObjectPresignedURLTTL). */
8
+ ttlSeconds?: number;
9
+ }
10
+ export interface ListOptions {
11
+ prefix?: string;
12
+ }
13
+ /**
14
+ * ADR-002 object storage: upload / download / metadata / delete / list on
15
+ * the vault's own bucket, addressed by a client-defined hierarchical path.
16
+ * See company-memory-bank 04-cef/user-vault/decisions/ADR-002-vault-object-storage.md.
17
+ *
18
+ * Upload sends the raw object bytes as the request body — never JSON,
19
+ * never base64: this is a generic object-storage surface (images, video,
20
+ * anything), and an encoding envelope would impose a mandatory size/CPU
21
+ * tax on every upload for no benefit a wallet caller even needs.
22
+ * `VaultHttpClient.send`'s `rawBody` option signs a content-hash
23
+ * commitment instead of the body itself (see `AuthRequest.hash`), so a
24
+ * large upload is never buffered to authenticate it. Download
25
+ * (`responseType: "bytes"`) and `head` (`responseType: "headers"`) are the
26
+ * other two places this differs from the rest of the SDK: neither reads a
27
+ * JSON body either.
28
+ */
29
+ export declare class Objects {
30
+ private readonly http;
31
+ constructor(http: VaultHttpClient);
32
+ upload(vaultId: string, scope: string, path: string, data: Uint8Array, opts?: UploadOptions): Promise<ObjectUploadResult>;
33
+ get(vaultId: string, scope: string, path: string): Promise<Uint8Array>;
34
+ /**
35
+ * A real HTTP HEAD, not GET+query-flag. Per HTTP semantics the response
36
+ * carries no body, so vault-api puts the metadata on response headers
37
+ * (Content-Length, Content-Type, ETag, Last-Modified) — mirroring S3's
38
+ * own HeadObject. `responseType: "headers"` resolves those as a plain
39
+ * header map; this method reshapes them into `ObjectMeta`.
40
+ */
41
+ head(vaultId: string, scope: string, path: string): Promise<ObjectMeta>;
42
+ /**
43
+ * Mints a short-TTL presigned GET URL — the "presigned handoff" mode for a
44
+ * downstream consumer (e.g. an inference host) that fetches the object
45
+ * itself and cannot present Vault auth. A route of its own
46
+ * (`objects/presigned-url?path=`), not a query flag on the object's own
47
+ * path — see `endpoints.scopeObjectsPresignedUrl`'s doc comment for why.
48
+ */
49
+ presignedUrl(vaultId: string, scope: string, path: string, opts?: PresignedUrlOptions): Promise<ObjectPresignedUrl>;
50
+ delete(vaultId: string, scope: string, path: string): Promise<void>;
51
+ list(vaultId: string, scope: string, opts?: ListOptions): Promise<ObjectListResult>;
52
+ }
53
+ //# sourceMappingURL=objects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.d.ts","sourceRoot":"","sources":["../../src/internal/objects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAEvD,OAAO,KAAK,EACV,gBAAgB,EAChB,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,mBAAmB;IAClC,wEAAwE;IACxE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAE5C,MAAM,CACV,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE,aAAkB,GACvB,OAAO,CAAC,kBAAkB,CAAC;IAOxB,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAM5E;;;;;;OAMG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAe7E;;;;;;OAMG;IACG,YAAY,CAChB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,IAAI,GAAE,mBAAwB,GAC7B,OAAO,CAAC,kBAAkB,CAAC;IAMxB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAInE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAK9F"}
@@ -0,0 +1,72 @@
1
+ import { endpoints } from "../core/endpoints.js";
2
+ /**
3
+ * ADR-002 object storage: upload / download / metadata / delete / list on
4
+ * the vault's own bucket, addressed by a client-defined hierarchical path.
5
+ * See company-memory-bank 04-cef/user-vault/decisions/ADR-002-vault-object-storage.md.
6
+ *
7
+ * Upload sends the raw object bytes as the request body — never JSON,
8
+ * never base64: this is a generic object-storage surface (images, video,
9
+ * anything), and an encoding envelope would impose a mandatory size/CPU
10
+ * tax on every upload for no benefit a wallet caller even needs.
11
+ * `VaultHttpClient.send`'s `rawBody` option signs a content-hash
12
+ * commitment instead of the body itself (see `AuthRequest.hash`), so a
13
+ * large upload is never buffered to authenticate it. Download
14
+ * (`responseType: "bytes"`) and `head` (`responseType: "headers"`) are the
15
+ * other two places this differs from the rest of the SDK: neither reads a
16
+ * JSON body either.
17
+ */
18
+ export class Objects {
19
+ http;
20
+ constructor(http) {
21
+ this.http = http;
22
+ }
23
+ async upload(vaultId, scope, path, data, opts = {}) {
24
+ return this.http.send("PUT", endpoints.scopeObject(vaultId, scope, path), {
25
+ rawBody: data,
26
+ headers: { "Content-Type": opts.contentType ?? "application/octet-stream" },
27
+ });
28
+ }
29
+ async get(vaultId, scope, path) {
30
+ return this.http.send("GET", endpoints.scopeObject(vaultId, scope, path), {
31
+ responseType: "bytes",
32
+ });
33
+ }
34
+ /**
35
+ * A real HTTP HEAD, not GET+query-flag. Per HTTP semantics the response
36
+ * carries no body, so vault-api puts the metadata on response headers
37
+ * (Content-Length, Content-Type, ETag, Last-Modified) — mirroring S3's
38
+ * own HeadObject. `responseType: "headers"` resolves those as a plain
39
+ * header map; this method reshapes them into `ObjectMeta`.
40
+ */
41
+ async head(vaultId, scope, path) {
42
+ const raw = await this.http.send("HEAD", endpoints.scopeObject(vaultId, scope, path), { responseType: "headers" });
43
+ const size = Number(raw["content-length"] ?? "0");
44
+ return {
45
+ size: Number.isFinite(size) ? size : 0,
46
+ contentType: raw["content-type"] ?? "",
47
+ etag: raw.etag,
48
+ updatedAt: raw["last-modified"],
49
+ };
50
+ }
51
+ /**
52
+ * Mints a short-TTL presigned GET URL — the "presigned handoff" mode for a
53
+ * downstream consumer (e.g. an inference host) that fetches the object
54
+ * itself and cannot present Vault auth. A route of its own
55
+ * (`objects/presigned-url?path=`), not a query flag on the object's own
56
+ * path — see `endpoints.scopeObjectsPresignedUrl`'s doc comment for why.
57
+ */
58
+ async presignedUrl(vaultId, scope, path, opts = {}) {
59
+ return this.http.send("GET", endpoints.scopeObjectsPresignedUrl(vaultId, scope), {
60
+ query: { path, ttlSeconds: opts.ttlSeconds },
61
+ });
62
+ }
63
+ async delete(vaultId, scope, path) {
64
+ await this.http.send("DELETE", endpoints.scopeObject(vaultId, scope, path), { body: {} });
65
+ }
66
+ async list(vaultId, scope, opts = {}) {
67
+ return this.http.send("GET", endpoints.scopeObjects(vaultId, scope), {
68
+ query: { prefix: opts.prefix },
69
+ });
70
+ }
71
+ }
72
+ //# sourceMappingURL=objects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objects.js","sourceRoot":"","sources":["../../src/internal/objects.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAqBjD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,OAAO;IACW;IAA7B,YAA6B,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAEtD,KAAK,CAAC,MAAM,CACV,OAAe,EACf,KAAa,EACb,IAAY,EACZ,IAAgB,EAChB,OAAsB,EAAE;QAExB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACxE,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE,cAAc,EAAE,IAAI,CAAC,WAAW,IAAI,0BAA0B,EAAE;SAC5E,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,OAAe,EAAE,KAAa,EAAE,IAAY;QACpD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,KAAK,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE;YACpF,YAAY,EAAE,OAAO;SACtB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,KAAa,EAAE,IAAY;QACrD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAC9B,MAAM,EACN,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAC3C,EAAE,YAAY,EAAE,SAAS,EAAE,CAC5B,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,GAAG,CAAC,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACtC,WAAW,EAAE,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE;YACtC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,SAAS,EAAE,GAAG,CAAC,eAAe,CAAC;SAChC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,OAAe,EACf,KAAa,EACb,IAAY,EACZ,OAA4B,EAAE;QAE9B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,wBAAwB,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YAC/E,KAAK,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,KAAa,EAAE,IAAY;QACvD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAe,EAAE,KAAa,EAAE,OAAoB,EAAE;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACnE,KAAK,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;CACF"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cef-ai/vault-sdk",
3
- "version": "3.0.0",
3
+ "version": "3.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.0",
28
+ "@cef-ai/account": "1.3.1",
29
29
  "@cef-ai/signer": "1.0.0",
30
- "@cef-ai/transport": "1.0.0"
30
+ "@cef-ai/transport": "1.1.0"
31
31
  },
32
32
  "devDependencies": {
33
33
  "@types/node": "^20.11.0",