@opendatalabs/personal-server-ts-server 0.0.1-canary.b75bcfa → 0.0.1-canary.bc229f5

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 (171) hide show
  1. package/dist/api-auth.d.ts +17 -0
  2. package/dist/api-auth.d.ts.map +1 -0
  3. package/dist/api-auth.js +77 -0
  4. package/dist/api-auth.js.map +1 -0
  5. package/dist/api.d.ts +3 -0
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +2 -0
  8. package/dist/api.js.map +1 -1
  9. package/dist/app.d.ts +17 -1
  10. package/dist/app.d.ts.map +1 -1
  11. package/dist/app.js +56 -30
  12. package/dist/app.js.map +1 -1
  13. package/dist/bootstrap.d.ts +8 -3
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +102 -25
  16. package/dist/bootstrap.js.map +1 -1
  17. package/dist/client.d.ts +17 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +226 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/config/defaults.d.ts +12 -0
  22. package/dist/config/defaults.d.ts.map +1 -0
  23. package/dist/config/defaults.js +14 -0
  24. package/dist/config/defaults.js.map +1 -0
  25. package/dist/config/index.d.ts +4 -0
  26. package/dist/config/index.d.ts.map +1 -0
  27. package/dist/config/index.js +4 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/config/loader.d.ts +8 -0
  30. package/dist/config/loader.d.ts.map +1 -0
  31. package/dist/config/loader.js +74 -0
  32. package/dist/config/loader.js.map +1 -0
  33. package/dist/config/paths.d.ts +9 -0
  34. package/dist/config/paths.d.ts.map +1 -0
  35. package/dist/config/paths.js +22 -0
  36. package/dist/config/paths.js.map +1 -0
  37. package/dist/hono-context.d.ts +14 -0
  38. package/dist/hono-context.d.ts.map +1 -0
  39. package/dist/hono-context.js +2 -0
  40. package/dist/hono-context.js.map +1 -0
  41. package/dist/index.js +63 -12
  42. package/dist/index.js.map +1 -1
  43. package/dist/keys/server-account.d.ts +28 -0
  44. package/dist/keys/server-account.d.ts.map +1 -0
  45. package/dist/keys/server-account.js +48 -0
  46. package/dist/keys/server-account.js.map +1 -0
  47. package/dist/logger/index.d.ts +5 -0
  48. package/dist/logger/index.d.ts.map +1 -0
  49. package/dist/logger/index.js +9 -0
  50. package/dist/logger/index.js.map +1 -0
  51. package/dist/logging/access-log.d.ts +15 -0
  52. package/dist/logging/access-log.d.ts.map +1 -0
  53. package/dist/logging/access-log.js +25 -0
  54. package/dist/logging/access-log.js.map +1 -0
  55. package/dist/logging/access-reader.d.ts +19 -0
  56. package/dist/logging/access-reader.d.ts.map +1 -0
  57. package/dist/logging/access-reader.js +50 -0
  58. package/dist/logging/access-reader.js.map +1 -0
  59. package/dist/middleware/access-log.d.ts.map +1 -1
  60. package/dist/middleware/access-log.js +8 -2
  61. package/dist/middleware/access-log.js.map +1 -1
  62. package/dist/middleware/builder-check.d.ts +2 -2
  63. package/dist/middleware/builder-check.d.ts.map +1 -1
  64. package/dist/middleware/builder-check.js +7 -2
  65. package/dist/middleware/builder-check.js.map +1 -1
  66. package/dist/middleware/data-read-policy.d.ts +11 -0
  67. package/dist/middleware/data-read-policy.d.ts.map +1 -0
  68. package/dist/middleware/data-read-policy.js +39 -0
  69. package/dist/middleware/data-read-policy.js.map +1 -0
  70. package/dist/middleware/owner-check.js +1 -1
  71. package/dist/middleware/owner-check.js.map +1 -1
  72. package/dist/middleware/web3-auth.d.ts +11 -0
  73. package/dist/middleware/web3-auth.d.ts.map +1 -1
  74. package/dist/middleware/web3-auth.js +21 -31
  75. package/dist/middleware/web3-auth.js.map +1 -1
  76. package/dist/migrations/local-state.d.ts +21 -0
  77. package/dist/migrations/local-state.d.ts.map +1 -0
  78. package/dist/migrations/local-state.js +106 -0
  79. package/dist/migrations/local-state.js.map +1 -0
  80. package/dist/routes/access-logs.d.ts +7 -0
  81. package/dist/routes/access-logs.d.ts.map +1 -1
  82. package/dist/routes/access-logs.js +11 -17
  83. package/dist/routes/access-logs.js.map +1 -1
  84. package/dist/routes/auth-device.d.ts +48 -0
  85. package/dist/routes/auth-device.d.ts.map +1 -0
  86. package/dist/routes/auth-device.js +578 -0
  87. package/dist/routes/auth-device.js.map +1 -0
  88. package/dist/routes/data.d.ts +10 -1
  89. package/dist/routes/data.d.ts.map +1 -1
  90. package/dist/routes/data.js +25 -201
  91. package/dist/routes/data.js.map +1 -1
  92. package/dist/routes/grants.d.ts +7 -1
  93. package/dist/routes/grants.d.ts.map +1 -1
  94. package/dist/routes/grants.js +13 -195
  95. package/dist/routes/grants.js.map +1 -1
  96. package/dist/routes/health.d.ts +7 -1
  97. package/dist/routes/health.d.ts.map +1 -1
  98. package/dist/routes/health.js +24 -1
  99. package/dist/routes/health.js.map +1 -1
  100. package/dist/routes/oauth-token.d.ts +56 -0
  101. package/dist/routes/oauth-token.d.ts.map +1 -0
  102. package/dist/routes/oauth-token.js +49 -0
  103. package/dist/routes/oauth-token.js.map +1 -0
  104. package/dist/routes/sync.d.ts +7 -0
  105. package/dist/routes/sync.d.ts.map +1 -1
  106. package/dist/routes/sync.js +12 -39
  107. package/dist/routes/sync.js.map +1 -1
  108. package/dist/routes/ui-config.d.ts.map +1 -1
  109. package/dist/routes/ui-config.js +17 -82
  110. package/dist/routes/ui-config.js.map +1 -1
  111. package/dist/routes/ui-registration.d.ts +7 -0
  112. package/dist/routes/ui-registration.d.ts.map +1 -0
  113. package/dist/routes/ui-registration.js +209 -0
  114. package/dist/routes/ui-registration.js.map +1 -0
  115. package/dist/routes/ui.d.ts +1 -0
  116. package/dist/routes/ui.d.ts.map +1 -1
  117. package/dist/routes/ui.js +46 -4
  118. package/dist/routes/ui.js.map +1 -1
  119. package/dist/storage/hierarchy.d.ts +16 -0
  120. package/dist/storage/hierarchy.d.ts.map +1 -0
  121. package/dist/storage/hierarchy.js +60 -0
  122. package/dist/storage/hierarchy.js.map +1 -0
  123. package/dist/storage/index-manager.d.ts +37 -0
  124. package/dist/storage/index-manager.d.ts.map +1 -0
  125. package/dist/storage/index-manager.js +134 -0
  126. package/dist/storage/index-manager.js.map +1 -0
  127. package/dist/storage/index-schema.d.ts +5 -0
  128. package/dist/storage/index-schema.d.ts.map +1 -0
  129. package/dist/storage/index-schema.js +48 -0
  130. package/dist/storage/index-schema.js.map +1 -0
  131. package/dist/storage/node-data-storage.d.ts +9 -0
  132. package/dist/storage/node-data-storage.d.ts.map +1 -0
  133. package/dist/storage/node-data-storage.js +48 -0
  134. package/dist/storage/node-data-storage.js.map +1 -0
  135. package/dist/sync-cursor.d.ts +15 -0
  136. package/dist/sync-cursor.d.ts.map +1 -0
  137. package/dist/sync-cursor.js +71 -0
  138. package/dist/sync-cursor.js.map +1 -0
  139. package/dist/token-store.d.ts +22 -0
  140. package/dist/token-store.d.ts.map +1 -0
  141. package/dist/token-store.js +120 -0
  142. package/dist/token-store.js.map +1 -0
  143. package/dist/tunnel/manager.js +1 -1
  144. package/dist/tunnel/manager.js.map +1 -1
  145. package/dist/tunnel/verify.d.ts +1 -1
  146. package/dist/tunnel/verify.d.ts.map +1 -1
  147. package/dist/tunnel/verify.js +8 -2
  148. package/dist/tunnel/verify.js.map +1 -1
  149. package/dist/ui/browser_tls_rustls_bg.wasm +0 -0
  150. package/dist/ui/index.html +1946 -0
  151. package/dist/ui/ps-lite-debug.d.ts +62 -0
  152. package/dist/ui/ps-lite-debug.d.ts.map +1 -0
  153. package/dist/ui/ps-lite-debug.js +55095 -0
  154. package/dist/ui/ps-lite-debug.js.map +1 -0
  155. package/package.json +20 -8
  156. package/dist/middleware/grant-check.d.ts +0 -12
  157. package/dist/middleware/grant-check.d.ts.map +0 -1
  158. package/dist/middleware/grant-check.js +0 -90
  159. package/dist/middleware/grant-check.js.map +0 -1
  160. package/dist/oauth/provider.d.ts +0 -55
  161. package/dist/oauth/provider.d.ts.map +0 -1
  162. package/dist/oauth/provider.js +0 -160
  163. package/dist/oauth/provider.js.map +0 -1
  164. package/dist/oauth/routes.d.ts +0 -10
  165. package/dist/oauth/routes.d.ts.map +0 -1
  166. package/dist/oauth/routes.js +0 -206
  167. package/dist/oauth/routes.js.map +0 -1
  168. package/dist/routes/mcp.d.ts +0 -10
  169. package/dist/routes/mcp.d.ts.map +0 -1
  170. package/dist/routes/mcp.js +0 -64
  171. package/dist/routes/mcp.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ import { type SessionTokenVerifierPort } from "@opendatalabs/personal-server-ts-core/auth";
