vana-cli 0.15.0 → 0.23.3

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 (100) hide show
  1. package/README.md +73 -15
  2. package/dist/cli/app/ask.d.ts +38 -0
  3. package/dist/cli/app/ask.d.ts.map +1 -0
  4. package/dist/cli/app/ask.js +110 -0
  5. package/dist/cli/app/ask.js.map +1 -0
  6. package/dist/cli/app/derivatives.d.ts +41 -0
  7. package/dist/cli/app/derivatives.d.ts.map +1 -0
  8. package/dist/cli/app/derivatives.js +227 -0
  9. package/dist/cli/app/derivatives.js.map +1 -0
  10. package/dist/cli/app/escrow.d.ts +44 -0
  11. package/dist/cli/app/escrow.d.ts.map +1 -0
  12. package/dist/cli/app/escrow.js +275 -0
  13. package/dist/cli/app/escrow.js.map +1 -0
  14. package/dist/cli/app/index.d.ts +11 -0
  15. package/dist/cli/app/index.d.ts.map +1 -0
  16. package/dist/cli/app/index.js +151 -0
  17. package/dist/cli/app/index.js.map +1 -0
  18. package/dist/cli/app/onchain.d.ts +14 -0
  19. package/dist/cli/app/onchain.d.ts.map +1 -0
  20. package/dist/cli/app/onchain.js +84 -0
  21. package/dist/cli/app/onchain.js.map +1 -0
  22. package/dist/cli/app/outcome.d.ts +45 -0
  23. package/dist/cli/app/outcome.d.ts.map +1 -0
  24. package/dist/cli/app/outcome.js +55 -0
  25. package/dist/cli/app/outcome.js.map +1 -0
  26. package/dist/cli/app/read.d.ts +43 -0
  27. package/dist/cli/app/read.d.ts.map +1 -0
  28. package/dist/cli/app/read.js +429 -0
  29. package/dist/cli/app/read.js.map +1 -0
  30. package/dist/cli/app/register.d.ts +34 -0
  31. package/dist/cli/app/register.d.ts.map +1 -0
  32. package/dist/cli/app/register.js +113 -0
  33. package/dist/cli/app/register.js.map +1 -0
  34. package/dist/cli/app/request.d.ts +50 -0
  35. package/dist/cli/app/request.d.ts.map +1 -0
  36. package/dist/cli/app/request.js +252 -0
  37. package/dist/cli/app/request.js.map +1 -0
  38. package/dist/cli/app/requests.d.ts +21 -0
  39. package/dist/cli/app/requests.d.ts.map +1 -0
  40. package/dist/cli/app/requests.js +163 -0
  41. package/dist/cli/app/requests.js.map +1 -0
  42. package/dist/cli/app/whoami.d.ts +13 -0
  43. package/dist/cli/app/whoami.d.ts.map +1 -0
  44. package/dist/cli/app/whoami.js +71 -0
  45. package/dist/cli/app/whoami.js.map +1 -0
  46. package/dist/cli/auth.d.ts +18 -0
  47. package/dist/cli/auth.d.ts.map +1 -1
  48. package/dist/cli/auth.js +109 -7
  49. package/dist/cli/auth.js.map +1 -1
  50. package/dist/cli/index.d.ts +2 -2
  51. package/dist/cli/index.d.ts.map +1 -1
  52. package/dist/cli/index.js +307 -49
  53. package/dist/cli/index.js.map +1 -1
  54. package/dist/cli/mcp-server.d.ts.map +1 -1
  55. package/dist/cli/mcp-server.js +32 -3
  56. package/dist/cli/mcp-server.js.map +1 -1
  57. package/dist/core/app-key.d.ts +50 -0
  58. package/dist/core/app-key.d.ts.map +1 -0
  59. package/dist/core/app-key.js +171 -0
  60. package/dist/core/app-key.js.map +1 -0
  61. package/dist/core/assets.d.ts +33 -0
  62. package/dist/core/assets.d.ts.map +1 -0
  63. package/dist/core/assets.js +87 -0
  64. package/dist/core/assets.js.map +1 -0
  65. package/dist/core/cli-types.d.ts +30 -0
  66. package/dist/core/cli-types.d.ts.map +1 -1
  67. package/dist/core/cli-types.js +16 -0
  68. package/dist/core/cli-types.js.map +1 -1
  69. package/dist/core/exit-codes.d.ts +48 -0
  70. package/dist/core/exit-codes.d.ts.map +1 -0
  71. package/dist/core/exit-codes.js +96 -0
  72. package/dist/core/exit-codes.js.map +1 -0
  73. package/dist/core/network.d.ts +52 -0
  74. package/dist/core/network.d.ts.map +1 -0
  75. package/dist/core/network.js +83 -0
  76. package/dist/core/network.js.map +1 -0
  77. package/dist/core/paths.d.ts +4 -2
  78. package/dist/core/paths.d.ts.map +1 -1
  79. package/dist/core/paths.js +8 -6
  80. package/dist/core/paths.js.map +1 -1
  81. package/dist/core/receipts.d.ts +37 -0
  82. package/dist/core/receipts.d.ts.map +1 -0
  83. package/dist/core/receipts.js +72 -0
  84. package/dist/core/receipts.js.map +1 -0
  85. package/dist/core/requests-store.d.ts +54 -0
  86. package/dist/core/requests-store.d.ts.map +1 -0
  87. package/dist/core/requests-store.js +83 -0
  88. package/dist/core/requests-store.js.map +1 -0
  89. package/dist/personal-server/registered.d.ts +25 -0
  90. package/dist/personal-server/registered.d.ts.map +1 -0
  91. package/dist/personal-server/registered.js +49 -0
  92. package/dist/personal-server/registered.js.map +1 -0
  93. package/dist/server/request-signer.d.ts.map +1 -1
  94. package/dist/server/request-signer.js +7 -24
  95. package/dist/server/request-signer.js.map +1 -1
  96. package/dist/server/session-relay.d.ts +6 -5
  97. package/dist/server/session-relay.d.ts.map +1 -1
  98. package/dist/server/session-relay.js +48 -51
  99. package/dist/server/session-relay.js.map +1 -1
  100. package/package.json +2 -1
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Lookup of the owner's registered Personal Server URLs at the gateway.
3
+ *
4
+ * The local transport URL (how this CLI reaches the server, often
5
+ * localhost) and the registered public URL (what builders resolve through
6
+ * the gateway) are two names for the same server. Display surfaces show
7
+ * both; this module supplies the second, best-effort and offline-tolerant.
8
+ */
9
+ import { createGatewayClient } from "@opendatalabs/vana-sdk";
10
+ import { type VanaNetworkName } from "../core/network.js";
11
+ export interface RegisteredServer {
12
+ network: VanaNetworkName;
13
+ url: string;
14
+ serverAddress: string;
15
+ status: string;
16
+ }
17
+ /**
18
+ * Active registrations for an owner across both networks, newest first per
19
+ * network. Failures and timeouts yield an empty list, never an error - a
20
+ * display concern must not break a status command.
21
+ */
22
+ export declare function lookupRegisteredServers(owner: string, deps?: {
23
+ createClient?: typeof createGatewayClient;
24
+ }): Promise<RegisteredServer[]>;
25
+ //# sourceMappingURL=registered.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registered.d.ts","sourceRoot":"","sources":["../../src/personal-server/registered.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,eAAe,CAAC;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;CAChB;AAaD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,YAAY,CAAC,EAAE,OAAO,mBAAmB,CAAA;CAAO,GACvD,OAAO,CAAC,gBAAgB,EAAE,CAAC,CA6B7B"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Lookup of the owner's registered Personal Server URLs at the gateway.
3
+ *
4
+ * The local transport URL (how this CLI reaches the server, often
5
+ * localhost) and the registered public URL (what builders resolve through
6
+ * the gateway) are two names for the same server. Display surfaces show
7
+ * both; this module supplies the second, best-effort and offline-tolerant.
8
+ */
9
+ import { createGatewayClient } from "@opendatalabs/vana-sdk";
10
+ import { VANA_NETWORKS, resolveNetwork, } from "../core/network.js";
11
+ const LOOKUP_TIMEOUT_MS = 5_000;
12
+ function withTimeout(promise, fallback) {
13
+ return Promise.race([
14
+ promise,
15
+ new Promise((resolve) => setTimeout(() => resolve(fallback), LOOKUP_TIMEOUT_MS).unref?.()),
16
+ ]).catch(() => fallback);
17
+ }
18
+ /**
19
+ * Active registrations for an owner across both networks, newest first per
20
+ * network. Failures and timeouts yield an empty list, never an error - a
21
+ * display concern must not break a status command.
22
+ */
23
+ export async function lookupRegisteredServers(owner, deps = {}) {
24
+ const createClient = deps.createClient ?? createGatewayClient;
25
+ const perNetwork = await Promise.all(VANA_NETWORKS.map(async (name) => {
26
+ try {
27
+ // Note: VANA_ENV=dev refuses mainnet host resolution; that network
28
+ // simply contributes nothing rather than failing the lookup.
29
+ const network = resolveNetwork(name, process.env);
30
+ const result = await withTimeout(createClient(network.gatewayUrl).listServersByOwner(owner), null);
31
+ if (!result?.active?.length) {
32
+ return [];
33
+ }
34
+ return result.active
35
+ .filter((record) => Boolean(record.serverUrl))
36
+ .map((record) => ({
37
+ network: name,
38
+ url: record.serverUrl,
39
+ serverAddress: record.serverAddress,
40
+ status: record.status ?? "unknown",
41
+ }));
42
+ }
43
+ catch {
44
+ return [];
45
+ }
46
+ }));
47
+ return perNetwork.flat();
48
+ }
49
+ //# sourceMappingURL=registered.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registered.js","sourceRoot":"","sources":["../../src/personal-server/registered.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,cAAc,GAEf,MAAM,oBAAoB,CAAC;AAS5B,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,SAAS,WAAW,CAAI,OAAmB,EAAE,QAAW;IACtD,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,OAAO;QACP,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,EAAE,CACzB,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,CAAC,KAAK,EAAE,EAAE,CACjE;KACF,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC;AAC3B,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAa,EACb,OAAsD,EAAE;IAExD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,mBAAmB,CAAC;IAC9D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAA+B,EAAE;QAC5D,IAAI,CAAC;YACH,mEAAmE;YACnE,6DAA6D;YAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAClD,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,YAAY,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAC1D,IAAI,CACL,CAAC;YACF,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBAC5B,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,MAAM,CAAC,MAAM;iBACjB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;iBAC7C,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBAChB,OAAO,EAAE,IAAI;gBACb,GAAG,EAAE,MAAM,CAAC,SAAS;gBACrB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,SAAS;aACnC,CAAC,CAAC,CAAC;QACR,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC;AAC3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"request-signer.d.ts","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAuC5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAuCf"}
1
+ {"version":3,"file":"request-signer.d.ts","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA+B5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAuBf"}
@@ -1,13 +1,7 @@
1
1
  import { createHash } from "node:crypto";
