@cef-ai/vault-sdk 0.1.0 → 0.2.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.
Files changed (48) hide show
  1. package/README.md +96 -20
  2. package/dist/client.d.ts +97 -3
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +100 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/core/endpoints.d.ts +1 -0
  7. package/dist/core/endpoints.d.ts.map +1 -1
  8. package/dist/core/endpoints.js +1 -0
  9. package/dist/core/endpoints.js.map +1 -1
  10. package/dist/core/types.d.ts +5 -0
  11. package/dist/core/types.d.ts.map +1 -1
  12. package/dist/fluent/job.d.ts +16 -0
  13. package/dist/fluent/job.d.ts.map +1 -1
  14. package/dist/fluent/job.js +55 -0
  15. package/dist/fluent/job.js.map +1 -1
  16. package/dist/fluent/scope.d.ts +24 -0
  17. package/dist/fluent/scope.d.ts.map +1 -1
  18. package/dist/fluent/scope.js +70 -0
  19. package/dist/fluent/scope.js.map +1 -1
  20. package/dist/index.d.ts +3 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/internal/auto-add-proxy.d.ts +55 -0
  25. package/dist/internal/auto-add-proxy.d.ts.map +1 -0
  26. package/dist/internal/auto-add-proxy.js +89 -0
  27. package/dist/internal/auto-add-proxy.js.map +1 -0
  28. package/dist/internal/delegation-token.d.ts +26 -0
  29. package/dist/internal/delegation-token.d.ts.map +1 -0
  30. package/dist/internal/delegation-token.js +89 -0
  31. package/dist/internal/delegation-token.js.map +1 -0
  32. package/dist/internal/gateway-info.d.ts +16 -0
  33. package/dist/internal/gateway-info.d.ts.map +1 -0
  34. package/dist/internal/gateway-info.js +34 -0
  35. package/dist/internal/gateway-info.js.map +1 -0
  36. package/dist/internal/marketplace.d.ts +13 -0
  37. package/dist/internal/marketplace.d.ts.map +1 -1
  38. package/dist/internal/marketplace.js +6 -0
  39. package/dist/internal/marketplace.js.map +1 -1
  40. package/dist/internal/onboarding.d.ts +99 -0
  41. package/dist/internal/onboarding.d.ts.map +1 -0
  42. package/dist/internal/onboarding.js +148 -0
  43. package/dist/internal/onboarding.js.map +1 -0
  44. package/dist/internal/scopes.d.ts +9 -0
  45. package/dist/internal/scopes.d.ts.map +1 -1
  46. package/dist/internal/scopes.js +25 -2
  47. package/dist/internal/scopes.js.map +1 -1
  48. package/package.json +7 -1
@@ -1 +1 @@
1
- {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/fluent/job.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAA8B,MAAM,uBAAuB,CAAC;AAG3E,MAAM,OAAO,SAAS;IAID;IACD;IAJD,MAAM,CAAS;IAChC,YACE,IAAqB,EACJ,OAAe,EAChB,KAAa;QADZ,YAAO,GAAP,OAAO,CAAQ;QAChB,UAAK,GAAL,KAAK,CAAQ;QAE7B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IACD,GAAG,KAAmB,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,UAAU,GAAG;QACX,IAAI,EAAE,CAAC,IAA2B,EAAE,EAA2B,EAAE,CAC/D,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,GAAG,EAAE,CAAC,CAAS,EAAqB,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;KAC5F,CAAC;IACF;;;OAGG;IACH,IAAI;QACF,MAAM,IAAI,KAAK,CACb,qGAAqG,CACtG,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"job.js","sourceRoot":"","sources":["../../src/fluent/job.ts"],"names":[],"mappings":"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"}
@@ -23,5 +23,29 @@ export declare class ScopeHandle {
23
23
  };
24
24
  };
25
25
  subscribe<P = unknown>(filter: SubscribeFilter, handler: SubscribeHandler<P>, opts?: SubscribeOptions): Subscription;