2
+ import type { PersonalServerApiAuthPort } from "@opendatalabs/personal-server-ts-core/api";
3
+ import type { DataStoragePort, FeeVerifierPort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
4
+ import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
5
+ export interface ServerApiAuthDeps {
6
+ serverOrigin: string | (() => string);
7
+ serverOwner?: `0x${string}`;
8
+ gateway: GatewayClient;
9
+ devToken?: string;
10
+ accessToken?: string;
11
+ tokenStore?: SessionTokenVerifierPort;
12
+ dataStorage?: Pick<DataStoragePort, "findEntry">;
13
+ feeVerifier?: FeeVerifierPort;
14
+ runtimeAvailability?: RuntimeAvailabilityPort;
15
+ }
16
+ export declare function createServerApiAuth(deps: ServerApiAuthDeps): PersonalServerApiAuthPort;
17
+ //# sourceMappingURL=api-auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-auth.d.ts","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,wBAAwB,EAC9B,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EACV,yBAAyB,EAE1B,MAAM,2CAA2C,CAAC;AAOnD,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAEjE,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,wBAAwB,CAAC;IACtC,WAAW,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACjD,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AA6CD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,GACtB,yBAAyB,CAoD3B"}
@@ -0,0 +1,77 @@
1
+ import { authenticateRequest, } from "@opendatalabs/personal-server-ts-core/auth";
2
+ import { verifyDataReadPolicy } from "@opendatalabs/personal-server-ts-core/policy";
3
+ import { NotOwnerError, ProtocolError, UnregisteredBuilderError, } from "@opendatalabs/personal-server-ts-core/errors";
4
+ function serverNotConfigured() {
5
+ return new ProtocolError(500, "SERVER_NOT_CONFIGURED", "Server owner address not configured. Set VANA_MASTER_KEY_SIGNATURE environment variable.");
6
+ }
7
+ function isOwner(signer, serverOwner) {
8
+ return Boolean(serverOwner && signer.toLowerCase() === serverOwner.toLowerCase());
9
+ }
10
+ async function authenticate(request, deps) {
11
+ return authenticateRequest({
12
+ request,
13
+ serverOrigin: deps.serverOrigin,
14
+ devToken: deps.devToken,
15
+ accessToken: deps.accessToken,
16
+ sessionTokenVerifier: deps.tokenStore,
17
+ serverOwner: deps.serverOwner,
18
+ });
19
+ }
20
+ async function assertRegisteredBuilder(gateway, signer) {
21
+ if ("isRegisteredBuilder" in gateway) {
22
+ if (await gateway.isRegisteredBuilder(signer))
23
+ return;
24
+ throw new UnregisteredBuilderError();
25
+ }
26
+ const builder = await gateway.getBuilder(signer);
27
+ if (!builder)
28
+ throw new UnregisteredBuilderError();
29
+ }
30
+ export function createServerApiAuth(deps) {
31
+ return {
32
+ async authorizeOwner(request) {
33
+ const result = await authenticate(request, deps);
34
+ if (result.isPolicyBypass)
35
+ return;
36
+ if (!deps.serverOwner)
37
+ throw serverNotConfigured();
38
+ if (!isOwner(result.auth.signer, deps.serverOwner)) {
39
+ throw new NotOwnerError({
40
+ signer: result.auth.signer,
41
+ expected: deps.serverOwner,
42
+ });
43
+ }
44
+ },
45
+ async authorizeBuilderList(request) {
46
+ const result = await authenticate(request, deps);
47
+ if (result.isPolicyBypass ||
48
+ isOwner(result.auth.signer, deps.serverOwner)) {
49
+ return;
50
+ }
51
+ await assertRegisteredBuilder(deps.gateway, result.auth.signer);
52
+ },
53
+ async authorizeBuilderRead(input) {
54
+ const result = await authenticate(input.request, deps);
55
+ if (result.isPolicyBypass) {
56
+ return { builder: result.auth.signer, grantId: "policy-bypass" };
57
+ }
58
+ const selectedEntry = deps.dataStorage?.findEntry({
59
+ scope: input.scope,
60
+ fileId: input.fileId,
61
+ });
62
+ const grant = await verifyDataReadPolicy({
63
+ signer: result.auth.signer,
64
+ grantId: result.auth.payload.grantId ?? input.grantId,
65
+ requestedScope: input.scope,
66
+ fileId: input.fileId ?? selectedEntry?.fileId ?? undefined,
67
+ }, {
68
+ authSessionVerifier: deps.gateway,
69
+ grantVerifier: deps.gateway,
70
+ feeVerifier: deps.feeVerifier,
71
+ runtimeAvailability: deps.runtimeAvailability,
72
+ });
73
+ return { builder: result.auth.signer, grantId: grant.id };
74
+ },
75
+ };
76
+ }
77
+ //# sourceMappingURL=api-auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-auth.js","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"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"}
package/dist/api.d.ts CHANGED
@@ -1,2 +1,5 @@
1
1
  export { createServer, type CreateServerOptions, type ServerContext, } from "./bootstrap.js";
2
+ export { startPersonalServer, type StartPersonalServerNodeOptions, } from "./client.js";
3
+ export type { PersonalServerHandle, PersonalServerInfo, PersonalServerRegistrationRequest, PersonalServerStatus, } from "@opendatalabs/personal-server-ts-core/client";
4
+ export { DEFAULT_ROOT_PATH, DEFAULT_CONFIG_PATH, DEFAULT_DATA_DIR, DEFAULT_SERVER_DIR, DEFAULT_VANA_DIR, expandHomePath, loadConfig, resolveRootPath, type LoadConfigOptions, } from "./config/index.js";
2
5
  //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,KAAK,8BAA8B,GACpC,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,oBAAoB,EACpB,kBAAkB,EAClB,iCAAiC,EACjC,oBAAoB,GACrB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC"}
package/dist/api.js CHANGED
@@ -1,2 +1,4 @@
1
1
  export { createServer, } from "./bootstrap.js";
2
+ export { startPersonalServer, } from "./client.js";
3
+ export { DEFAULT_ROOT_PATH, DEFAULT_CONFIG_PATH, DEFAULT_DATA_DIR, DEFAULT_SERVER_DIR, DEFAULT_VANA_DIR, expandHomePath, loadConfig, resolveRootPath, } from "./config/index.js";
2
4
  //# sourceMappingURL=api.js.map
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,GAEhB,MAAM,mBAAmB,CAAC"}
package/dist/app.d.ts CHANGED
@@ -1,12 +1,15 @@
1
1
  import { Hono } from "hono";
2
2
  import type { IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
3
3
  import type { HierarchyManagerOptions } from "@opendatalabs/personal-server-ts-core/storage/hierarchy";
4
- import type { GatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
4
+ import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/node";
5
+ import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
5
6
  import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
6
7
  import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
7
8
  import { type HealthDeps } from "./routes/health.js";
8
9
  import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
9
10
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
11
+ import type { DataStoragePort, FeeVerifierPort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
12
+ import type { TokenStore } from "./token-store.js";
10
13
  import type { Logger } from "pino";
11
14
  export interface IdentityInfo {
12
15
  address: `0x${string}`;
@@ -20,15 +23,28 @@ export interface AppDeps {
20
23
  indexManager: IndexManager;
21
24
  hierarchyOptions: HierarchyManagerOptions;
22
25
  serverOrigin: string | (() => string);
26
+ localApprovalOrigin?: string | (() => string | undefined);
23
27
  serverOwner?: `0x${string}`;
24
28
  identity?: IdentityInfo;
25
29
  gateway: GatewayClient;
30
+ gatewayConfig?: DataPortabilityGatewayConfig & {
31
+ url?: string;
32
+ };
33
+ config?: ServerConfig;
26
34
  accessLogWriter: AccessLogWriter;
27
35
  accessLogReader: AccessLogReader;
36
+ cloudMode?: boolean;
28
37
  devToken?: string;
38
+ ownerSignature?: `0x${string}`;
39
+ ownerPrivateKey?: `0x${string}`;
40
+ accessToken?: string;
29
41
  configPath?: string;
30
42
  syncManager?: SyncManager | null;
31
43
  serverSigner?: ServerSigner;
44
+ tokenStore?: TokenStore;
45
+ feeVerifier?: FeeVerifierPort;
46
+ runtimeAvailability?: RuntimeAvailabilityPort;
47
+ dataStorage?: DataStoragePort;
32
48
  getTunnelStatus?: HealthDeps["getTunnelStatus"];
33
49
  }
34
50
  export declare function createApp(deps: AppDeps): Hono;
package/dist/app.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAyK7C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qDAAqD,CAAC;AACxF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yDAAyD,CAAC;AACvG,OAAO,KAAK,EACV,4BAA4B,EAC5B,aAAa,EACd,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAalE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,uBAAuB,EACxB,MAAM,6CAA6C,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC1D,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,4BAA4B,GAAG;QAAE,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChE,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,eAAe,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAChC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAwM7C"}
package/dist/app.js CHANGED
@@ -7,23 +7,16 @@ import { grantsRoutes } from "./routes/grants.js";
7
7
  import { accessLogsRoutes } from "./routes/access-logs.js";
8
8
  import { syncRoutes } from "./routes/sync.js";
9
9
  import { uiConfigRoutes } from "./routes/ui-config.js";
10
+ import { uiRegistrationRoutes } from "./routes/ui-registration.js";
10
11
  import { uiRoute } from "./routes/ui.js";
11
- import { mcpRoute } from "./routes/mcp.js";
12
- import { OAuthProvider } from "./oauth/provider.js";
13
- import { oauthRoutes } from "./oauth/routes.js";
12
+ import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
13
+ import { oauthTokenRoutes } from "./routes/oauth-token.js";
14
14
  export function createApp(deps) {
15
15
  const app = new Hono();
16
16
  // CORS — allow all origins for browser-based clients
17
17
  app.use("*", cors({
18
18
  origin: "*",
19
- allowHeaders: [
20
- "Content-Type",
21
- "Authorization",
22
- "mcp-session-id",
23
- "Last-Event-ID",
24
- "mcp-protocol-version",
25
- ],
26
- exposeHeaders: ["mcp-session-id", "mcp-protocol-version"],
19
+ allowHeaders: ["Content-Type", "Authorization"],
27
20
  allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
28
21
  maxAge: 86400,
29
22
  }));
@@ -31,11 +24,14 @@ export function createApp(deps) {
31
24
  app.route("/", healthRoute({
32
25
  version: deps.version,
33
26
  startedAt: deps.startedAt,
27
+ serverOrigin: deps.serverOrigin,
34
28
  serverOwner: deps.serverOwner,
35
29
  identity: deps.identity,
36
30
  gateway: deps.gateway,
31
+ gatewayConfig: deps.gatewayConfig,
37
32
  logger: deps.logger,
38
33
  getTunnelStatus: deps.getTunnelStatus,
34
+ runtimeAvailability: deps.runtimeAvailability,
39
35
  }));
40
36
  // Mount data routes (ingest + read + delete)
41
37
  app.route("/v1/data", dataRoutes({
@@ -47,16 +43,26 @@ export function createApp(deps) {
47
43
  gateway: deps.gateway,
48
44
  accessLogWriter: deps.accessLogWriter,
49
45
  devToken: deps.devToken,
46
+ accessToken: deps.accessToken,
47
+ tokenStore: deps.tokenStore,
50
48
  syncManager: deps.syncManager ?? null,
49
+ feeVerifier: deps.feeVerifier,
50
+ runtimeAvailability: deps.runtimeAvailability,
51
+ dataStorage: deps.dataStorage,
52
+ mountPath: "/v1/data",
51
53
  }));
52
54
  // Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
53
55
  app.route("/v1/grants", grantsRoutes({
54
56
  logger: deps.logger,
55
57
  gateway: deps.gateway,
58
+ gatewayConfig: deps.gatewayConfig,
56
59
  serverOwner: deps.serverOwner,
57
60
  serverOrigin: deps.serverOrigin,
58
61
  devToken: deps.devToken,
62
+ accessToken: deps.accessToken,
63
+ tokenStore: deps.tokenStore,
59
64
  serverSigner: deps.serverSigner,
65
+ mountPath: "/v1/grants",
60
66
  }));
61
67
  // Mount access-logs routes (all owner auth)
62
68
  app.route("/v1/access-logs", accessLogsRoutes({
@@ -64,47 +70,67 @@ export function createApp(deps) {
64
70
  accessLogReader: deps.accessLogReader,
65
71
  serverOrigin: deps.serverOrigin,
66
72
  serverOwner: deps.serverOwner,
73
+ gateway: deps.gateway,
67
74
  devToken: deps.devToken,
75
+ accessToken: deps.accessToken,
76
+ tokenStore: deps.tokenStore,
77
+ mountPath: "/v1/access-logs",
68
78
  }));
69
79
  // Mount sync routes (all owner auth)
70
80
  app.route("/v1/sync", syncRoutes({
71
81
  logger: deps.logger,
72
82
  serverOrigin: deps.serverOrigin,
73
83
  serverOwner: deps.serverOwner,
84
+ gateway: deps.gateway,
74
85
  devToken: deps.devToken,
86
+ accessToken: deps.accessToken,
87
+ tokenStore: deps.tokenStore,
75
88
  syncManager: deps.syncManager ?? null,
89
+ mountPath: "/v1/sync",
76
90
  }));
77
- // Mount MCP endpoint (Model Context Protocol for AI tools)
78
- if (deps.serverOwner) {
79
- const oauthProvider = new OAuthProvider(deps.serverOwner);
80
- // Mount OAuth discovery + auth endpoints at the root
81
- app.route("/", oauthRoutes({
82
- oauthProvider,
83
- serverOwner: deps.serverOwner,
84
- accountPortalOrigin: process.env.ACCOUNT_URL,
91
+ // Mount login flow v2 routes (self-hosted CLI auth, no auth required)
92
+ if (deps.tokenStore) {
93
+ app.route("/auth/device", authDeviceRoutes({
94
+ logger: deps.logger,
85
95
  serverOrigin: deps.serverOrigin,
96
+ localApprovalOrigin: deps.localApprovalOrigin,
97
+ serverOwner: deps.serverOwner,
98
+ tokenStore: deps.tokenStore,
99
+ devToken: deps.devToken,
100
+ accessToken: deps.accessToken,
101
+ allowInteractiveLogin: !deps.cloudMode,
86
102
  }));
87
- app.route("/mcp", mcpRoute({
88
- mcpContext: {
89
- indexManager: deps.indexManager,
90
- hierarchyOptions: deps.hierarchyOptions,
91
- gatewayClient: deps.gateway,
92
- serverOwner: deps.serverOwner,
93
- logger: deps.logger,
94
- },
95
- oauthProvider,
96
- serverOrigin: deps.serverOrigin,
103
+ // RFC 6749 token endpoint. Replaces ad-hoc `/auth/device/token` semantics
104
+ // with a standard OAuth2 surface that supports both the cloud
105
+ // control-plane `client_credentials` grant and the CLI device-code grant.
106
+ app.route("/oauth/token", oauthTokenRoutes({
107
+ logger: deps.logger,
108
+ tokenStore: deps.tokenStore,
109
+ controlPlaneSecret: deps.accessToken,
110
+ deviceSessions: createDeviceSessionLookup(),
97
111
  }));
98
112
  }
99
113
  // Mount dev UI routes when dev token is available
100
114
  if (deps.devToken) {
101
- app.route("/ui", uiRoute({ devToken: deps.devToken }));
115
+ app.route("/ui", uiRoute({
116
+ devToken: deps.devToken,
117
+ psLiteBootstrap: deps.ownerSignature
118
+ ? {
119
+ ownerSignature: deps.ownerSignature,
120
+ config: deps.config,
121
+ }
122
+ : null,
123
+ }));
102
124
  if (deps.configPath) {
103
125
  app.route("/ui/api", uiConfigRoutes({
104
126
  devToken: deps.devToken,
105
127
  configPath: deps.configPath,
106
128
  }));
107
129
  }
130
+ app.route("/ui/api", uiRegistrationRoutes({
131
+ devToken: deps.devToken,
132
+ ownerPrivateKey: deps.ownerPrivateKey,
133
+ }));
108
134
  }
109
135
  // Global error handler
110
136
  app.onError((err, c) => {
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
2
- import { type Logger } from "@opendatalabs/personal-server-ts-core/logger";
3
- import { type IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
4
- import type { GatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
2
+ import { type Logger } from "./logger/index.js";
3
+ import { type IndexManager } from "./storage/index-manager.js";
4
+ import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
5
5
  import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
6
6
  import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
7
7
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
@@ -21,6 +21,9 @@ export interface ServerContext {
21
21
  syncManager: SyncManager | null;
22
22
  tunnelManager?: TunnelManager;
23
23
  tunnelUrl?: string;
24
+ localApprovalPort?: number;
25
+ getLocalApprovalOrigin: () => string | undefined;
26
+ setLocalApprovalOrigin: (origin?: string) => void;
24
27
  devToken?: string;
25
28
  startBackgroundServices: () => Promise<void>;
26
29
  cleanup: () => Promise<void>;
@@ -30,6 +33,8 @@ export interface CreateServerOptions {
30
33
  /** @deprecated Use rootPath instead. */
31
34
  serverDir?: string;
32
35
  dataDir?: string;
36
+ ownerSignature?: `0x${string}`;
37
+ gatewayClient?: GatewayClient;
33
38
  }
34
39
  export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
35
40
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAKlF,OAAO,EAEL,KAAK,MAAM,EACZ,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qDAAqD,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA6QxB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;CAC/B;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA4UxB"}
package/dist/bootstrap.js CHANGED
@@ -4,19 +4,43 @@ import { randomUUID } from "node:crypto";
4
4
  import { join } from "node:path";
5
5
  const require = createRequire(import.meta.url);
6
6
  const pkg = require("../package.json");
7
- import { DEFAULT_ROOT_PATH, resolveRootPath, } from "@opendatalabs/personal-server-ts-core/config";
8
- import { createLogger, } from "@opendatalabs/personal-server-ts-core/logger";
9
- import { initializeDatabase, createIndexManager, } from "@opendatalabs/personal-server-ts-core/storage/index";
10
- import { createGatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
11
- import { createAccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
12
- import { createAccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
13
- import { deriveMasterKey, recoverServerOwner, loadOrCreateServerAccount, } from "@opendatalabs/personal-server-ts-core/keys";
14
- import { createServerSigner, createRequestSigner, } from "@opendatalabs/personal-server-ts-core/signing";
15
- import { createSyncCursor, createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
16
- import { createVanaStorageAdapter } from "@opendatalabs/personal-server-ts-core/storage/adapters";
7
+ import { DEFAULT_ROOT_PATH, resolveRootPath } from "./config/index.js";
8
+ import { createLogger } from "./logger/index.js";
9
+ import { initializeDatabase } from "./storage/index-schema.js";
10
+ import { createIndexManager, } from "./storage/index-manager.js";
11
+ import { createGatewayClient } from "@opendatalabs/vana-sdk/node";
12
+ import { createAccessLogWriter } from "./logging/access-log.js";
13
+ import { createAccessLogReader } from "./logging/access-reader.js";
14
+ import { deriveMasterKey, recoverServerOwner, } from "@opendatalabs/vana-sdk/node";
15
+ import { loadOrCreateServerAccount } from "./keys/server-account.js";
16
+ import { createServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
17
+ import { createSyncCursor } from "./sync-cursor.js";
18
+ import { createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
19
+ import { createVanaSyncStorageAdapter } from "@opendatalabs/personal-server-ts-core/storage/adapters";
17
20
  import { createApp } from "./app.js";
18
21
  import { generateDevToken } from "./dev-token.js";
22
+ import { migrateLocalState } from "./migrations/local-state.js";
23
+ import { createTokenStore } from "./token-store.js";
19
24
  import { TunnelManager, ensureFrpcBinary } from "./tunnel/index.js";
25
+ import { createNodeDataStorage } from "./storage/node-data-storage.js";
26
+ const DEFAULT_LOCAL_APPROVAL_PORT = 34127;
27
+ function resolveLocalApprovalPort(serverPort) {
28
+ const raw = process.env.LOCAL_AUTH_PORT;
29
+ if (raw !== undefined) {
30
+ const parsed = Number(raw);
31
+ if (Number.isInteger(parsed) &&
32
+ parsed >= 1 &&
33
+ parsed <= 65535 &&
34
+ parsed !== serverPort) {
35
+ return parsed;
36
+ }
37
+ }
38
+ const adjacentPort = serverPort + 1;
39
+ if (adjacentPort <= 65535) {
40
+ return adjacentPort;
41
+ }
42
+ return DEFAULT_LOCAL_APPROVAL_PORT;
43
+ }
20
44
  export async function createServer(config, options) {
21
45
  const logger = createLogger(config.logging);
22
46
  const startedAt = new Date();
@@ -24,14 +48,26 @@ export async function createServer(config, options) {
24
48
  const dataDir = options?.dataDir ?? join(storageRoot, "data");
25
49
  const indexPath = join(storageRoot, "index.db");
26
50
  const configPath = join(storageRoot, "config.json");
51
+ const syncCursorPath = join(storageRoot, "sync-cursor.json");
52
+ const tokensPath = join(storageRoot, "tokens.json");
27
53
  await mkdir(storageRoot, { recursive: true });
28
54
  await mkdir(dataDir, { recursive: true });
29
55
  const db = initializeDatabase(indexPath);
56
+ await migrateLocalState({
57
+ storageRoot,
58
+ dataDir,
59
+ configPath,
60
+ syncCursorPath,
61
+ tokensPath,
62
+ });
30
63
  const indexManager = createIndexManager(db);
31
64
  const hierarchyOptions = { dataDir };
32
- const gatewayClient = createGatewayClient(config.gateway.url);
65
+ const dataStorage = createNodeDataStorage({ indexManager, hierarchyOptions });
66
+ const gatewayClient = options?.gatewayClient ?? createGatewayClient(config.gateway.url);
33
67
  // Derive server owner from VANA_MASTER_KEY_SIGNATURE env var
34
- const masterKeySignature = process.env.VANA_MASTER_KEY_SIGNATURE;
68
+ const masterKeySignature = options?.ownerSignature ??
69
+ process.env.VANA_MASTER_KEY_SIGNATURE;
70
+ const ownerPrivateKey = process.env.VANA_OWNER_PRIVATE_KEY;
35
71
  let serverOwner;
36
72
  let serverAccount;
37
73
  let serverSigner;
@@ -58,6 +94,30 @@ export async function createServer(config, options) {
58
94
  else {
59
95
  logger.warn("VANA_MASTER_KEY_SIGNATURE not set — owner-restricted endpoints will return 500");
60
96
  }
97
+ // Resolve PS_ACCESS_TOKEN for cloud control-plane / bootstrap auth.
98
+ // This is not the per-login CLI session token returned to users.
99
+ let accessToken = process.env.PS_ACCESS_TOKEN;
100
+ if (!accessToken && process.env.CLOUD_MODE === "true") {
101
+ try {
102
+ const metadataRes = await fetch("http://metadata.google.internal/computeMetadata/v1/instance/attributes/ps-access-token", {
103
+ headers: { "Metadata-Flavor": "Google" },
104
+ signal: AbortSignal.timeout(2000),
105
+ });
106
+ if (metadataRes.ok) {
107
+ const token = (await metadataRes.text()).trim();
108
+ if (token.length > 0) {
109
+ accessToken = token;
110
+ logger.info("PS control-plane token loaded from instance metadata");
111
+ }
112
+ }
113
+ }
114
+ catch {
115
+ logger.debug("Could not read PS control-plane token from instance metadata");
116
+ }
117
+ }
118
+ if (accessToken) {
119
+ logger.info("PS_ACCESS_TOKEN configured — control-plane bearer auth enabled");
120
+ }
61
121
  // Download frpc binary eagerly (auth-independent) so it's ready when the user signs in
62
122
  let frpcBinaryPath = "";
63
123
  if (config.tunnel.enabled) {
@@ -78,19 +138,16 @@ export async function createServer(config, options) {
78
138
  serverAccount &&
79
139
  serverSigner) {
80
140
  const masterKey = deriveMasterKey(masterKeySignature);
81
- const vanaConfig = config.storage.config.vana ?? {
82
- apiUrl: "https://storage.vana.com",
83
- };
84
- const requestSigner = createRequestSigner(serverAccount);
85
- const storageAdapter = createVanaStorageAdapter({
86
- apiUrl: vanaConfig.apiUrl,
87
- ownerAddress: serverOwner,
88
- signer: requestSigner,
141
+ const storageAdapter = createVanaSyncStorageAdapter({
142
+ config,
143
+ serverOwner,
144
+ serverAccount,
145
+ });
146
+ const cursor = createSyncCursor(syncCursorPath, {
147
+ legacyConfigPath: configPath,
89
148
  });
90
- const cursor = createSyncCursor(configPath);
91
149
  const uploadDeps = {
92
- indexManager,
93
- hierarchyOptions,
150
+ storage: dataStorage,
94
151
  storageAdapter,
95
152
  gateway: gatewayClient,
96
153
  signer: serverSigner,
@@ -99,8 +156,7 @@ export async function createServer(config, options) {
99
156
  logger,
100
157
  };
101
158
  const downloadDeps = {
102
- indexManager,
103
- hierarchyOptions,
159
+ storage: dataStorage,
104
160
  storageAdapter,
105
161
  gateway: gatewayClient,
106
162
  cursor,
@@ -121,8 +177,15 @@ export async function createServer(config, options) {
121
177
  const accessLogReader = createAccessLogReader(logsDir);
122
178
  // Generate ephemeral dev token when devUi is enabled
123
179
  const devToken = config.devUi.enabled ? generateDevToken() : undefined;
180
+ // Token store for /auth/device flow (self-hosted CLI auth)
181
+ const tokenStore = createTokenStore(tokensPath, logger);
182
+ const cloudMode = process.env.CLOUD_MODE === "true";
183
+ const localApprovalPort = cloudMode
184
+ ? undefined
185
+ : resolveLocalApprovalPort(config.server.port);
124
186
  // Mutable origin — starts with config value, updated when tunnel connects
125
187
  let effectiveOrigin = config.server.origin;
188
+ let effectiveLocalApprovalOrigin;
126
189
  // Mutable tunnelManager — set when tunnel starts in background
127
190
  let tunnelManager;
128
191
  const app = createApp({
@@ -132,12 +195,21 @@ export async function createServer(config, options) {
132
195
  indexManager,
133
196
  hierarchyOptions,
134
197
  serverOrigin: () => effectiveOrigin,
198
+ localApprovalOrigin: () => effectiveLocalApprovalOrigin,
135
199
  serverOwner,
136
200
  identity,
137
201
  gateway: gatewayClient,
202
+ gatewayConfig: config.gateway,
203
+ config,
138
204
  accessLogWriter,
139
205
  accessLogReader,
206
+ dataStorage,
207
+ cloudMode,
140
208
  devToken,
209
+ ownerSignature: masterKeySignature,
210
+ ownerPrivateKey,
211
+ accessToken,
212
+ tokenStore,
141
213
  configPath,
142
214
  syncManager,
143
215
  serverSigner,
@@ -165,6 +237,11 @@ export async function createServer(config, options) {
165
237
  syncManager,
166
238
  tunnelManager,
167
239
  tunnelUrl: undefined,
240
+ localApprovalPort,
241
+ getLocalApprovalOrigin: () => effectiveLocalApprovalOrigin,
242
+ setLocalApprovalOrigin: (origin) => {
243
+ effectiveLocalApprovalOrigin = origin;
244
+ },
168
245
  devToken,
169
246
  startBackgroundServices: async () => {
170
247
  // --- Gateway registration check (slow: HTTP call) ---