@opendatalabs/personal-server-ts-server 0.0.1-canary.01ca694 → 0.0.1-canary.052d47e

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 (130) hide show
  1. package/dist/api-auth.d.ts +16 -2
  2. package/dist/api-auth.d.ts.map +1 -1
  3. package/dist/api-auth.js +72 -22
  4. package/dist/api-auth.js.map +1 -1
  5. package/dist/app.d.ts +51 -3
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +72 -11
  8. package/dist/app.js.map +1 -1
  9. package/dist/bootstrap.d.ts +25 -5
  10. package/dist/bootstrap.d.ts.map +1 -1
  11. package/dist/bootstrap.js +294 -37
  12. package/dist/bootstrap.js.map +1 -1
  13. package/dist/client.d.ts +1 -1
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +4 -2
  16. package/dist/client.js.map +1 -1
  17. package/dist/config/loader.d.ts.map +1 -1
  18. package/dist/config/loader.js +6 -14
  19. package/dist/config/loader.js.map +1 -1
  20. package/dist/enclave-main.d.ts +10 -0
  21. package/dist/enclave-main.d.ts.map +1 -0
  22. package/dist/enclave-main.js +115 -0
  23. package/dist/enclave-main.js.map +1 -0
  24. package/dist/index.js +6 -22
  25. package/dist/index.js.map +1 -1
  26. package/dist/jobs/types.d.ts +17 -0
  27. package/dist/jobs/types.d.ts.map +1 -0
  28. package/dist/jobs/types.js +3 -0
  29. package/dist/jobs/types.js.map +1 -0
  30. package/dist/jobs/worker.d.ts +30 -0
  31. package/dist/jobs/worker.d.ts.map +1 -0
  32. package/dist/jobs/worker.js +217 -0
  33. package/dist/jobs/worker.js.map +1 -0
  34. package/dist/listen.d.ts +11 -0
  35. package/dist/listen.d.ts.map +1 -0
  36. package/dist/listen.js +23 -0
  37. package/dist/listen.js.map +1 -0
  38. package/dist/logging/access-log.d.ts +2 -13
  39. package/dist/logging/access-log.d.ts.map +1 -1
  40. package/dist/logging/access-log.js.map +1 -1
  41. package/dist/middleware/cors.d.ts +18 -0
  42. package/dist/middleware/cors.d.ts.map +1 -0
  43. package/dist/middleware/cors.js +51 -0
  44. package/dist/middleware/cors.js.map +1 -0
  45. package/dist/middleware/web3-auth.d.ts +1 -0
  46. package/dist/middleware/web3-auth.d.ts.map +1 -1
  47. package/dist/middleware/web3-auth.js +6 -0
  48. package/dist/middleware/web3-auth.js.map +1 -1
  49. package/dist/migrations/detect-stuck-version-ledger.d.ts +43 -0
  50. package/dist/migrations/detect-stuck-version-ledger.d.ts.map +1 -0
  51. package/dist/migrations/detect-stuck-version-ledger.js +73 -0
  52. package/dist/migrations/detect-stuck-version-ledger.js.map +1 -0
  53. package/dist/migrations/local-state.d.ts +14 -0
  54. package/dist/migrations/local-state.d.ts.map +1 -1
  55. package/dist/migrations/local-state.js +27 -0
  56. package/dist/migrations/local-state.js.map +1 -1
  57. package/dist/migrations/state-migrations.d.ts +78 -0
  58. package/dist/migrations/state-migrations.d.ts.map +1 -0
  59. package/dist/migrations/state-migrations.js +72 -0
  60. package/dist/migrations/state-migrations.js.map +1 -0
  61. package/dist/pending-blob-deletions.d.ts +10 -0
  62. package/dist/pending-blob-deletions.d.ts.map +1 -0
  63. package/dist/pending-blob-deletions.js +38 -0
  64. package/dist/pending-blob-deletions.js.map +1 -0
  65. package/dist/routes/data.d.ts +61 -10
  66. package/dist/routes/data.d.ts.map +1 -1
  67. package/dist/routes/data.js +19 -12
  68. package/dist/routes/data.js.map +1 -1
  69. package/dist/routes/derivatives.d.ts +33 -0
  70. package/dist/routes/derivatives.d.ts.map +1 -0
  71. package/dist/routes/derivatives.js +33 -0
  72. package/dist/routes/derivatives.js.map +1 -0
  73. package/dist/routes/enclave-jobs.d.ts +9 -0
  74. package/dist/routes/enclave-jobs.d.ts.map +1 -0
  75. package/dist/routes/enclave-jobs.js +104 -0
  76. package/dist/routes/enclave-jobs.js.map +1 -0
  77. package/dist/routes/mcp.d.ts +23 -4
  78. package/dist/routes/mcp.d.ts.map +1 -1
  79. package/dist/routes/mcp.js +161 -24
  80. package/dist/routes/mcp.js.map +1 -1
  81. package/dist/routes/ui-registration.d.ts +2 -0
  82. package/dist/routes/ui-registration.d.ts.map +1 -1
  83. package/dist/routes/ui-registration.js +4 -2
  84. package/dist/routes/ui-registration.js.map +1 -1
  85. package/dist/routes/write-session.d.ts +37 -0
  86. package/dist/routes/write-session.d.ts.map +1 -0
  87. package/dist/routes/write-session.js +34 -0
  88. package/dist/routes/write-session.js.map +1 -0
  89. package/dist/storage/hierarchy.d.ts +7 -0
  90. package/dist/storage/hierarchy.d.ts.map +1 -1
  91. package/dist/storage/hierarchy.js +42 -1
  92. package/dist/storage/hierarchy.js.map +1 -1
  93. package/dist/storage/index-manager.d.ts +25 -2
  94. package/dist/storage/index-manager.d.ts.map +1 -1
  95. package/dist/storage/index-manager.js +42 -4
  96. package/dist/storage/index-manager.js.map +1 -1
  97. package/dist/storage/index-schema.d.ts +1 -1
  98. package/dist/storage/index-schema.d.ts.map +1 -1
  99. package/dist/storage/index-schema.js +23 -2
  100. package/dist/storage/index-schema.js.map +1 -1
  101. package/dist/storage/node-data-storage.d.ts.map +1 -1
  102. package/dist/storage/node-data-storage.js +34 -1
  103. package/dist/storage/node-data-storage.js.map +1 -1
  104. package/dist/storage/question-store.d.ts +9 -0
  105. package/dist/storage/question-store.d.ts.map +1 -0
  106. package/dist/storage/question-store.js +151 -0
  107. package/dist/storage/question-store.js.map +1 -0
  108. package/dist/sync-cursor.d.ts.map +1 -1
  109. package/dist/sync-cursor.js.map +1 -1
  110. package/dist/tunnel/manager.d.ts +15 -1
  111. package/dist/tunnel/manager.d.ts.map +1 -1
  112. package/dist/tunnel/manager.js +34 -7
  113. package/dist/tunnel/manager.js.map +1 -1
  114. package/dist/ui/index.html +1 -2
  115. package/dist/ui/ps-lite-debug.d.ts.map +1 -1
  116. package/dist/ui/ps-lite-debug.js +13992 -5161
  117. package/dist/ui/ps-lite-debug.js.map +1 -1
  118. package/package.json +7 -7
  119. package/dist/grant-fee-verifier.d.ts +0 -27
  120. package/dist/grant-fee-verifier.d.ts.map +0 -1
  121. package/dist/grant-fee-verifier.js +0 -40
  122. package/dist/grant-fee-verifier.js.map +0 -1
  123. package/dist/middleware/data-read-policy.d.ts +0 -11
  124. package/dist/middleware/data-read-policy.d.ts.map +0 -1
  125. package/dist/middleware/data-read-policy.js +0 -39
  126. package/dist/middleware/data-read-policy.js.map +0 -1
  127. package/dist/schema-registrar.d.ts +0 -26
  128. package/dist/schema-registrar.d.ts.map +0 -1
  129. package/dist/schema-registrar.js +0 -61
  130. package/dist/schema-registrar.js.map +0 -1