26
+ /**
27
+ * Subscribe to events across every stream (context) in the scope.
28
+ *
29
+ * Implementation: lists streams under the scope, opens a per-stream
30
+ * `subscribe` for each one with the same handler + types filter, and
31
+ * periodically refreshes the stream list so newly created streams are
32
+ * picked up. Returns a merged Subscription that tears down all children
33
+ * (and the refresh timer) on `unsubscribe()`.
34
+ *
35
+ * `refreshIntervalMs` (default 30s) controls how often the stream list
36
+ * is re-polled.
37
+ */
38
+ subscribeAll<P = unknown>(filter: ScopeWideSubscribeFilter, handler: SubscribeHandler<P>, opts?: ScopeWideSubscribeOptions): Subscription;
39
+ }
40
+ export interface ScopeWideSubscribeFilter {
41
+ /** Optional event-type allowlist applied to every per-stream child. */
42
+ types?: string[];
43
+ }
44
+ export interface ScopeWideSubscribeOptions extends SubscribeOptions {
45
+ /**
46
+ * Interval between stream-list refreshes, in ms. Default 30000.
47
+ * New streams in the scope are picked up at this cadence.
48
+ */
49
+ refreshIntervalMs?: number;
26
50
  }
27
51
  //# sourceMappingURL=scope.d.ts.map
@@ -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;IAS/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;CAGhB"}
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;IAS/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"}
@@ -36,5 +36,75 @@ export class ScopeHandle {
36
36
  subscribe(filter, handler, opts = {}) {
37
37
  return subscribe(this.http, this.vaultId, this.name, filter, handler, opts);
38
38
  }
39
+ /**
40
+ * Subscribe to events across every stream (context) in the scope.
41
+ *
42
+ * Implementation: lists streams under the scope, opens a per-stream
43
+ * `subscribe` for each one with the same handler + types filter, and
44
+ * periodically refreshes the stream list so newly created streams are
45
+ * picked up. Returns a merged Subscription that tears down all children
46
+ * (and the refresh timer) on `unsubscribe()`.
47
+ *
48
+ * `refreshIntervalMs` (default 30s) controls how often the stream list
49
+ * is re-polled.
50
+ */
51
+ subscribeAll(filter, handler, opts = {}) {
52
+ return subscribeScope(this.http, this.vaultId, this.name, this.browse, filter, handler, opts);
53
+ }
54
+ }
55
+ /**
56
+ * Internal: builds a `Subscription` that fans out to N per-context
57
+ * subscriptions, refreshes the stream list periodically, and unsubscribes
58
+ * cleanly.
59
+ */
60
+ function subscribeScope(http, vaultId, scope, browse, filter, handler, opts) {
61
+ const refreshMs = opts.refreshIntervalMs ?? 30_000;
62
+ const onError = opts.onError ?? ((e) => {
63
+ console.warn("[vault-sdk] subscribeAll refresh failed:", e);
64
+ });
65
+ // Per-context children + a closed barrier resolved once everything is down.
66
+ const children = new Map();
67
+ let stopped = false;
68
+ let refreshTimer;
69
+ let closeResolve;
70
+ const closed = new Promise((r) => (closeResolve = r));
71
+ const ensureStream = (context) => {
72
+ if (children.has(context) || stopped)
73
+ return;
74
+ const sub = subscribe(http, vaultId, scope, { context, ...(filter.types ? { types: filter.types } : {}) }, handler, opts);
75
+ children.set(context, sub);
76
+ };
77
+ const refresh = async () => {
78
+ try {
79
+ const page = await browse.listStreams(vaultId, scope);
80
+ for (const s of page.items)
81
+ ensureStream(s.context);
82
+ }
83
+ catch (err) {
84
+ onError(err);
85
+ }
86
+ if (!stopped)
87
+ refreshTimer = setTimeout(refresh, refreshMs);
88
+ };
89
+ // Kick off the first refresh synchronously so callers that immediately
90
+ // unsubscribe still see clean teardown semantics.
91
+ void refresh();
92
+ return {
93
+ unsubscribe() {
94
+ if (stopped)
95
+ return;
96
+ stopped = true;
97
+ if (refreshTimer)
98
+ clearTimeout(refreshTimer);
99
+ const closes = [];
100
+ for (const sub of children.values()) {
101
+ sub.unsubscribe();
102
+ closes.push(sub.closed);
103
+ }
104
+ children.clear();
105
+ void Promise.all(closes).then(() => closeResolve());
106
+ },
107
+ closed,
108
+ };
39
109
  }
