@opendatalabs/personal-server-ts-server 0.0.1-canary.0d0705b → 0.0.1-canary.12dc331

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 (80) hide show
  1. package/dist/app.d.ts +9 -1
  2. package/dist/app.d.ts.map +1 -1
  3. package/dist/app.js +28 -1
  4. package/dist/app.js.map +1 -1
  5. package/dist/bootstrap.d.ts +7 -1
  6. package/dist/bootstrap.d.ts.map +1 -1
  7. package/dist/bootstrap.js +138 -34
  8. package/dist/bootstrap.js.map +1 -1
  9. package/dist/hono-context.d.ts +14 -0
  10. package/dist/hono-context.d.ts.map +1 -0
  11. package/dist/hono-context.js +2 -0
  12. package/dist/hono-context.js.map +1 -0
  13. package/dist/index.js +29 -3
  14. package/dist/index.js.map +1 -1
  15. package/dist/middleware/access-log.js.map +1 -1
  16. package/dist/middleware/builder-check.d.ts +1 -1
  17. package/dist/middleware/builder-check.d.ts.map +1 -1
  18. package/dist/middleware/builder-check.js +7 -2
  19. package/dist/middleware/builder-check.js.map +1 -1
  20. package/dist/middleware/grant-check.js +1 -1
  21. package/dist/middleware/grant-check.js.map +1 -1
  22. package/dist/middleware/owner-check.js +1 -1
  23. package/dist/middleware/owner-check.js.map +1 -1
  24. package/dist/middleware/web3-auth.d.ts +15 -1
  25. package/dist/middleware/web3-auth.d.ts.map +1 -1
  26. package/dist/middleware/web3-auth.js +79 -11
  27. package/dist/middleware/web3-auth.js.map +1 -1
  28. package/dist/routes/access-logs.d.ts +3 -1
  29. package/dist/routes/access-logs.d.ts.map +1 -1
  30. package/dist/routes/access-logs.js +1 -0
  31. package/dist/routes/access-logs.js.map +1 -1
  32. package/dist/routes/auth-device.d.ts +37 -0
  33. package/dist/routes/auth-device.d.ts.map +1 -0
  34. package/dist/routes/auth-device.js +601 -0
  35. package/dist/routes/auth-device.js.map +1 -0
  36. package/dist/routes/data.d.ts +3 -1
  37. package/dist/routes/data.d.ts.map +1 -1
  38. package/dist/routes/data.js +4 -4
  39. package/dist/routes/data.js.map +1 -1
  40. package/dist/routes/grants.d.ts +6 -3
  41. package/dist/routes/grants.d.ts.map +1 -1
  42. package/dist/routes/grants.js +89 -2
  43. package/dist/routes/grants.js.map +1 -1
  44. package/dist/routes/health.d.ts +2 -0
  45. package/dist/routes/health.d.ts.map +1 -1
  46. package/dist/routes/health.js +2 -0
  47. package/dist/routes/health.js.map +1 -1
  48. package/dist/routes/sync.d.ts +3 -1
  49. package/dist/routes/sync.d.ts.map +1 -1
  50. package/dist/routes/sync.js +1 -0
  51. package/dist/routes/sync.js.map +1 -1
  52. package/dist/token-store.d.ts +22 -0
  53. package/dist/token-store.d.ts.map +1 -0
  54. package/dist/token-store.js +119 -0
  55. package/dist/token-store.js.map +1 -0
  56. package/dist/tunnel/auth.d.ts +46 -0
  57. package/dist/tunnel/auth.d.ts.map +1 -0
  58. package/dist/tunnel/auth.js +46 -0
  59. package/dist/tunnel/auth.js.map +1 -0
  60. package/dist/tunnel/binary.d.ts +57 -0
  61. package/dist/tunnel/binary.d.ts.map +1 -0
  62. package/dist/tunnel/binary.js +180 -0
  63. package/dist/tunnel/binary.js.map +1 -0
  64. package/dist/tunnel/config.d.ts +27 -0
  65. package/dist/tunnel/config.d.ts.map +1 -0
  66. package/dist/tunnel/config.js +38 -0
  67. package/dist/tunnel/config.js.map +1 -0
  68. package/dist/tunnel/index.d.ts +13 -0
  69. package/dist/tunnel/index.d.ts.map +1 -0
  70. package/dist/tunnel/index.js +9 -0
  71. package/dist/tunnel/index.js.map +1 -0
  72. package/dist/tunnel/manager.d.ts +88 -0
  73. package/dist/tunnel/manager.d.ts.map +1 -0
  74. package/dist/tunnel/manager.js +279 -0
  75. package/dist/tunnel/manager.js.map +1 -0
  76. package/dist/tunnel/verify.d.ts +28 -0
  77. package/dist/tunnel/verify.d.ts.map +1 -0
  78. package/dist/tunnel/verify.js +46 -0
  79. package/dist/tunnel/verify.js.map +1 -0
  80. package/package.json +4 -4