2
+ import { buildWeb3SignedHeader } from "@opendatalabs/vana-sdk/auth/web3-signed-builder";
2
3
  import { privateKeyToAccount } from "viem/accounts";
3
4
  const EMPTY_BODY_HASH = "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
4
- function base64urlEncode(input) {
5
- return Buffer.from(input, "utf-8")
6
- .toString("base64")
7
- .replace(/\+/g, "-")
8
- .replace(/\//g, "_")
9
- .replace(/=+$/, "");
10
- }
11
5
  function canonicalizeJson(obj) {
12
6
  if (obj === null || typeof obj !== "object")
13
7
  return obj;
@@ -44,28 +38,17 @@ export function createRequestSigner(config) {
44
38
  address: account.address,
45
39
  async signRequest(params) {
46
40
  const now = Math.floor(Date.now() / 1000);
47
- const payload = {
41
+ const bodyHash = computeBodyHash(params.body, bodyHashFormat);
42
+ return buildWeb3SignedHeader({
48
43
  aud: params.aud,
49
- bodyHash: computeBodyHash(params.body, bodyHashFormat),
50
44
  exp: now + 300,
45
+ grantId: params.grantId,
51
46
  iat: now,
52
47
  method: params.method,
53
48
  uri: params.uri,
54
- };
55
- if (params.grantId !== undefined) {
56
- payload["grantId"] = params.grantId;
57
- }
58
- // Sort keys for deterministic serialization
59
- const sortedPayload = Object.keys(payload)
60
- .sort()
61
- .reduce((acc, key) => {
62
- acc[key] = payload[key];
63
- return acc;
64
- }, {});
65
- const payloadJson = JSON.stringify(sortedPayload);
66
- const payloadBase64 = base64urlEncode(payloadJson);
67
- const signature = await account.signMessage({ message: payloadBase64 });
68
- return `Web3Signed ${payloadBase64}.${signature}`;
49
+ bodyHash,
50
+ signMessage: (message) => account.signMessage({ message }),
51
+ });
69
52
  },
70
53
  };
71
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"request-signer.js","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-signer.js","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,iDAAiD,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,eAAe,GACnB,yEAAyE,CAAC;AAG5E,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,eAAe,CACtB,IAAwB,EACxB,MAAsB;IAEtB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IACtD,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAChC,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrE,OAAO,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACzD,CAAC;AAyBD;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA2B;IAE3B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,QAAQ,CAAC;IAEzD,OAAO;QACL,OAAO,EAAE,OAAO,CAAC,OAAO;QAExB,KAAK,CAAC,WAAW,CAAC,MAAM;YACtB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAE9D,OAAO,qBAAqB,CAAC;gBAC3B,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,GAAG,EAAE,GAAG,GAAG,GAAG;gBACd,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,GAAG,EAAE,GAAG;gBACR,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,QAAQ;gBACR,WAAW,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;aACnE,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,13 +1,14 @@
1
+ import { type SessionRelayInitResult as SdkRelaySessionInitResult } from "@opendatalabs/vana-sdk/session-relay";
1
2
  import type { SessionRelayConfig, SessionInitParams, SessionPollResult } from "../core/types.js";
2
3
  /** Raw response from the Session Relay init endpoint. */
3
- export interface RelaySessionInitResult {
4
- sessionId: string;
5
- deepLinkUrl: string;
6
- expiresAt: string;
7
- }
4
+ export type RelaySessionInitResult = SdkRelaySessionInitResult;
8
5
  /**
9
6
  * Low-level client for the Session Relay service.
10
7
  *
8
+ * This is a CLI adapter over the Vana SDK Session Relay integration. Session
9
+ * Relay is a Vana-operated service integration for app handoff flows, not a
10
+ * protocol-core primitive.
11
+ *
11
12
  * @see {@link createSessionRelay} to create an instance.
12
13
  */
13
14
  export interface SessionRelay {
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay.d.ts","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAG1B,yDAAyD;AACzD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,oGAAoG;IACpG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxE,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA8F3E"}
1
+ {"version":3,"file":"session-relay.d.ts","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,sBAAsB,IAAI,yBAAyB,EACzD,MAAM,sCAAsC,CAAC;AAG9C,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B,yDAAyD;AACzD,MAAM,MAAM,sBAAsB,GAAG,yBAAyB,CAAC;AA0C/D;;;;;;;;GAQG;AACH,MAAM,WAAW,YAAY;IAC3B,oGAAoG;IACpG,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACxE,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAyC3E"}
@@ -1,5 +1,28 @@
1
+ import { createSessionRelayBuilderClient, } from "@opendatalabs/vana-sdk/session-relay";
2
+ import { privateKeyToAccount } from "viem/accounts";
1
3
  import { ConnectError, ConnectErrorCode } from "../core/errors.js";
2
- import { createRequestSigner } from "./request-signer.js";
4
+ function isRelayErrorLike(err) {
5
+ return (err instanceof Error &&
6
+ "details" in err &&
7
+ err.details !== null &&
8
+ typeof err.details === "object");
9
+ }
10
+ function mapRelayError(err, fallbackCode) {
11
+ if (err instanceof ConnectError) {
12
+ return err;
13
+ }
14
+ if (isRelayErrorLike(err)) {
15
+ const relayCode = err.details.relayErrorCode;
16
+ const code = relayCode === "SESSION_RELAY_POLL_TIMEOUT"
17
+ ? ConnectErrorCode.POLL_TIMEOUT
18
+ : (relayCode ?? fallbackCode);
19
+ return new ConnectError(err.message, code, err.details.status);
20
+ }
21
+ if (err instanceof Error) {
22
+ return new ConnectError(err.message, fallbackCode);
23
+ }
24
+ return new ConnectError(String(err), fallbackCode);
25
+ }
3
26
  /**
4
27
  * Creates a low-level Session Relay client.
5
28
  *
@@ -9,65 +32,39 @@ import { createRequestSigner } from "./request-signer.js";
9
32
  * @returns A {@link SessionRelay} instance.
10
33
  */
11
34
  export function createSessionRelay(config) {
12
- const baseUrl = config.sessionRelayUrl.replace(/\/+$/, "");
13
- const signer = createRequestSigner({ privateKey: config.privateKey });
35
+ const account = privateKeyToAccount(config.privateKey);
36
+ const relay = createSessionRelayBuilderClient({
37
+ baseUrl: config.sessionRelayUrl,
38
+ granteeAddress: config.granteeAddress,
39
+ signMessage: (message) => account.signMessage({ message }),
40
+ });
14
41
  return {
15
42
  async initSession(params) {
16
- const body = JSON.stringify({
17
- granteeAddress: config.granteeAddress,
18
- scopes: params.scopes,
19
- ...(params.webhookUrl && { webhookUrl: params.webhookUrl }),
20
- ...(params.appUserId && { app_user_id: params.appUserId }),
21
- });
22
- const authHeader = await signer.signRequest({
23
- aud: baseUrl,
24
- method: "POST",
25
- uri: "/v1/session/init",
26
- body,
27
- });
28
- const res = await fetch(`${baseUrl}/v1/session/init`, {
29
- method: "POST",
30
- headers: {
31
- "Content-Type": "application/json",
32
- Authorization: authHeader,
33
- },
34
- body,
35
- });
36
- if (!res.ok) {
37
- const errorBody = await res.json().catch(() => ({}));
38
- const errorMsg = errorBody.error &&
39
- typeof errorBody.error === "object"
40
- ? errorBody.error
41
- .message
42
- : `Session init failed: ${res.status}`;
43
- throw new ConnectError(errorMsg, errorBody.error
44
- ?.errorCode ?? ConnectErrorCode.SESSION_INIT_FAILED, res.status);
43
+ try {
44
+ return await relay.initSession(params);
45
+ }
46
+ catch (err) {
47
+ throw mapRelayError(err, ConnectErrorCode.SESSION_INIT_FAILED);
45
48
  }
46
- return (await res.json());
47
49
  },
48
50
  async pollSession(sessionId) {
49
- const res = await fetch(`${baseUrl}/v1/session/${sessionId}/poll`);
50
- if (!res.ok) {
51
- const errorBody = await res.json().catch(() => ({}));
52
- throw new ConnectError(`Poll failed: ${res.status}`, errorBody.error
53
- ?.errorCode ?? ConnectErrorCode.POLL_FAILED, res.status);
51
+ try {
52
+ return await relay.pollSession(sessionId);
53
+ }
54
+ catch (err) {
55
+ throw mapRelayError(err, ConnectErrorCode.POLL_FAILED);
54
56
  }
55
- return (await res.json());
56
57
  },
57
58
  async pollUntilComplete(sessionId, opts) {
58
- const interval = opts?.interval ?? 2000;
59
- const timeout = opts?.timeout ?? 900_000; // 15 minutes
60
- const deadline = Date.now() + timeout;
61
- while (Date.now() < deadline) {
62
- const result = await this.pollSession(sessionId);
63
- if (result.status === "approved" ||
64
- result.status === "denied" ||
65
- result.status === "expired") {
66
- return result;
67
- }
68
- await new Promise((resolve) => setTimeout(resolve, interval));
59
+ try {
60
+ return await relay.pollUntilComplete(sessionId, {
61
+ intervalMs: opts?.interval,
62
+ timeoutMs: opts?.timeout,
63
+ });
64
+ }
65
+ catch (err) {
66
+ throw mapRelayError(err, ConnectErrorCode.POLL_FAILED);
69
67
  }
70
- throw new ConnectError("Polling timed out", ConnectErrorCode.POLL_TIMEOUT);
71
68
  },
72
69
  };
73
70
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay.js","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-relay.js","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,GAEhC,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAiBnE,SAAS,gBAAgB,CAAC,GAAY;IACpC,OAAO,CACL,GAAG,YAAY,KAAK;QACpB,SAAS,IAAI,GAAG;QAChB,GAAG,CAAC,OAAO,KAAK,IAAI;QACpB,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAChC,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,GAAY,EACZ,YAA8B;IAE9B,IAAI,GAAG,YAAY,YAAY,EAAE,CAAC;QAChC,OAAO,GAAG,CAAC;IACb,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC;QAC7C,MAAM,IAAI,GACR,SAAS,KAAK,4BAA4B;YACxC,CAAC,CAAC,gBAAgB,CAAC,YAAY;YAC/B,CAAC,CAAC,CAAC,SAAS,IAAI,YAAY,CAAC,CAAC;QAClC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AA6BD;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,+BAA+B,CAAC;QAC5C,OAAO,EAAE,MAAM,CAAC,eAAe;QAC/B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,WAAW,EAAE,CAAC,OAAe,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC;KACnE,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,WAAW,CACf,MAAyB;YAEzB,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACjE,CAAC;QACH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,SAAiB;YACjC,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;QAED,KAAK,CAAC,iBAAiB,CACrB,SAAiB,EACjB,IAA8C;YAE9C,IAAI,CAAC;gBACH,OAAO,MAAM,KAAK,CAAC,iBAAiB,CAAC,SAAS,EAAE;oBAC9C,UAAU,EAAE,IAAI,EAAE,QAAQ;oBAC1B,SAAS,EAAE,IAAI,EAAE,OAAO;iBACzB,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,aAAa,CAAC,GAAG,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACzD,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vana-cli",
3
- "version": "0.15.0",
3
+ "version": "0.23.3",
4
4
  "description": "Vana data-portability CLI",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -102,6 +102,7 @@
102
102
  "@inquirer/prompts": "8.3.0",
103
103
  "@inquirer/search": "^4.1.6",
104
104
  "@modelcontextprotocol/sdk": "^1.27.1",
105
+ "@opendatalabs/vana-sdk": "^4.0.0",
105
106
  "chromium-bidi": "15.0.0",
106
107
  "commander": "14.0.3",
107
108
  "fuse.js": "^7.1.0",