40
110
  //# sourceMappingURL=scope.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAyD,MAAM,uBAAuB,CAAC;AAEtG,OAAO,EACL,SAAS,GAKV,MAAM,gBAAgB,CAAC;AAIxB,MAAM,OAAO,WAAW;IAKH;IACA;IACD;IAND,MAAM,CAAS;IACf,MAAM,CAAS;IAEhC,YACmB,IAAqB,EACrB,OAAe,EAChB,IAAY;QAFX,SAAI,GAAJ,IAAI,CAAiB;QACrB,YAAO,GAAP,OAAO,CAAQ;QAChB,SAAI,GAAJ,IAAI,CAAQ;QAE5B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,OAAO,CAAI,KAAoB;QACnC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAE,EAAE,CAAC;IACvC,CAAC;IAED,OAAO,GAAG;QACR,IAAI,EAAE,CAAC,IAAwB,EAAE,EAAgC,EAAE,CACjE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,GAAG,EAAE,CAAC,GAAW,EAA0B,EAAE,CAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC;KACtD,CAAC;IAEF,MAAM,CAAC,OAAe;QACpB,OAAO;YACL,MAAM,EAAE;gBACN,IAAI,EAAE,CAAc,IAA6B,EAAE,EAA0B,EAAE,CAC7E,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;aACvE;SACF,CAAC;IACJ,CAAC;IAED,SAAS,CACP,MAAuB,EACvB,OAA4B,EAC5B,OAAyB,EAAE;QAE3B,OAAO,SAAS,CAAI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;CACF"}