package/dist/app.d.ts CHANGED
@@ -4,7 +4,10 @@ import type { HierarchyManagerOptions } from "@opendatalabs/personal-server-ts-c
4
4
  import type { GatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
5
5
  import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
6
6
  import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
7
+ import { type HealthDeps } from "./routes/health.js";
7
8
  import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
9
+ import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
10
+ import type { TokenStore } from "./token-store.js";
8
11
  import type { Logger } from "pino";
9
12
  export interface IdentityInfo {
10
13
  address: `0x${string}`;
@@ -17,15 +20,20 @@ export interface AppDeps {
17
20
  startedAt: Date;
18
21
  indexManager: IndexManager;
19
22
  hierarchyOptions: HierarchyManagerOptions;
20
- serverOrigin: string;
23
+ serverOrigin: string | (() => string);
21
24
  serverOwner?: `0x${string}`;
22
25
  identity?: IdentityInfo;
23
26
  gateway: GatewayClient;
24
27
  accessLogWriter: AccessLogWriter;
25
28
  accessLogReader: AccessLogReader;
29
+ cloudMode?: boolean;
26
30
  devToken?: string;
31
+ accessToken?: string;
27
32
  configPath?: string;
28
33
  syncManager?: SyncManager | null;
34
+ serverSigner?: ServerSigner;
35
+ tokenStore?: TokenStore;
36
+ getTunnelStatus?: HealthDeps["getTunnelStatus"];
29
37
  }
30
38
  export declare function createApp(deps: AppDeps): Hono;
31
39
  //# sourceMappingURL=app.d.ts.map
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;AAE5B,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;AAQnG,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,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,CAAC;IACrB,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;CAClC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAsH7C"}
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;AAQlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,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,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,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,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,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAuJ7C"}
package/dist/app.js CHANGED
@@ -1,4 +1,5 @@
1
1
  import { Hono } from "hono";
2
+ import { cors } from "hono/cors";
2
3
  import { ProtocolError } from "@opendatalabs/personal-server-ts-core/errors";
3
4
  import { healthRoute } from "./routes/health.js";
4
5
  import { dataRoutes } from "./routes/data.js";
@@ -7,8 +8,16 @@ import { accessLogsRoutes } from "./routes/access-logs.js";
7
8
  import { syncRoutes } from "./routes/sync.js";
8
9
  import { uiConfigRoutes } from "./routes/ui-config.js";
9
10
  import { uiRoute } from "./routes/ui.js";
11
+ import { authDeviceRoutes } from "./routes/auth-device.js";
10
12
  export function createApp(deps) {
11
13
  const app = new Hono();
14
+ // CORS — allow all origins for browser-based clients
15
+ app.use("*", cors({
16
+ origin: "*",
17
+ allowHeaders: ["Content-Type", "Authorization"],
18
+ allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
19
+ maxAge: 86400,
20
+ }));
12
21
  // Mount health route
13
22
  app.route("/", healthRoute({
14
23
  version: deps.version,
@@ -17,6 +26,7 @@ export function createApp(deps) {
17
26
  identity: deps.identity,
18
27
  gateway: deps.gateway,
19
28
  logger: deps.logger,
29
+ getTunnelStatus: deps.getTunnelStatus,
20
30
  }));
21
31
  // Mount data routes (ingest + read + delete)
22
32
  app.route("/v1/data", dataRoutes({
@@ -28,15 +38,18 @@ export function createApp(deps) {
28
38
  gateway: deps.gateway,
29
39
  accessLogWriter: deps.accessLogWriter,
30
40
  devToken: deps.devToken,
41
+ tokenStore: deps.tokenStore,
31
42
  syncManager: deps.syncManager ?? null,
32
43
  }));
33
- // Mount grants routes (POST /verify is public, GET / needs owner auth)
44
+ // Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
34
45
  app.route("/v1/grants", grantsRoutes({
35
46
  logger: deps.logger,
36
47
  gateway: deps.gateway,
37
48
  serverOwner: deps.serverOwner,
38
49
  serverOrigin: deps.serverOrigin,
39
50
  devToken: deps.devToken,
51
+ tokenStore: deps.tokenStore,
52
+ serverSigner: deps.serverSigner,
40
53
  }));
41
54
  // Mount access-logs routes (all owner auth)
42
55
  app.route("/v1/access-logs", accessLogsRoutes({
@@ -45,6 +58,7 @@ export function createApp(deps) {
45
58
  serverOrigin: deps.serverOrigin,
46
59
  serverOwner: deps.serverOwner,
47
60
  devToken: deps.devToken,
61
+ tokenStore: deps.tokenStore,
48
62
  }));
49
63
  // Mount sync routes (all owner auth)
50
64
  app.route("/v1/sync", syncRoutes({
@@ -52,8 +66,21 @@ export function createApp(deps) {
52
66
  serverOrigin: deps.serverOrigin,
53
67
  serverOwner: deps.serverOwner,
54
68
  devToken: deps.devToken,
69
+ tokenStore: deps.tokenStore,
55
70
  syncManager: deps.syncManager ?? null,
56
71
  }));
72
+ // Mount login flow v2 routes (self-hosted CLI auth, no auth required)
73
+ if (deps.tokenStore) {
74
+ app.route("/auth/device", authDeviceRoutes({
75
+ logger: deps.logger,
76
+ serverOrigin: deps.serverOrigin,
77
+ serverOwner: deps.serverOwner,
78
+ tokenStore: deps.tokenStore,
79
+ devToken: deps.devToken,
80
+ accessToken: deps.accessToken,
81
+ allowInteractiveLogin: !deps.cloudMode,
82
+ }));
83
+ }
57
84
  // Mount dev UI routes when dev token is available
58
85
  if (deps.devToken) {
59
86
  app.route("/ui", uiRoute({ devToken: deps.devToken }));
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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"}
@@ -7,6 +7,7 @@ import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
7
7
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
8
8
  import { type SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
9
9
  import type { Hono } from "hono";
10
+ import { TunnelManager } from "./tunnel/index.js";
10
11
  export interface ServerContext {
11
12
  app: Hono;
12
13
  logger: Logger;
@@ -18,10 +19,15 @@ export interface ServerContext {
18
19
  serverAccount?: ServerAccount;
19
20
  serverSigner?: ServerSigner;
20
21
  syncManager: SyncManager | null;
22
+ tunnelManager?: TunnelManager;
23
+ tunnelUrl?: string;
21
24
  devToken?: string;
22
- cleanup: () => void;
25
+ startBackgroundServices: () => Promise<void>;
26
+ cleanup: () => Promise<void>;
23
27
  }
24
28
  export interface CreateServerOptions {
29
+ rootPath?: string;
30
+ /** @deprecated Use rootPath instead. */
25
31
  serverDir?: string;
26
32
  dataDir?: string;
27
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AACA,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;AAIjC,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,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,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,CAkLxB"}
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;AAIjC,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,CAmTxB"}
package/dist/bootstrap.js CHANGED
@@ -1,5 +1,10 @@
1
+ import { mkdir } from "node:fs/promises";
2
+ import { createRequire } from "node:module";
3
+ import { randomUUID } from "node:crypto";
1
4
  import { join } from "node:path";
2
- import { DEFAULT_SERVER_DIR, DEFAULT_DATA_DIR, } from "@opendatalabs/personal-server-ts-core/config";
5
+ const require = createRequire(import.meta.url);
6
+ const pkg = require("../package.json");
7
+ import { DEFAULT_ROOT_PATH, resolveRootPath, } from "@opendatalabs/personal-server-ts-core/config";
3
8
  import { createLogger, } from "@opendatalabs/personal-server-ts-core/logger";
4
9
  import { initializeDatabase, createIndexManager, } from "@opendatalabs/personal-server-ts-core/storage/index";
5
10
  import { createGatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
@@ -11,18 +16,21 @@ import { createSyncCursor, createSyncManager, } from "@opendatalabs/personal-ser
11
16
  import { createVanaStorageAdapter } from "@opendatalabs/personal-server-ts-core/storage/adapters";
12
17
  import { createApp } from "./app.js";
13
18
  import { generateDevToken } from "./dev-token.js";
19
+ import { createTokenStore } from "./token-store.js";
20
+ import { TunnelManager, ensureFrpcBinary } from "./tunnel/index.js";
14
21
  export async function createServer(config, options) {
15
22
  const logger = createLogger(config.logging);
16
23
  const startedAt = new Date();
17
- const serverDir = options?.serverDir ?? DEFAULT_SERVER_DIR;
18
- const dataDir = options?.dataDir ?? DEFAULT_DATA_DIR;
19
- const indexPath = join(serverDir, "index.db");
20
- const configPath = join(serverDir, "config.json");
24
+ const storageRoot = resolveRootPath(options?.rootPath ?? options?.serverDir ?? DEFAULT_ROOT_PATH);
25
+ const dataDir = options?.dataDir ?? join(storageRoot, "data");
26
+ const indexPath = join(storageRoot, "index.db");
27
+ const configPath = join(storageRoot, "config.json");
28
+ await mkdir(storageRoot, { recursive: true });
29
+ await mkdir(dataDir, { recursive: true });
21
30
  const db = initializeDatabase(indexPath);
22
31
  const indexManager = createIndexManager(db);
23
32
  const hierarchyOptions = { dataDir };
24
33
  const gatewayClient = createGatewayClient(config.gateway.url);
25
- const serverOrigin = config.server.origin;
26
34
  // Derive server owner from VANA_MASTER_KEY_SIGNATURE env var
27
35
  const masterKeySignature = process.env.VANA_MASTER_KEY_SIGNATURE;
28
36
  let serverOwner;
@@ -34,40 +42,59 @@ export async function createServer(config, options) {
34
42
  deriveMasterKey(masterKeySignature); // validate signature format
35
43
  logger.info({ owner: serverOwner }, "Server owner derived from master key");
36
44
  // Load or create server keypair from disk
37
- const keyPath = join(serverDir, "key.json");
45
+ const keyPath = join(storageRoot, "key.json");
38
46
  serverAccount = loadOrCreateServerAccount(keyPath);
39
47
  logger.info({ owner: serverOwner, serverAddress: serverAccount.address }, "Server signing account loaded");
40
48
  serverSigner = createServerSigner(serverAccount, {
41
49
  chainId: config.gateway.chainId,
42
50
  contracts: config.gateway.contracts,
43
51
  });
44
- // Check registration (Data Connect handles actual registration)
45
- let serverId = null;
46
- try {
47
- const serverInfo = await gatewayClient.getServer(serverAccount.address);
48
- serverId = serverInfo?.id ?? null;
49
- }
50
- catch {
51
- // Gateway unreachable — assume not registered
52
- }
53
- if (serverId) {
54
- logger.info("Server registered with gateway — signing delegation active");
55
- }
56
- else {
57
- logger.warn({
58
- serverAddress: serverAccount.address,
59
- publicKey: serverAccount.publicKey,
60
- }, "Server not registered. Register personal server with the gateway to enable delegation.");
61
- }
52
+ // Identity starts with serverId=null; background services will populate it
62
53
  identity = {
63
54
  address: serverAccount.address,
64
55
  publicKey: serverAccount.publicKey,
65
- serverId,
56
+ serverId: null,
66
57
  };
67
58
  }
68
59
  else {
69
60
  logger.warn("VANA_MASTER_KEY_SIGNATURE not set — owner-restricted endpoints will return 500");
70
61
  }
62
+ // Resolve PS_ACCESS_TOKEN for cloud control-plane / bootstrap auth.
63
+ // This is not the per-login CLI session token returned to users.
64
+ let accessToken = process.env.PS_ACCESS_TOKEN;
65
+ if (!accessToken && process.env.CLOUD_MODE === "true") {
66
+ try {
67
+ const metadataRes = await fetch("http://metadata.google.internal/computeMetadata/v1/instance/attributes/ps-access-token", {
68
+ headers: { "Metadata-Flavor": "Google" },
69
+ signal: AbortSignal.timeout(2000),
70
+ });
71
+ if (metadataRes.ok) {
72
+ const token = (await metadataRes.text()).trim();
73
+ if (token.length > 0) {
74
+ accessToken = token;
75
+ logger.info("PS control-plane token loaded from instance metadata");
76
+ }
77
+ }
78
+ }
79
+ catch {
80
+ logger.debug("Could not read PS control-plane token from instance metadata");
81
+ }
82
+ }
83
+ if (accessToken) {
84
+ logger.info("PS_ACCESS_TOKEN configured — control-plane bearer auth enabled");
85
+ }
86
+ // Download frpc binary eagerly (auth-independent) so it's ready when the user signs in
87
+ let frpcBinaryPath = "";
88
+ if (config.tunnel.enabled) {
89
+ try {
90
+ frpcBinaryPath = await ensureFrpcBinary(storageRoot, {
91
+ log: (msg) => logger.info(msg),
92
+ });
93
+ }
94
+ catch (err) {
95
+ logger.warn({ err }, "Failed to download frpc binary - tunnel disabled");
96
+ }
97
+ }
71
98
  // --- Sync engine setup ---
72
99
  let syncManager = null;
73
100
  if (config.sync.enabled &&
@@ -85,8 +112,7 @@ export async function createServer(config, options) {
85
112
  ownerAddress: serverOwner,
86
113
  signer: requestSigner,
87
114
  });
88
- const configPath_ = join(serverDir, "server.json");
89
- const cursor = createSyncCursor(configPath_);
115
+ const cursor = createSyncCursor(configPath);
90
116
  const uploadDeps = {
91
117
  indexManager,
92
118
  hierarchyOptions,
@@ -114,34 +140,50 @@ export async function createServer(config, options) {
114
140
  else if (config.sync.enabled) {
115
141
  logger.warn("Sync enabled in config but VANA_MASTER_KEY_SIGNATURE not set — sync disabled");
116
142
  }
117
- const logsDir = join(serverDir, "logs");
143
+ const logsDir = join(storageRoot, "logs");
144
+ await mkdir(logsDir, { recursive: true });
118
145
  const accessLogWriter = createAccessLogWriter(logsDir);
119
146
  const accessLogReader = createAccessLogReader(logsDir);
120
147
  // Generate ephemeral dev token when devUi is enabled
121
148
  const devToken = config.devUi.enabled ? generateDevToken() : undefined;
149
+ // Token store for /auth/device flow (self-hosted CLI auth)
150
+ const tokensPath = join(storageRoot, "tokens.json");
151
+ const tokenStore = createTokenStore(tokensPath, logger);
152
+ // Mutable origin — starts with config value, updated when tunnel connects
153
+ let effectiveOrigin = config.server.origin;
154
+ // Mutable tunnelManager — set when tunnel starts in background
155
+ let tunnelManager;
122
156
  const app = createApp({
123
157
  logger,
124
- version: "0.0.1",
158
+ version: pkg.version,
125
159
  startedAt,
126
160
  indexManager,
127
161
  hierarchyOptions,
128
- serverOrigin,
162
+ serverOrigin: () => effectiveOrigin,
129
163
  serverOwner,
130
164
  identity,
131
165
  gateway: gatewayClient,
132
166
  accessLogWriter,
133
167
  accessLogReader,
168
+ cloudMode: process.env.CLOUD_MODE === "true",
134
169
  devToken,
170
+ accessToken,
171
+ tokenStore,
135
172
  configPath,
136
173
  syncManager,
174
+ serverSigner,
175
+ getTunnelStatus: () => tunnelManager?.getStatus() ?? null,
137
176
  });
138
- const cleanup = () => {
177
+ const cleanup = async () => {
178
+ if (tunnelManager) {
179
+ await tunnelManager.stop();
180
+ }
139
181
  if (syncManager) {
140
- syncManager.stop();
182
+ await syncManager.stop();
141
183
  }
142
184
  indexManager.close();
143
185
  };
144
- return {
186
+ const context = {
145
187
  app,
146
188
  logger,
147
189
  config,
@@ -152,8 +194,70 @@ export async function createServer(config, options) {
152
194
  serverAccount,
153
195
  serverSigner,
154
196
  syncManager,
197
+ tunnelManager,
198
+ tunnelUrl: undefined,
155
199
  devToken,
200
+ startBackgroundServices: async () => {
201
+ // --- Gateway registration check (slow: HTTP call) ---
202
+ if (serverAccount && identity) {
203
+ try {
204
+ const serverInfo = await gatewayClient.getServer(serverAccount.address);
205
+ identity.serverId = serverInfo?.id ?? null;
206
+ }
207
+ catch {
208
+ // Gateway unreachable — assume not registered
209
+ }
210
+ if (identity.serverId) {
211
+ logger.info("Server registered with gateway — signing delegation active");
212
+ }
213
+ else {
214
+ logger.warn({
215
+ serverAddress: serverAccount.address,
216
+ publicKey: serverAccount.publicKey,
217
+ }, "Server not registered. Register personal server with the gateway to enable delegation.");
218
+ }
219
+ }
220
+ // --- Tunnel setup (slow: subprocess wait) ---
221
+ if (config.tunnel.enabled &&
222
+ serverOwner &&
223
+ serverAccount &&
224
+ frpcBinaryPath) {
225
+ tunnelManager = new TunnelManager(storageRoot);
226
+ context.tunnelManager = tunnelManager;
227
+ const runId = randomUUID();
228
+ try {
229
+ const url = await tunnelManager.start({
230
+ walletAddress: serverAccount.address,
231
+ ownerAddress: serverOwner,
232
+ serverKeypair: serverAccount,
233
+ runId,
234
+ serverAddr: config.tunnel.serverAddr,
235
+ serverPort: config.tunnel.serverPort,
236
+ localPort: config.server.port,
237
+ }, frpcBinaryPath);
238
+ logger.info({ tunnelUrl: url }, "Tunnel established");
239
+ context.tunnelUrl = url;
240
+ effectiveOrigin = url;
241
+ if (!identity?.serverId) {
242
+ logger.warn("Tunnel started but server is not registered with gateway — tunnel will not route traffic. Run: npm run register-server");
243
+ tunnelManager.setVerified(false, "Server not registered with gateway");
244
+ }
245
+ }
246
+ catch (err) {
247
+ logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
248
+ tunnelManager = undefined;
249
+ context.tunnelManager = undefined;
250
+ }
251
+ }
252
+ else if (config.tunnel.enabled && !frpcBinaryPath) {
253
+ logger.warn("frpc binary not available — tunnel disabled");
254
+ }
255
+ else if (config.tunnel.enabled) {
256
+ logger.warn("Tunnel enabled in config but VANA_MASTER_KEY_SIGNATURE not set — tunnel disabled");
257
+ }
258
+ },
156
259
  cleanup,
157
260
  };
261
+ return context;
158
262
  }
159
263
  //# sourceMappingURL=bootstrap.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bootstrap.js","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import "hono";
2
+ import type { GatewayGrantResponse } from "@opendatalabs/personal-server-ts-core/grants";
3
+ import type { AuthMechanism, RequestAuth } from "./middleware/web3-auth.js";
4
+ declare module "hono" {
5
+ interface ContextVariableMap {
6
+ auth: RequestAuth | undefined;
7
+ grant: GatewayGrantResponse | undefined;
8
+ authMechanism: AuthMechanism | undefined;
9
+ isPolicyBypass: boolean | undefined;
10
+ devBypass: boolean | undefined;
11
+ }
12
+ }
13
+ export {};
14
+ //# sourceMappingURL=hono-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-context.d.ts","sourceRoot":"","sources":["../src/hono-context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,8CAA8C,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAU,kBAAkB;QAC1B,IAAI,EAAE,WAAW,GAAG,SAAS,CAAC;QAC9B,KAAK,EAAE,oBAAoB,GAAG,SAAS,CAAC;QACxC,aAAa,EAAE,aAAa,GAAG,SAAS,CAAC;QACzC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;QACpC,SAAS,EAAE,OAAO,GAAG,SAAS,CAAC;KAChC;CACF;AAED,OAAO,EAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ import "hono";
2
+ //# sourceMappingURL=hono-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hono-context.js","sourceRoot":"","sources":["../src/hono-context.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,CAAC"}
package/dist/index.js CHANGED
@@ -1,17 +1,43 @@
1
1
  import { serve } from "@hono/node-server";
2
+ import { createRequire } from "node:module";
2
3
  import { loadConfig } from "@opendatalabs/personal-server-ts-core/config";
3
4
  import { createServer } from "./bootstrap.js";
5
+ import { verifyTunnelUrl } from "./tunnel/index.js";
6
+ const require = createRequire(import.meta.url);
7
+ const pkg = require("../package.json");
4
8
  const DRAIN_TIMEOUT_MS = 5_000;
5
9
  async function main() {
6
- const config = await loadConfig();
7
- const { app, logger, devToken } = await createServer(config);
10
+ const rootPath = process.env.PERSONAL_SERVER_ROOT_PATH;
11
+ const config = await loadConfig({ rootPath });
12
+ const context = await createServer(config, { rootPath });
13
+ const { app, logger, devToken } = context;
8
14
  const server = serve({ fetch: app.fetch, port: config.server.port }, (info) => {
9
- logger.info({ port: info.port, version: "0.0.1" }, "Server started");
15
+ logger.info({ port: info.port, version: pkg.version }, "Server started");
10
16
  if (devToken) {
11
17
  logger.info({ url: `http://localhost:${info.port}/ui` }, "Dev UI available");
12
18
  logger.info({ devToken }, "Dev token (ephemeral)");
13
19
  }
14
20
  });
21
+ // Fire-and-forget: gateway check + tunnel connect (slow operations)
22
+ // HTTP server is already listening so POST /v1/data/:scope works immediately
23
+ context.startBackgroundServices().then(() => {
24
+ // Verify tunnel URL is reachable now that both HTTP server and tunnel are up
25
+ const { tunnelManager, tunnelUrl } = context;
26
+ if (tunnelUrl &&
27
+ tunnelManager &&
28
+ tunnelManager.getStatus().status !== "error") {
29
+ logger.info({ tunnelUrl }, "Verifying tunnel URL is reachable...");
30
+ verifyTunnelUrl(tunnelUrl).then((result) => {
31
+ tunnelManager.setVerified(result.reachable, result.error);
32
+ if (result.reachable) {
33
+ logger.info({ tunnelUrl, attempts: result.attempts }, "Tunnel URL verified");
34
+ }
35
+ else {
36
+ logger.warn({ tunnelUrl, attempts: result.attempts, error: result.error }, "Tunnel URL not reachable — server running in local-only mode");
37
+ }
38
+ });
39
+ }
40
+ });
15
41
  function shutdown(signal) {
16
42
  logger.info({ signal }, "Shutdown signal received, draining connections");
17
43
  server.close(() => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,8CAA8C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,gBAAgB,GAAG,KAAK,CAAC;AAE/B,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,KAAK,CAClB,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,EAC9C,CAAC,IAAI,EAAE,EAAE;QACP,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,gBAAgB,CAAC,CAAC;QAErE,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,IAAI,CACT,EAAE,GAAG,EAAE,oBAAoB,IAAI,CAAC,IAAI,KAAK,EAAE,EAC3C,kBAAkB,CACnB,CAAC;YACF,MAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,uBAAuB,CAAC,CAAC;QACrD,CAAC;IACH,CAAC,CACF,CAAC;IAEF,SAAS,QAAQ,CAAC,MAAc;QAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,gDAAgD,CAAC,CAAC;QAE1E,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE;YAChB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAC9B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IACjD,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;AACjD,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;IAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"access-log.js","sourceRoot":"","sources":["../../src/middleware/access-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAuB;IAEvB,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,IAAI,EAAE,CAAC;QAEb,4BAA4B;QAC5B,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAA6B,CAAC;QACvD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAqC,CAAC;QAEjE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,KAAK,EAAE,UAAU,EAAE;gBACnB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,OAAO,EAAE,IAAI,CAAC,MAAM;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EACP,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;oBAC/B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBACzB,SAAS;gBACX,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,SAAS;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"access-log.js","sourceRoot":"","sources":["../../src/middleware/access-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAMzC;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAuB;IAEvB,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,MAAM,IAAI,EAAE,CAAC;QAEb,4BAA4B;QAC5B,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAC9C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAA4B,CAAC;QACtD,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAqC,CAAC;QAEjE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC;QAEhD,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,KAAK,CAAC;gBACjB,KAAK,EAAE,UAAU,EAAE;gBACnB,OAAO,EAAE,KAAK,CAAC,EAAE;gBACjB,OAAO,EAAE,IAAI,CAAC,MAAM;gBACpB,MAAM,EAAE,MAAM;gBACd,KAAK;gBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EACP,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC;oBAC/B,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC;oBACzB,SAAS;gBACX,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,SAAS;aACnD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wDAAwD;QAC1D,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -4,5 +4,5 @@ import type { GatewayClient } from "@opendatalabs/personal-server-ts-core/gatewa
4
4
  * Verifies authenticated signer is a registered builder via Gateway.
5
5
  * Must run AFTER web3-auth middleware.
6
6
  */
7
- export declare function createBuilderCheckMiddleware(gateway: GatewayClient): MiddlewareHandler;
7
+ export declare function createBuilderCheckMiddleware(gateway: GatewayClient, serverOwner?: `0x${string}`): MiddlewareHandler;
8
8
  //# sourceMappingURL=builder-check.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builder-check.d.ts","sourceRoot":"","sources":["../../src/middleware/builder-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAInF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,aAAa,GACrB,iBAAiB,CAyBnB"}
1
+ {"version":3,"file":"builder-check.d.ts","sourceRoot":"","sources":["../../src/middleware/builder-check.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAInF;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,aAAa,EACtB,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,GAC1B,iBAAiB,CAgCnB"}
@@ -3,13 +3,18 @@ import { UnregisteredBuilderError } from "@opendatalabs/personal-server-ts-core/
3
3
  * Verifies authenticated signer is a registered builder via Gateway.
4
4
  * Must run AFTER web3-auth middleware.
5
5
  */
6
- export function createBuilderCheckMiddleware(gateway) {
6
+ export function createBuilderCheckMiddleware(gateway, serverOwner) {
7
7
  return async (c, next) => {
8
- if (c.get("devBypass")) {
8
+ if (c.get("isPolicyBypass") ?? c.get("devBypass")) {
9
9
  await next();
10
10
  return;
11
11
  }
12
12
  const auth = c.get("auth");
13
+ if (serverOwner &&
14
+ auth.signer.toLowerCase() === serverOwner.toLowerCase()) {
15
+ await next();
16
+ return;
17
+ }
13
18
  try {
14
19
  const registered = await gateway.isRegisteredBuilder(auth.signer);
15
20
  if (!registered) {
@@ -1 +1 @@
1
- {"version":3,"file":"builder-check.js","sourceRoot":"","sources":["../../src/middleware/builder-check.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAExF;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAsB;IAEtB,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAiB,CAAC;QAE3C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,IAAI,wBAAwB,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,wBAAwB,EAAE,CAAC;gBAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"builder-check.js","sourceRoot":"","sources":["../../src/middleware/builder-check.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,8CAA8C,CAAC;AAGxF;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,OAAsB,EACtB,WAA2B;IAE3B,OAAO,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;QACvB,IAAI,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAgB,CAAC;QAC1C,IACE,WAAW;YACX,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC,WAAW,EAAE,EACvD,CAAC;YACD,MAAM,IAAI,EAAE,CAAC;YACb,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAElE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,IAAI,wBAAwB,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,IAAI,EAAE,CAAC;QACf,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,wBAAwB,EAAE,CAAC;gBAC5C,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC;YACnC,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
@@ -25,7 +25,7 @@ function parseGrantPayload(grantString) {
25
25
  export function createGrantCheckMiddleware(params) {
26
26
  const { gateway } = params;
27
27
  return async (c, next) => {
28
- if (c.get("devBypass")) {
28
+ if (c.get("isPolicyBypass") ?? c.get("devBypass")) {
29
29
  await next();
30
30
  return;
31
31
  }