package/dist/bootstrap.js CHANGED
@@ -9,22 +9,27 @@ import { DEFAULT_ROOT_PATH, resolveRootPath } from "./config/index.js";
9
9
  import { createLogger } from "./logger/index.js";
10
10
  import { initializeDatabase } from "./storage/index-schema.js";
11
11
  import { createIndexManager, } from "./storage/index-manager.js";
12
- import { createGatewayClient } from "@opendatalabs/vana-sdk/node";
12
+ import { createGatewayClient, NodeECIESProvider, } from "@opendatalabs/vana-sdk/node";
13
13
  import { createAccessLogWriter } from "./logging/access-log.js";
14
14
  import { createAccessLogReader } from "./logging/access-reader.js";
15
15
  import { deriveMasterKey, recoverServerOwner, } from "@opendatalabs/vana-sdk/node";
16
16
  import { loadOrCreateServerAccount } from "./keys/server-account.js";
17
- import { createServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
17
+ import { createRequestSigner, createServerSigner, } from "@opendatalabs/personal-server-ts-core/signing";
18
+ import { createGatewayLineageClient, } from "@opendatalabs/personal-server-ts-core/lineage";
18
19
  import { createSyncCursor } from "./sync-cursor.js";
19
- import { createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
20
- import { createVanaSyncStorageAdapter } from "@opendatalabs/personal-server-ts-core/storage/adapters";
20
+ import { createGatewayDataPointFeed, createGatewayDeleteDataPort, createScopeDeletionTracker, createSyncManager, } from "@opendatalabs/personal-server-ts-core/sync";
21
+ import { createVanaSyncStorageAdapter, resolveVanaStorageEndpoint, } from "@opendatalabs/personal-server-ts-core/storage/adapters";
22
+ import { createFilePendingBlobDeletionStore } from "./pending-blob-deletions.js";
21
23
  import { createApp } from "./app.js";
22
- import { createGrantFeeVerifier } from "./grant-fee-verifier.js";
23
24
  import { generateDevToken } from "./dev-token.js";
24
25
  import { migrateLocalState } from "./migrations/local-state.js";
25
26
  import { createTokenStore } from "./token-store.js";
26
27
  import { TunnelManager, ensureFrpcBinary } from "./tunnel/index.js";
27
28
  import { createNodeDataStorage } from "./storage/node-data-storage.js";
29
+ import { createSqliteQuestionStore } from "./storage/question-store.js";
30
+ import { computeQuestion, createOpenAiCompatibleInferenceProvider, createPhalaE2eeEncryption, createRecomputeScheduler, } from "@opendatalabs/personal-server-ts-core/derivatives";
31
+ import { executeJob } from "./jobs/worker.js";
32
+ const TRAILING_SLASHES = /\/+$/;
28
33
  const DEFAULT_LOCAL_APPROVAL_PORT = 34127;
29
34
  function resolveLocalApprovalPort(serverPort) {
30
35
  const raw = process.env.LOCAL_AUTH_PORT;
@@ -46,11 +51,16 @@ function resolveLocalApprovalPort(serverPort) {
46
51
  export async function createServer(config, options) {
47
52
  const logger = createLogger(config.logging);
48
53
  const startedAt = new Date();
54
+ const isEnclave = options?.profile === "enclave";
55
+ if (isEnclave && process.env.VANA_OWNER_PRIVATE_KEY) {
56
+ throw new Error("VANA_OWNER_PRIVATE_KEY is forbidden in enclave profile");
57
+ }
49
58
  const storageRoot = resolveRootPath(options?.rootPath ?? options?.serverDir ?? DEFAULT_ROOT_PATH);
50
59
  const dataDir = options?.dataDir ?? join(storageRoot, "data");
51
60
  const indexPath = join(storageRoot, "index.db");
52
61
  const configPath = join(storageRoot, "config.json");
53
62
  const syncCursorPath = join(storageRoot, "sync-cursor.json");
63
+ const pendingBlobDeletionsPath = join(storageRoot, "pending-blob-deletions.json");
54
64
  const tokensPath = join(storageRoot, "tokens.json");
55
65
  await mkdir(storageRoot, { recursive: true });
56
66
  await mkdir(dataDir, { recursive: true });
@@ -61,21 +71,20 @@ export async function createServer(config, options) {
61
71
  configPath,
62
72
  syncCursorPath,
63
73
  tokensPath,
74
+ db,
75
+ logger,
64
76
  });
65
77
  const indexManager = createIndexManager(db);
66
78
  const hierarchyOptions = { dataDir };
67
79
  const dataStorage = createNodeDataStorage({ indexManager, hierarchyOptions });
68
80
  const gatewayClient = options?.gatewayClient ?? createGatewayClient(config.gateway.url);
69
- // Payment enforcement (BUI-398): when enabled, data reads are gated on the
70
- // grant's payment status at DP RPC. Off by default — left unset so the data
71
- // read policy falls back to `allowAllFeeVerifier`. An injected verifier
72
- // wins, mirroring how `gatewayClient` can be supplied by embedded callers.
73
- const feeVerifier = options?.feeVerifier ??
74
- (config.payment.enabled
75
- ? createGrantFeeVerifier({ gatewayUrl: config.gateway.url, logger })
76
- : undefined);
77
- if (feeVerifier) {
78
- logger.info("Payment enforcement enabled — data reads gated on grant fee");
81
+ // X402 payment enforcement on data reads. When config.payment.enabled is
82
+ // true, GET /v1/data/:scope requires builders to supply a signed X-PAYMENT
83
+ // header on every read; the server forwards to gateway.payForOperation.
84
+ // See packages/core/src/payment/x402.ts. Off-by-default for development
85
+ // and test setups where signing payment per read is friction.
86
+ if (config.payment.enabled) {
87
+ logger.info("X402 payment enforcement enabled on data reads");
79
88
  }
80
89
  // Derive server owner from VANA_MASTER_KEY_SIGNATURE env var
81
90
  const masterKeySignature = options?.ownerSignature ??
@@ -100,10 +109,11 @@ export async function createServer(config, options) {
100
109
  recoveredServerOwner.toLowerCase()) {
101
110
  throw new Error("VANA_OWNER_PRIVATE_KEY does not match VANA_MASTER_KEY_SIGNATURE owner");
102
111
  }
103
- // Load or create server keypair from disk
112
+ // Enclaves receive public identity only; standard mode owns its key file.
104
113
  const keyPath = join(storageRoot, "key.json");
105
- serverAccount = loadOrCreateServerAccount(keyPath);
106
- logger.info({ owner: serverOwner, serverAddress: serverAccount.address }, "Server signing account loaded");
114
+ serverAccount =
115
+ options?.serverAccount ?? loadOrCreateServerAccount(keyPath);
116
+ logger.info({ owner: serverOwner, serverAddress: serverAccount.address }, "Server account loaded");
107
117
  serverSigner = createServerSigner(serverAccount, {
108
118
  chainId: config.gateway.chainId,
109
119
  contracts: config.gateway.contracts,
@@ -144,7 +154,7 @@ export async function createServer(config, options) {
144
154
  }
145
155
  // Download frpc binary eagerly (auth-independent) so it's ready when the user signs in
146
156
  let frpcBinaryPath = "";
147
- if (config.tunnel.enabled) {
157
+ if (config.tunnel.enabled && !isEnclave) {
148
158
  try {
149
159
  frpcBinaryPath = await ensureFrpcBinary(storageRoot, {
150
160
  log: (msg) => logger.info(msg),
@@ -154,8 +164,97 @@ export async function createServer(config, options) {
154
164
  logger.warn({ err }, "Failed to download frpc binary - tunnel disabled");
155
165
  }
156
166
  }
167
+ // Derivative data: the gateway lineage client signs lineage reads with the
168
+ // server key (the gateway treats a registered server as the owner's) and
169
+ // registers derivatives with their lineage. Needs the server account.
170
+ // The one server-key request signer: lineage reads, and the inference
171
+ // relay calls below, authenticate to the gateway with the same scheme.
172
+ const requestSigner = serverAccount && !isEnclave
173
+ ? createRequestSigner(serverAccount)
174
+ : undefined;
175
+ const lineageGateway = requestSigner
176
+ ? createGatewayLineageClient({
177
+ gatewayUrl: config.gateway.url,
178
+ requestSigner,
179
+ })
180
+ : undefined;
157
181
  // --- Sync engine setup ---
158
182
  let syncManager = null;
183
+ // Deletion-aware registry view. Independent of sync: the data route uses
184
+ // it to answer 410 for scopes the owner deleted even when sync is off.
185
+ const dataPointFeed = options?.dataPointFeed ??
186
+ createGatewayDataPointFeed({ gatewayUrl: config.gateway.url });
187
+ // Read-side memory of tombstones, shared by the sync workers (which feed
188
+ // it) and the data route (which consults it on every read).
189
+ const scopeDeletions = createScopeDeletionTracker({
190
+ feed: dataPointFeed,
191
+ serverOwner,
192
+ logger,
193
+ });
194
+ // --- Derivative compute (question -> derivative) ---
195
+ // The scheduler exists before the sync manager so downloads can mark
196
+ // questions stale; it reaches the sync manager lazily to upload results.
197
+ const questionStore = createSqliteQuestionStore(db);
198
+ const inferenceBaseUrl = process.env.INFERENCE_BASE_URL ?? config.inference.baseUrl;
199
+ // E2EE to the Phala gateway is on unless config or INFERENCE_E2EE=false
200
+ // turns it off (local development against a provider without ACI).
201
+ const inferenceE2ee = process.env.INFERENCE_E2EE !== undefined
202
+ ? process.env.INFERENCE_E2EE !== "false"
203
+ : config.inference.e2ee;
204
+ // Local development only: production relays hold the provider key. A key
205
+ // means the base URL is a provider, not the relay, so nothing is signed.
206
+ const inferenceApiKey = process.env.INFERENCE_API_KEY;
207
+ // The Vana inference relay only forwards requests signed by the owner or
208
+ // by one of the owner's active registered servers; this is the same
209
+ // server-key signer the lineage reads use.
210
+ const inferenceSigner = inferenceApiKey ? undefined : requestSigner;
211
+ const inferenceProvider = options?.inferenceProvider ??
212
+ createOpenAiCompatibleInferenceProvider({
213
+ baseUrl: inferenceBaseUrl,
214
+ model: process.env.INFERENCE_MODEL ?? config.inference.model,
215
+ apiKey: inferenceApiKey,
216
+ requestSigner: inferenceSigner,
217
+ encryption: inferenceE2ee
218
+ ? createPhalaE2eeEncryption({
219
+ baseUrl: inferenceBaseUrl,
220
+ requestSigner: inferenceSigner,
221
+ logger,
222
+ })
223
+ : undefined,
224
+ });
225
+ if (!inferenceE2ee) {
226
+ logger.warn({ baseUrl: inferenceBaseUrl }, "Inference E2EE is disabled: prompts and answers travel as plaintext over TLS");
227
+ }
228
+ const derivativeScheduler = createRecomputeScheduler({
229
+ store: questionStore,
230
+ debounceMs: config.inference.recomputeDebounceMs,
231
+ serverOwner,
232
+ logger,
233
+ compute: (questionId) => computeQuestion(questionId, {
234
+ // A -> B -> C: a question reading this derived scope recomputes.
235
+ onDerivedWritten: (event) => derivativeScheduler.markSourceChanged(event.scope, {
236
+ lineageSources: event.lineageSources,
237
+ }),
238
+ storage: dataStorage,
239
+ store: questionStore,
240
+ provider: inferenceProvider,
241
+ serverOwner,
242
+ maxSourceItems: config.inference.maxSourceItems,
243
+ syncManager: {
244
+ notifyNewData: () => syncManager?.notifyNewData(),
245
+ },
246
+ scopeDeletions,
247
+ writePolicyPorts: {
248
+ authSessionVerifier: gatewayClient,
249
+ grantVerifier: gatewayClient,
250
+ },
251
+ logger,
252
+ }),
253
+ });
254
+ const derivativeCompute = {
255
+ store: questionStore,
256
+ scheduler: derivativeScheduler,
257
+ };
159
258
  if (config.sync.enabled &&
160
259
  masterKeySignature &&
161
260
  serverOwner &&
@@ -166,6 +265,7 @@ export async function createServer(config, options) {
166
265
  config,
167
266
  serverOwner,
168
267
  serverAccount,
268
+ reads: isEnclave ? "public" : "signed",
169
269
  });
170
270
  const cursor = createSyncCursor(syncCursorPath, {
171
271
  legacyConfigPath: configPath,
@@ -178,6 +278,9 @@ export async function createServer(config, options) {
178
278
  masterKey,
179
279
  serverOwner,
180
280
  logger,
281
+ lineageGateway,
282
+ dataPointFeed,
283
+ scopeDeletions,
181
284
  };
182
285
  const downloadDeps = {
183
286
  storage: dataStorage,
@@ -187,8 +290,33 @@ export async function createServer(config, options) {
187
290
  masterKey,
188
291
  serverOwner,
189
292
  logger,
293
+ dataPointFeed,
294
+ scopeDeletions,
295
+ onDataPointIndexed: (event) => derivativeScheduler.markSourceChanged(event.scope, {
296
+ lineageSources: event.lineageSources,
297
+ }),
190
298
  };
299
+ // Durable deletion: gateway tombstone signed with the same server
300
+ // account + AddData signer uploads use, storage DELETE authorised with
301
+ // the same Web3Signed signer the storage provider uploads with.
302
+ const deleteData = isEnclave
303
+ ? null
304
+ : createGatewayDeleteDataPort({
305
+ gatewayUrl: config.gateway.url,
306
+ dataPointFeed,
307
+ serverOwner,
308
+ signer: serverSigner,
309
+ storage: {
310
+ endpoint: resolveVanaStorageEndpoint(config),
311
+ chainId: config.gateway.chainId,
312
+ signMessage: (message) => serverAccount.signMessage(message),
313
+ },
314
+ });
315
+ const pendingBlobDeletions = createFilePendingBlobDeletionStore(pendingBlobDeletionsPath);
191
316
  syncManager = createSyncManager(uploadDeps, downloadDeps, {
317
+ deleteData,
318
+ pendingBlobDeletions,
319
+ transferMode: isEnclave ? "download-only" : "upload-download",
192
320
  async canSync() {
193
321
  try {
194
322
  const serverInfo = await gatewayClient.getServer(serverAccount.address);
@@ -222,11 +350,11 @@ export async function createServer(config, options) {
222
350
  const accessLogWriter = createAccessLogWriter(logsDir);
223
351
  const accessLogReader = createAccessLogReader(logsDir);
224
352
  // Generate ephemeral dev token when devUi is enabled
225
- const devToken = config.devUi.enabled ? generateDevToken() : undefined;
353
+ const devToken = config.devUi.enabled && !isEnclave ? generateDevToken() : undefined;
226
354
  // Token store for /auth/device flow (self-hosted CLI auth)
227
355
  const tokenStore = createTokenStore(tokensPath, logger);
228
356
  const cloudMode = process.env.CLOUD_MODE === "true";
229
- const localApprovalPort = cloudMode
357
+ const localApprovalPort = cloudMode || isEnclave
230
358
  ? undefined
231
359
  : resolveLocalApprovalPort(config.server.port);
232
360
  // Mutable origin — starts with config value, updated when tunnel connects
@@ -234,6 +362,39 @@ export async function createServer(config, options) {
234
362
  let effectiveLocalApprovalOrigin;
235
363
  // Mutable tunnelManager — set when tunnel starts in background
236
364
  let tunnelManager;
365
+ // Registration can land after boot (desktop signing exchange or the
366
+ // /ui/api registration route); the tunnel connect is gated on it, so the
367
+ // route needs a way to trigger the deferred connect. Assigned inside
368
+ // startBackgroundServices once the tunnel is reserved.
369
+ let notifyServerRegistered = () => { };
370
+ let registrationPollTimer = null;
371
+ // Set by cleanup(). A poll iteration that is mid-flight when cleanup runs
372
+ // holds no timer handle, so clearing the timer alone cannot stop it — and
373
+ // a reserved-but-never-connected TunnelManager would happily spawn frpc
374
+ // from an orphaned poll after shutdown. Every deferred path checks this.
375
+ let backgroundClosed = false;
376
+ const clearRegistrationPoll = () => {
377
+ if (registrationPollTimer) {
378
+ clearTimeout(registrationPollTimer);
379
+ registrationPollTimer = null;
380
+ }
381
+ };
382
+ const ecies = new NodeECIESProvider();
383
+ const jobWorker = isEnclave && serverOwner && serverAccount
384
+ ? (envelope) => executeJob(envelope, {
385
+ serverOwner,
386
+ serverAddress: serverAccount.address,
387
+ serverPublicKey: serverAccount.publicKey,
388
+ authAudience: config.gateway.url.replace(TRAILING_SLASHES, ""),
389
+ gateway: gatewayClient,
390
+ gatewayConfig: config.gateway,
391
+ storage: dataStorage,
392
+ ecies,
393
+ logger,
394
+ accessLogWriter,
395
+ scopeDeletions,
396
+ })
397
+ : undefined;
237
398
  const app = createApp({
238
399
  logger,
239
400
  version: pkg.version,
@@ -246,11 +407,16 @@ export async function createServer(config, options) {
246
407
  identity,
247
408
  gateway: gatewayClient,
248
409
  gatewayConfig: config.gateway,
249
- feeVerifier,
410
+ paymentEnabled: config.payment.enabled,
411
+ gatewayUrl: config.gateway.url,
412
+ lineageGateway,
413
+ derivativeCompute,
250
414
  config,
251
415
  accessLogWriter,
252
416
  accessLogReader,
417
+ readFulfillmentReporter: options?.readFulfillmentReporter,
253
418
  dataStorage,
419
+ scopeDeletions,
254
420
  cloudMode,
255
421
  devToken,
256
422
  ownerSignature: masterKeySignature,
@@ -261,8 +427,15 @@ export async function createServer(config, options) {
261
427
  syncManager,
262
428
  serverSigner,
263
429
  getTunnelStatus: () => tunnelManager?.getStatus() ?? null,
430
+ mcpOAuthApprovalUrl: options?.mcpOAuthApprovalUrl,
431
+ onServerRegistered: (serverId) => notifyServerRegistered(serverId),
432
+ profile: options?.profile,
433
+ jobWorker,
264
434
  });
265
435
  const cleanup = async () => {
436
+ backgroundClosed = true;
437
+ clearRegistrationPoll();
438
+ derivativeScheduler.stop();
266
439
  if (tunnelManager) {
267
440
  await tunnelManager.stop();
268
441
  }
@@ -292,6 +465,12 @@ export async function createServer(config, options) {
292
465
  },
293
466
  devToken,
294
467
  startBackgroundServices: async () => {
468
+ // Replay questions a previous run left pending or stale: nothing
469
+ // else reschedules them after a restart (registration and source
470
+ // changes only cover new activity).
471
+ if (!isEnclave) {
472
+ derivativeScheduler.start();
473
+ }
295
474
  // --- Gateway registration check (slow: HTTP call) ---
296
475
  if (serverAccount && identity) {
297
476
  try {
@@ -312,15 +491,96 @@ export async function createServer(config, options) {
312
491
  }
313
492
  }
314
493
  // --- Tunnel setup (slow: subprocess wait) ---
315
- if (config.tunnel.enabled &&
494
+ if (!isEnclave &&
495
+ config.tunnel.enabled &&
316
496
  serverOwner &&
317
497
  serverAccount &&
318
498
  frpcBinaryPath) {
319
499
  tunnelManager = new TunnelManager(storageRoot);
320
500
  context.tunnelManager = tunnelManager;
321
501
  const runId = randomUUID();
502
+ let tunnelConnectStarted = false;
503
+ const connectTunnel = async () => {
504
+ const manager = tunnelManager;
505
+ if (!manager || tunnelConnectStarted || backgroundClosed) {
506
+ return;
507
+ }
508
+ tunnelConnectStarted = true;
509
+ try {
510
+ const url = await manager.connect();
511
+ const tunnelStatus = manager.getStatus();
512
+ if (tunnelStatus.status === "connected") {
513
+ logger.info({ tunnelUrl: url }, "Tunnel established");
514
+ }
515
+ else {
516
+ logger.warn({ tunnelUrl: url, warning: tunnelStatus.warning }, "Tunnel URL reserved; waiting for tunnel connection");
517
+ }
518
+ }
519
+ catch (err) {
520
+ logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
521
+ tunnelManager = undefined;
522
+ context.tunnelManager = undefined;
523
+ // Local-only mode must keep the local audience/URL: leaving the
524
+ // public URL as effectiveOrigin would reject local Web3Signed
525
+ // callers against an origin that will never route.
526
+ effectiveOrigin = config.server.origin;
527
+ context.tunnelUrl = undefined;
528
+ }
529
+ };
530
+ // Poll fallback for registrations the route callback can't see
531
+ // (e.g. desktop registers with the gateway directly and the sidecar
532
+ // only observes it via a gateway lookup).
533
+ const scheduleRegistrationPoll = () => {
534
+ const pollStartedAt = Date.now();
535
+ const poll = async () => {
536
+ registrationPollTimer = null;
537
+ if (backgroundClosed) {
538
+ return;
539
+ }
540
+ try {
541
+ const serverInfo = await gatewayClient.getServer(serverAccount.address);
542
+ if (serverInfo?.id) {
543
+ if (identity) {
544
+ identity.serverId = serverInfo.id;
545
+ }
546
+ logger.info("Server registration detected — starting tunnel");
547
+ await connectTunnel();
548
+ return;
549
+ }
550
+ }
551
+ catch {
552
+ // Gateway unreachable — keep polling.
553
+ }
554
+ if (backgroundClosed) {
555
+ return;
556
+ }
557
+ const interval = Date.now() - pollStartedAt < 2 * 60_000 ? 5_000 : 30_000;
558
+ registrationPollTimer = setTimeout(() => void poll(), interval);
559
+ registrationPollTimer.unref?.();
560
+ };
561
+ registrationPollTimer = setTimeout(() => void poll(), 5_000);
562
+ registrationPollTimer.unref?.();
563
+ };
564
+ notifyServerRegistered = (serverId) => {
565
+ if (backgroundClosed) {
566
+ return;
567
+ }
568
+ if (serverId) {
569
+ if (identity) {
570
+ identity.serverId = serverId;
571
+ }
572
+ // Only a confirmed serverId stops the poll: on a null result the
573
+ // poll keeps running so identity/health converge once the
574
+ // gateway lookup sees the registration.
575
+ clearRegistrationPoll();
576
+ }
577
+ void connectTunnel();
578
+ };
322
579
  try {
323
- const url = await tunnelManager.start({
580
+ // Reserve the public URL without dialing the relay: the URL is
581
+ // what registration needs, and dialing before the registration
582
+ // lands poisons the relay's delegation cache (BUI-611).
583
+ const url = tunnelManager.reserve({
324
584
  walletAddress: serverAccount.address,
325
585
  ownerAddress: serverOwner,
326
586
  serverKeypair: serverAccount,
@@ -334,24 +594,21 @@ export async function createServer(config, options) {
334
594
  serverPort: config.tunnel.serverPort,
335
595
  localPort: config.server.port,
336
596
  }, frpcBinaryPath);
337
- const tunnelStatus = tunnelManager.getStatus();
338
- if (tunnelStatus.status === "connected") {
339
- logger.info({ tunnelUrl: url }, "Tunnel established");
340
- }
341
- else {
342
- logger.warn({ tunnelUrl: url, warning: tunnelStatus.warning }, "Tunnel URL reserved; waiting for tunnel connection");
343
- }
344
597
  context.tunnelUrl = url;
345
- if (tunnelStatus.status === "connected" &&
346
- tunnelStatus.routable !== false) {
347
- effectiveOrigin = url;
598
+ // The public URL is the audience clients sign against, so adopt it
599
+ // as the effective origin as soon as it's known (matches the
600
+ // unity-surfaces #583 sidecar patch).
601
+ effectiveOrigin = url;
602
+ if (identity?.serverId) {
603
+ await connectTunnel();
348
604
  }
349
- if (!identity?.serverId) {
350
- logger.warn("Tunnel started but server is not registered with gatewaytunnel will not route traffic. Run: npm run register-server");
605
+ else {
606
+ logger.info({ tunnelUrl: url }, "Tunnel start deferred until server registration register to enable routing");
607
+ scheduleRegistrationPoll();
351
608
  }
352
609
  }
353
610
  catch (err) {
354
- logger.warn({ err }, "Tunnel failed to connect - server running in local-only mode");
611
+ logger.warn({ err }, "Tunnel failed to start - server running in local-only mode");
355
612
  tunnelManager = undefined;
356
613
  context.tunnelManager = undefined;
357
614
  }
@@ -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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"}
package/dist/client.d.ts CHANGED
@@ -3,7 +3,7 @@ import { type PersonalServerHandle, type PersonalServerStatus } from "@opendatal
3
3
  import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
4
4
  import { type CreateServerOptions } from "./bootstrap.js";
5
5
  import { type LoadConfigOptions } from "./config/index.js";
6
- export interface StartPersonalServerNodeOptions extends Pick<CreateServerOptions, "rootPath" | "dataDir" | "ownerSignature">, LoadConfigOptions {
6
+ export interface StartPersonalServerNodeOptions extends Pick<CreateServerOptions, "rootPath" | "dataDir" | "ownerSignature" | "readFulfillmentReporter" | "mcpOAuthApprovalUrl">, LoadConfigOptions {
7
7
  config?: ServerConfig;
8
8
  configDefaults?: Partial<ServerConfig>;
9
9
  port?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAeL,KAAK,oBAAoB,EAgBzB,KAAK,oBAAoB,EAG1B,MAAM,8CAA8C,CAAC;AAGtD,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKvE,MAAM,WAAW,8BACf,SACE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACpE,iBAAiB;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CAqX/B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAeL,KAAK,oBAAoB,EAgBzB,KAAK,oBAAoB,EAG1B,MAAM,8CAA8C,CAAC;AAGtD,OAAO,KAAK,EACV,aAAa,EAEd,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKvE,MAAM,WAAW,8BACf,SACE,IAAI,CACF,mBAAmB,EACjB,UAAU,GACV,SAAS,GACT,gBAAgB,GAChB,yBAAyB,GACzB,qBAAqB,CACxB,EACD,iBAAiB;IACnB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,8BAAmC,GAC3C,OAAO,CAAC,oBAAoB,CAAC,CAsX/B"}
package/dist/client.js CHANGED
@@ -20,6 +20,8 @@ export async function startPersonalServer(options = {}) {
20
20
  dataDir: options.dataDir,
21
21
  ownerSignature: options.ownerSignature,
22
22
  gatewayClient: options.gatewayClient,
23
+ readFulfillmentReporter: options.readFulfillmentReporter,
24
+ mcpOAuthApprovalUrl: options.mcpOAuthApprovalUrl,
23
25
  });
24
26
  const mainServer = await listenHttpServer({
25
27
  fetch: context.app.fetch,
@@ -178,9 +180,9 @@ export async function startPersonalServer(options = {}) {
178
180
  ...(grantOptions.expiresAt === undefined
179
181
  ? {}
180
182
  : { expiresAt: grantOptions.expiresAt }),
181
- ...(grantOptions.nonce === undefined
183
+ ...(grantOptions.grantVersion === undefined
182
184
  ? {}
183
- : { nonce: grantOptions.nonce }),
185
+ : { grantVersion: grantOptions.grantVersion }),
184
186
  },
185
187
  authOptions: grantOptions,
186
188
  headers: {