1
+ {"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/fluent/scope.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  export { VaultSDK } from "./client.js";
2
- export type { VaultSDKConfig, EnsureVaultOptions } from "./client.js";
2
+ export type { VaultSDKConfig, EnsureVaultOptions, EnsureProgressEvent, } from "./client.js";
3
+ export { OnboardingRequiredError, OnboardingTimeoutError, } from "./internal/onboarding.js";
4
+ export type { OnboardingStatus, OnboardingResult, BootstrapResult, } from "./internal/onboarding.js";
3
5
  export { Vault } from "./fluent/vault.js";
4
6
  export { ScopeHandle } from "./fluent/scope.js";
5
7
  export { AgentConnectionHandle } from "./fluent/agent-connection.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtE,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;AAChD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,YAAY,EACV,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,0BAA0B,CAAC;AAElC,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;AAChD,YAAY,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjF,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,YAAY,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,YAAY,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAE3D,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC1E,YAAY,EACV,uBAAuB,EACvB,6BAA6B,EAC7B,4BAA4B,GAC7B,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,QAAQ,EACR,cAAc,EACd,aAAa,EACb,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,GAAG,EACH,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,KAAK,EACL,aAAa,EACb,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,YAAY,GACb,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -2,6 +2,7 @@
2
2
  // re-exported here; import them via `@cef-ai/vault-sdk/internal` if you
3
3
  // genuinely need the lower level.
4
4
  export { VaultSDK } from "./client.js";
5
+ export { OnboardingRequiredError, OnboardingTimeoutError, } from "./internal/onboarding.js";
5
6
  export { Vault } from "./fluent/vault.js";
6
7
  export { ScopeHandle } from "./fluent/scope.js";
7
8
  export { AgentConnectionHandle } from "./fluent/agent-connection.js";
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;AAGvC,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,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAO1E,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,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,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG9C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAKtD,OAAO,EAAE,SAAS,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAO1E,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,55 @@
1
+ export type Sendable = unknown;
2
+ /**
3
+ * Minimal slice of the `@cere-ddc-sdk/blockchain` `Blockchain` class that
4
+ * `autoAddProxy` exercises. Defining it as an interface lets tests inject
5
+ * a fake without spinning up a real WebSocket connection to a Cere node.
6
+ */
7
+ export interface AutoAddProxyChain {
8
+ api: {
9
+ tx: {
10
+ proxy: {
11
+ addProxy: (delegate: string, proxyType: string, delay: number) => Sendable;
12
+ };
13
+ };
14
+ };
15
+ send: (tx: Sendable, opts: {
16
+ account: unknown;
17
+ }) => Promise<{
18
+ txHash: string;
19
+ events?: unknown[];
20
+ }>;
21
+ disconnect: () => Promise<void>;
22
+ }
23
+ export type ChainConnector = (wsEndpoint: string) => Promise<AutoAddProxyChain>;
24
+ export type SignerFactory = (embedWallet: unknown) => unknown;
25
+ /**
26
+ * Inject test doubles for the chain connector / signer factory.
27
+ * Mirrors the marketplace's same-named helper for parity with their
28
+ * test patterns.
29
+ */
30
+ export declare function setAutoAddProxyFactoriesForTests(overrides: {
31
+ chainConnector?: ChainConnector;
32
+ signerFactory?: SignerFactory;
33
+ }): void;
34
+ export declare function resetAutoAddProxyFactoriesForTests(): void;
35
+ /**
36
+ * Connect to the configured RPC, build `proxy.addProxy(<gateway>,
37
+ * NonTransfer, 0)`, sign + submit it via the user's Cere embed wallet,
38
+ * and disconnect. Returns the on-chain `txHash`. Callers should follow
39
+ * up with `pollUntilProxyReady` so the gateway sees the new proxy
40
+ * before requesting credentials.
41
+ */
42
+ export declare function autoAddProxy(opts: {
43
+ rpcEndpoint: string;
44
+ gatewayPubKeyHex: string;
45
+ /**
46
+ * The Cere embed-wallet instance (NOT the SDK `Wallet` adapter).
47
+ * Typed as `unknown` because `@cere-ddc-sdk/blockchain` is an optional
48
+ * peer dep and we don't want to leak its types into the SDK surface;
49
+ * consumers that hit onboarding already hold this object.
50
+ */
51
+ embedWallet: unknown;
52
+ }): Promise<{
53
+ txHash: string;
54
+ }>;
55
+ //# sourceMappingURL=auto-add-proxy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-add-proxy.d.ts","sourceRoot":"","sources":["../../src/internal/auto-add-proxy.ts"],"names":[],"mappings":"AA0BA,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC;AAE/B;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE;QACH,EAAE,EAAE;YACF,KAAK,EAAE;gBACL,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,QAAQ,CAAC;aAC5E,CAAC;SACH,CAAC;KACH,CAAC;IACF,IAAI,EAAE,CACJ,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,KACvB,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,GAAG,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAChF,MAAM,MAAM,aAAa,GAAG,CAAC,WAAW,EAAE,OAAO,KAAK,OAAO,CAAC;AAsB9D;;;;GAIG;AACH,wBAAgB,gCAAgC,CAAC,SAAS,EAAE;IAC1D,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B,GAAG,IAAI,CAGP;AAED,wBAAgB,kCAAkC,IAAI,IAAI,CAGzD;AAcD;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB9B"}
@@ -0,0 +1,89 @@
1
+ // src/internal/auto-add-proxy.ts
2
+ //
3
+ // Submits `proxy.addProxy(<gateway>, NonTransfer, 0)` from the user's
4
+ // Cere wallet — the one user-signed extrinsic the DDC onboarding flow
5
+ // requires before /auth/credentials will mint S3 keys (see
6
+ // ddc-s3-gateway docs/developer-guide.md §1). Replaces a manual
7
+ // Polkadot.js Apps deep-link with an in-app one-click sign.
8
+ //
9
+ // Lazy-imports `@cere-ddc-sdk/blockchain` so consumers that never hit
10
+ // onboarding (server-side flows, pre-provisioned wallets) don't need the
11
+ // chain-client tree on disk. Mirrors the lazy-import pattern in
12
+ // `delegation-token.ts`.
13
+ //
14
+ // API asymmetry — this function takes a raw `embedWallet` (typed as
15
+ // `unknown`) instead of the SDK's `Wallet` adapter, because
16
+ // `CereWalletSigner` from `@cere-ddc-sdk/blockchain` reads the
17
+ // Polkadot-extension-style API only the embed wallet exposes (it walks
18
+ // `embedWallet.subscribeAccounts`, `embedWallet.signer`, etc.). The
19
+ // SDK's `Wallet` adapter is intentionally narrower (sign-bytes only)
20
+ // and does not carry that surface. Server signers using `KeypairWallet`
21
+ // don't need autoAddProxy at all because their wallets are already
22
+ // provisioned, so the asymmetry is only visible to embed-wallet
23
+ // consumers — and they already have the `embedWallet` instance.
24
+ const defaultChainConnector = async (wsEndpoint) => {
25
+ // Cast through `any` because the dynamic import shape (with optional
26
+ // peer deps) doesn't fully resolve at type-check time even though the
27
+ // runtime export is present.
28
+ const blockchain = (await loadBlockchainModule());
29
+ return blockchain.Blockchain.connect({ wsEndpoint });
30
+ };
31
+ const defaultSignerFactory = async (embedWallet) => {
32
+ const blockchain = (await loadBlockchainModule());
33
+ return new blockchain.CereWalletSigner(embedWallet, { autoConnect: false });
34
+ };
35
+ let chainConnector = defaultChainConnector;
36
+ let signerFactory = defaultSignerFactory;
37
+ /**
38
+ * Inject test doubles for the chain connector / signer factory.
39
+ * Mirrors the marketplace's same-named helper for parity with their
40
+ * test patterns.
41
+ */
42
+ export function setAutoAddProxyFactoriesForTests(overrides) {
43
+ if (overrides.chainConnector)
44
+ chainConnector = overrides.chainConnector;
45
+ if (overrides.signerFactory)
46
+ signerFactory = overrides.signerFactory;
47
+ }
48
+ export function resetAutoAddProxyFactoriesForTests() {
49
+ chainConnector = defaultChainConnector;
50
+ signerFactory = defaultSignerFactory;
51
+ }
52
+ async function loadBlockchainModule() {
53
+ try {
54
+ return await import("@cere-ddc-sdk/blockchain");
55
+ }
56
+ catch (err) {
57
+ throw new Error("Onboarding requires @cere-ddc-sdk/blockchain. Install it as a peer dep, "
58
+ + "or call vault.ensure({ onboard: false }) if your wallet is already provisioned.\n"
59
+ + `Underlying error: ${err instanceof Error ? err.message : String(err)}`);
60
+ }
61
+ }
62
+ /**
63
+ * Connect to the configured RPC, build `proxy.addProxy(<gateway>,
64
+ * NonTransfer, 0)`, sign + submit it via the user's Cere embed wallet,
65
+ * and disconnect. Returns the on-chain `txHash`. Callers should follow
66
+ * up with `pollUntilProxyReady` so the gateway sees the new proxy
67
+ * before requesting credentials.
68
+ */
69
+ export async function autoAddProxy(opts) {
70
+ const delegate = opts.gatewayPubKeyHex.startsWith("0x")
71
+ ? opts.gatewayPubKeyHex
72
+ : "0x" + opts.gatewayPubKeyHex;
73
+ const blockchain = await chainConnector(opts.rpcEndpoint);
74
+ try {
75
+ const signer = await Promise.resolve(signerFactory(opts.embedWallet));
76
+ const ready = signer.isReady;
77
+ if (typeof ready === "function")
78
+ await ready.call(signer);
79
+ const tx = blockchain.api.tx.proxy.addProxy(delegate, "NonTransfer", 0);
80
+ const result = await blockchain.send(tx, { account: signer });
81
+ return { txHash: result.txHash };
82
+ }
83
+ finally {
84
+ await blockchain.disconnect().catch(() => {
85
+ /* best-effort cleanup */
86
+ });
87
+ }
88
+ }
89
+ //# sourceMappingURL=auto-add-proxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-add-proxy.js","sourceRoot":"","sources":["../../src/internal/auto-add-proxy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import type { Wallet } from "../wallet/adapter.js";
2
+ export interface BuildDelegationTokenInput {
3
+ wallet: Wallet;
4
+ /** S3 Gateway ed25519 pubkey (`0x`-hex or bare hex). The token's subject. */
5
+ gatewayPubkey: string;
6
+ /** Whether the token can re-delegate. Defaults to true. */
7
+ canDelegate?: boolean;
8
+ /** Optional bucket id; usually omitted for the FIRST claim. */
9
+ bucketId?: bigint;
10
+ /** Optional validity window in seconds. */
11
+ expiresInSeconds?: number;
12
+ }
13
+ /**
14
+ * Fetch the gateway's ed25519 public key from `/auth/info`. Thin wrapper
15
+ * over `getGatewayInfo` for the one-off pubkey-only callers; the
16
+ * onboarding flow uses `getGatewayInfo` directly so it can also see
17
+ * cluster_id / region.
18
+ */
19
+ export declare function fetchGatewayPubkey(authInfoUrl: string, fetchFn?: typeof fetch): Promise<string>;
20
+ /**
21
+ * Build, sign, and base58-encode a vault delegation token. Lazy-loads
22
+ * `@cere-ddc-sdk/ddc-client` so the import only fires when this helper is
23
+ * actually invoked. Throws a clear error if the optional dep is missing.
24
+ */
25
+ export declare function buildVaultDelegationToken(input: BuildDelegationTokenInput): Promise<string>;
26
+ //# sourceMappingURL=delegation-token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-token.d.ts","sourceRoot":"","sources":["../../src/internal/delegation-token.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,6EAA6E;IAC7E,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;GAKG;AACH,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,MAAM,CAAC,CAGjB;AAwCD;;;;GAIG;AACH,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,yBAAyB,GAC/B,OAAO,CAAC,MAAM,CAAC,CA8BjB"}
@@ -0,0 +1,89 @@
1
+ // src/internal/delegation-token.ts
2
+ //
3
+ // Builds a DDC delegation token internally so browser apps don't have to ship
4
+ // `@cere-ddc-sdk/ddc-client` themselves. Mirrors the helper in
5
+ // `examples/vault-chat/utils/vault-token.ts` but reuses the SDK's own
6
+ // `Wallet` adapter instead of asking the consumer for a mnemonic.
7
+ //
8
+ // Trade-off: `@cere-ddc-sdk/ddc-client` is declared as an optionalDependency
9
+ // AND lazy-loaded via dynamic import only when this helper actually runs.
10
+ // Consumers that pre-build the token and pass it to `vault.ensure({ delegationToken })`
11
+ // never trigger this code path and never pull in the (heavy) ddc-client tree.
12
+ // Consumers that hit this path must have ddc-client installed at runtime.
13
+ import { getGatewayInfo } from "./gateway-info.js";
14
+ /**
15
+ * Fetch the gateway's ed25519 public key from `/auth/info`. Thin wrapper
16
+ * over `getGatewayInfo` for the one-off pubkey-only callers; the
17
+ * onboarding flow uses `getGatewayInfo` directly so it can also see
18
+ * cluster_id / region.
19
+ */
20
+ export async function fetchGatewayPubkey(authInfoUrl, fetchFn = fetch) {
21
+ const info = await getGatewayInfo(authInfoUrl, fetchFn);
22
+ return info.pubkey;
23
+ }
24
+ /**
25
+ * Convert a hex pubkey ("0x.." or bare hex) to a Uint8Array. Required
26
+ * because DDC's Signer interface exposes `publicKey` as raw bytes.
27
+ */
28
+ function hexToBytes(hex) {
29
+ const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
30
+ if (clean.length % 2 !== 0) {
31
+ throw new Error(`Invalid hex pubkey length: ${hex}`);
32
+ }
33
+ const bytes = new Uint8Array(clean.length / 2);
34
+ for (let i = 0; i < bytes.length; i++) {
35
+ bytes[i] = parseInt(clean.slice(i * 2, i * 2 + 2), 16);
36
+ }
37
+ return bytes;
38
+ }
39
+ /**
40
+ * Adapt a `Wallet` (pubkey/sign) to the duck-typed surface DDC's
41
+ * `createSignature` reads from a Signer: `type`, `publicKey`, `isReady()`,
42
+ * `sign(bytes)`. We never extend `Signer` because that pulls in the
43
+ * blockchain pkg's prototype chain — duck typing is enough at runtime.
44
+ */
45
+ function walletToDdcSigner(wallet) {
46
+ return {
47
+ type: wallet.sigType?.() ?? "ed25519",
48
+ publicKey: hexToBytes(wallet.pubkey()),
49
+ async isReady() { return true; },
50
+ async sign(data) {
51
+ return wallet.sign(data);
52
+ },
53
+ };
54
+ }
55
+ /**
56
+ * Build, sign, and base58-encode a vault delegation token. Lazy-loads
57
+ * `@cere-ddc-sdk/ddc-client` so the import only fires when this helper is
58
+ * actually invoked. Throws a clear error if the optional dep is missing.
59
+ */
60
+ export async function buildVaultDelegationToken(input) {
61
+ const subject = input.gatewayPubkey.startsWith("0x")
62
+ ? input.gatewayPubkey
63
+ : `0x${input.gatewayPubkey}`;
64
+ let ddc;
65
+ try {
66
+ ddc = await import("@cere-ddc-sdk/ddc-client");
67
+ }
68
+ catch (err) {
69
+ throw new Error("Building a delegation token internally requires the optional dependency "
70
+ + "`@cere-ddc-sdk/ddc-client`. Install it, or pass a pre-built `delegationToken` "
71
+ + "to `vault.ensure({ delegationToken })`.\n"
72
+ + `Underlying error: ${err instanceof Error ? err.message : String(err)}`);
73
+ }
74
+ const { AuthToken } = ddc;
75
+ const args = {
76
+ subject,
77
+ canDelegate: input.canDelegate ?? true,
78
+ };
79
+ if (input.bucketId !== undefined)
80
+ args.bucketId = input.bucketId;
81
+ if (input.expiresInSeconds !== undefined)
82
+ args.expiresIn = input.expiresInSeconds;
83
+ const token = AuthToken.fullAccess(args);
84
+ // Cast the duck-typed adapter — DDC's createSignature only reads
85
+ // `type`, `publicKey`, `isReady()`, `sign()` (verified in 2.16.1).
86
+ await token.sign(walletToDdcSigner(input.wallet));
87
+ return token.toString();
88
+ }
89
+ //# sourceMappingURL=delegation-token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delegation-token.js","sourceRoot":"","sources":["../../src/internal/delegation-token.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ export interface GatewayInfo {
2
+ /** ed25519 pubkey, `0x`-prefixed hex when the gateway returns it that way. */
3
+ pubkey: string;
4
+ /** Optional cluster id when the gateway exposes it. */
5
+ clusterId?: string;
6
+ /** Optional region label when the gateway exposes it. */
7
+ region?: string;
8
+ }
9
+ /**
10
+ * Fetch the gateway's `/auth/info`. Throws on non-OK responses, missing
11
+ * pubkey, or invalid JSON. No caching here — the SDK caches one level
12
+ * up (`VaultSDK.cachedGatewayPubkey`) so it can be invalidated cleanly
13
+ * when needed.
14
+ */
15
+ export declare function getGatewayInfo(authInfoUrl: string, fetchFn?: typeof fetch): Promise<GatewayInfo>;
16
+ //# sourceMappingURL=gateway-info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-info.d.ts","sourceRoot":"","sources":["../../src/internal/gateway-info.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,WAAW;IAC1B,8EAA8E;IAC9E,MAAM,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,yDAAyD;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,OAAO,KAAa,GAC5B,OAAO,CAAC,WAAW,CAAC,CAoBtB"}
@@ -0,0 +1,34 @@
1
+ // src/internal/gateway-info.ts
2
+ //
3
+ // Single source of truth for the DDC S3 gateway's `/auth/info` payload —
4
+ // the gateway's ed25519 pubkey, plus optional cluster/region metadata.
5
+ // The pubkey is needed in two places:
6
+ // - building a delegation token's `subject` (delegation-token.ts)
7
+ // - calling `proxy.addProxy(<gw>, NonTransfer, 0)` (auto-add-proxy.ts)
8
+ // so it makes sense to fetch it from one helper.
9
+ /**
10
+ * Fetch the gateway's `/auth/info`. Throws on non-OK responses, missing
11
+ * pubkey, or invalid JSON. No caching here — the SDK caches one level
12
+ * up (`VaultSDK.cachedGatewayPubkey`) so it can be invalidated cleanly
13
+ * when needed.
14
+ */
15
+ export async function getGatewayInfo(authInfoUrl, fetchFn = fetch) {
16
+ const res = await fetchFn(authInfoUrl, {
17
+ headers: { Accept: "application/json" },
18
+ });
19
+ if (!res.ok) {
20
+ throw new Error(`Gateway /auth/info ${res.status}: ${await res.text().catch(() => "")}`);
21
+ }
22
+ const info = (await res.json());
23
+ const pubkey = info.gateway_public_key ?? info.pubkey;
24
+ if (!pubkey) {
25
+ throw new Error(`Gateway /auth/info response is missing gateway_public_key: ${JSON.stringify(info)}`);
26
+ }
27
+ const out = { pubkey };
28
+ if (info.cluster_id !== undefined)
29
+ out.clusterId = info.cluster_id;
30
+ if (info.region !== undefined)
31
+ out.region = info.region;
32
+ return out;
33
+ }
34
+ //# sourceMappingURL=gateway-info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gateway-info.js","sourceRoot":"","sources":["../../src/internal/gateway-info.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,yEAAyE;AACzE,uEAAuE;AACvE,sCAAsC;AACtC,oEAAoE;AACpE,yEAAyE;AACzE,iDAAiD;AAmBjD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,UAAwB,KAAK;IAE7B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE;QACrC,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;KACxC,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,sBAAsB,GAAG,CAAC,MAAM,KAAK,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CACxE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgB,CAAC;IAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,MAAM,CAAC;IACtD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,8DAA8D,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CACrF,CAAC;IACJ,CAAC;IACD,MAAM,GAAG,GAAgB,EAAE,MAAM,EAAE,CAAC;IACpC,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;QAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;QAAE,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IACxD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -11,6 +11,18 @@ export interface AgentManifest {
11
11
  asPubKey: string;
12
12
  [k: string]: unknown;
13
13
  }
14
+ export interface ListAgentsOptions {
15
+ /** Page size. Server caps if omitted. */
16
+ limit?: number;
17
+ /** Opaque cursor returned by the previous page. */
18
+ cursor?: string;
19
+ /** Free-text search; mapped to `q=` on the wire. */
20
+ query?: string;
21
+ }
22
+ export interface ListAgentsResponse {
23
+ items: AgentManifest[];
24
+ nextCursor?: string;
25
+ }
14
26
  /**
15
27
  * Marketplace lives on a separate API server (see `pkg/compute/marketplace`
16
28
  * in ddc-node). The SDK is configured with a dedicated `marketplaceEndpoint`
@@ -21,5 +33,6 @@ export declare class Marketplace {
21
33
  private readonly http;
22
34
  constructor(http: VaultHttpClient);
23
35
  getAgent(agentId: string, version?: string): Promise<AgentManifest>;
36
+ list(opts?: ListAgentsOptions): Promise<ListAgentsResponse>;
24
37
  }
25
38
  //# sourceMappingURL=marketplace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/internal/marketplace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAElD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;CAMpE"}
1
+ {"version":3,"file":"marketplace.d.ts","sourceRoot":"","sources":["../../src/internal/marketplace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAMvD,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IACV,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,eAAe;IAElD,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOnE,IAAI,CAAC,IAAI,GAAE,iBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAMhE"}
@@ -18,5 +18,11 @@ export class Marketplace {
18
18
  : endpoints.marketplaceAgent(agentId);
19
19
  return this.http.send("GET", path, { auth: PUBLIC });
20
20
  }
21
+ list(opts = {}) {
22
+ return this.http.send("GET", endpoints.marketplaceAgents(), {
23
+ auth: PUBLIC,
24
+ query: { limit: opts.limit, cursor: opts.cursor, q: opts.query },
25
+ });
26
+ }
21
27
  }
22
28
  //# sourceMappingURL=marketplace.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/internal/marketplace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AAe5B;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACO;IAA7B,YAA6B,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAEtD,QAAQ,CAAC,OAAe,EAAE,OAAgB;QACxC,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;CACF"}
1
+ {"version":3,"file":"marketplace.js","sourceRoot":"","sources":["../../src/internal/marketplace.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;AA6B5B;;;;;GAKG;AACH,MAAM,OAAO,WAAW;IACO;IAA7B,YAA6B,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAEtD,QAAQ,CAAC,OAAe,EAAE,OAAgB;QACxC,MAAM,IAAI,GAAG,OAAO;YAClB,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC;YACrD,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,CAAC,OAA0B,EAAE;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,iBAAiB,EAAE,EAAE;YAC1D,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,EAAE;SACjE,CAAC,CAAC;IACL,CAAC;CACF"}