@opendatalabs/personal-server-ts-server 0.0.1-canary.cb005d5 → 0.0.1-canary.cc587af

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 (183) hide show
  1. package/dist/api-auth.d.ts +15 -0
  2. package/dist/api-auth.d.ts.map +1 -1
  3. package/dist/api-auth.js +72 -21
  4. package/dist/api-auth.js.map +1 -1
  5. package/dist/app.d.ts +66 -1
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +140 -10
  8. package/dist/app.js.map +1 -1
  9. package/dist/bootstrap.d.ts +31 -0
  10. package/dist/bootstrap.d.ts.map +1 -1
  11. package/dist/bootstrap.js +298 -25
  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 +2 -0
  16. package/dist/client.js.map +1 -1
  17. package/dist/config/loader.d.ts.map +1 -1
  18. package/dist/config/loader.js +13 -5
  19. package/dist/config/loader.js.map +1 -1
  20. package/dist/enclave-main.d.ts +11 -0
  21. package/dist/enclave-main.d.ts.map +1 -0
  22. package/dist/enclave-main.js +188 -0
  23. package/dist/enclave-main.js.map +1 -0
  24. package/dist/index.js +11 -23
  25. package/dist/index.js.map +1 -1
  26. package/dist/jobs/access-reporter.d.ts +36 -0
  27. package/dist/jobs/access-reporter.d.ts.map +1 -0
  28. package/dist/jobs/access-reporter.js +272 -0
  29. package/dist/jobs/access-reporter.js.map +1 -0
  30. package/dist/jobs/raw-envelope-stream.d.ts +3 -0
  31. package/dist/jobs/raw-envelope-stream.d.ts.map +1 -0
  32. package/dist/jobs/raw-envelope-stream.js +371 -0
  33. package/dist/jobs/raw-envelope-stream.js.map +1 -0
  34. package/dist/jobs/types.d.ts +17 -0
  35. package/dist/jobs/types.d.ts.map +1 -0
  36. package/dist/jobs/types.js +3 -0
  37. package/dist/jobs/types.js.map +1 -0
  38. package/dist/jobs/worker.d.ts +43 -0
  39. package/dist/jobs/worker.d.ts.map +1 -0
  40. package/dist/jobs/worker.js +491 -0
  41. package/dist/jobs/worker.js.map +1 -0
  42. package/dist/listen.d.ts +11 -0
  43. package/dist/listen.d.ts.map +1 -0
  44. package/dist/listen.js +23 -0
  45. package/dist/listen.js.map +1 -0
  46. package/dist/logging/access-log.d.ts +2 -13
  47. package/dist/logging/access-log.d.ts.map +1 -1
  48. package/dist/logging/access-log.js.map +1 -1
  49. package/dist/mcp/durable-state.d.ts +82 -0
  50. package/dist/mcp/durable-state.d.ts.map +1 -0
  51. package/dist/mcp/durable-state.js +428 -0
  52. package/dist/mcp/durable-state.js.map +1 -0
  53. package/dist/mcp/grants.d.ts +12 -0
  54. package/dist/mcp/grants.d.ts.map +1 -0
  55. package/dist/mcp/grants.js +33 -0
  56. package/dist/mcp/grants.js.map +1 -0
  57. package/dist/mcp/index.d.ts +4 -0
  58. package/dist/mcp/index.d.ts.map +1 -0
  59. package/dist/mcp/index.js +4 -0
  60. package/dist/mcp/index.js.map +1 -0
  61. package/dist/mcp/tee-ingress.d.ts +33 -0
  62. package/dist/mcp/tee-ingress.d.ts.map +1 -0
  63. package/dist/mcp/tee-ingress.js +336 -0
  64. package/dist/mcp/tee-ingress.js.map +1 -0
  65. package/dist/middleware/cors.d.ts +18 -0
  66. package/dist/middleware/cors.d.ts.map +1 -0
  67. package/dist/middleware/cors.js +51 -0
  68. package/dist/middleware/cors.js.map +1 -0
  69. package/dist/middleware/local-listener.d.ts +33 -0
  70. package/dist/middleware/local-listener.d.ts.map +1 -0
  71. package/dist/middleware/local-listener.js +103 -0
  72. package/dist/middleware/local-listener.js.map +1 -0
  73. package/dist/migrations/detect-stuck-version-ledger.d.ts +43 -0
  74. package/dist/migrations/detect-stuck-version-ledger.d.ts.map +1 -0
  75. package/dist/migrations/detect-stuck-version-ledger.js +73 -0
  76. package/dist/migrations/detect-stuck-version-ledger.js.map +1 -0
  77. package/dist/migrations/local-state.d.ts +14 -0
  78. package/dist/migrations/local-state.d.ts.map +1 -1
  79. package/dist/migrations/local-state.js +27 -0
  80. package/dist/migrations/local-state.js.map +1 -1
  81. package/dist/migrations/state-migrations.d.ts +78 -0
  82. package/dist/migrations/state-migrations.d.ts.map +1 -0
  83. package/dist/migrations/state-migrations.js +72 -0
  84. package/dist/migrations/state-migrations.js.map +1 -0
  85. package/dist/package.json +67 -0
  86. package/dist/pending-blob-deletions.d.ts +10 -0
  87. package/dist/pending-blob-deletions.d.ts.map +1 -0
  88. package/dist/pending-blob-deletions.js +38 -0
  89. package/dist/pending-blob-deletions.js.map +1 -0
  90. package/dist/routes/data.d.ts +31 -2
  91. package/dist/routes/data.d.ts.map +1 -1
  92. package/dist/routes/data.js +7 -0
  93. package/dist/routes/data.js.map +1 -1
  94. package/dist/routes/derivatives.d.ts +33 -0
  95. package/dist/routes/derivatives.d.ts.map +1 -0
  96. package/dist/routes/derivatives.js +33 -0
  97. package/dist/routes/derivatives.js.map +1 -0
  98. package/dist/routes/enclave-fleet.d.ts +14 -0
  99. package/dist/routes/enclave-fleet.d.ts.map +1 -0
  100. package/dist/routes/enclave-fleet.js +43 -0
  101. package/dist/routes/enclave-fleet.js.map +1 -0
  102. package/dist/routes/enclave-jobs.d.ts +9 -0
  103. package/dist/routes/enclave-jobs.d.ts.map +1 -0
  104. package/dist/routes/enclave-jobs.js +106 -0
  105. package/dist/routes/enclave-jobs.js.map +1 -0
  106. package/dist/routes/enclave-mcp.d.ts +9 -0
  107. package/dist/routes/enclave-mcp.d.ts.map +1 -0
  108. package/dist/routes/enclave-mcp.js +46 -0
  109. package/dist/routes/enclave-mcp.js.map +1 -0
  110. package/dist/routes/mcp.d.ts +26 -3
  111. package/dist/routes/mcp.d.ts.map +1 -1
  112. package/dist/routes/mcp.js +212 -37
  113. package/dist/routes/mcp.js.map +1 -1
  114. package/dist/routes/pdpp-blobs.d.ts +27 -0
  115. package/dist/routes/pdpp-blobs.d.ts.map +1 -0
  116. package/dist/routes/pdpp-blobs.js +125 -0
  117. package/dist/routes/pdpp-blobs.js.map +1 -0
  118. package/dist/routes/pdpp-records.d.ts +19 -0
  119. package/dist/routes/pdpp-records.d.ts.map +1 -0
  120. package/dist/routes/pdpp-records.js +371 -0
  121. package/dist/routes/pdpp-records.js.map +1 -0
  122. package/dist/routes/pdpp-well-known.d.ts +13 -0
  123. package/dist/routes/pdpp-well-known.d.ts.map +1 -0
  124. package/dist/routes/pdpp-well-known.js +20 -0
  125. package/dist/routes/pdpp-well-known.js.map +1 -0
  126. package/dist/routes/ui-registration.d.ts +2 -0
  127. package/dist/routes/ui-registration.d.ts.map +1 -1
  128. package/dist/routes/ui-registration.js +2 -0
  129. package/dist/routes/ui-registration.js.map +1 -1
  130. package/dist/routes/ui.d.ts +7 -0
  131. package/dist/routes/ui.d.ts.map +1 -1
  132. package/dist/routes/ui.js +32 -3
  133. package/dist/routes/ui.js.map +1 -1
  134. package/dist/routes/write-session.d.ts +37 -0
  135. package/dist/routes/write-session.d.ts.map +1 -0
  136. package/dist/routes/write-session.js +34 -0
  137. package/dist/routes/write-session.js.map +1 -0
  138. package/dist/scripts/bundle-verification.d.ts +2 -0
  139. package/dist/scripts/bundle-verification.d.ts.map +1 -0
  140. package/dist/scripts/bundle-verification.js +32 -0
  141. package/dist/scripts/bundle-verification.js.map +1 -0
  142. package/dist/scripts/verify-bundle.d.ts +2 -0
  143. package/dist/scripts/verify-bundle.d.ts.map +1 -0
  144. package/dist/scripts/verify-bundle.js +44 -0
  145. package/dist/scripts/verify-bundle.js.map +1 -0
  146. package/dist/storage/hierarchy.d.ts +11 -0
  147. package/dist/storage/hierarchy.d.ts.map +1 -1
  148. package/dist/storage/hierarchy.js +52 -1
  149. package/dist/storage/hierarchy.js.map +1 -1
  150. package/dist/storage/index-manager.d.ts +13 -0
  151. package/dist/storage/index-manager.d.ts.map +1 -1
  152. package/dist/storage/index-manager.js +14 -2
  153. package/dist/storage/index-manager.js.map +1 -1
  154. package/dist/storage/index-schema.d.ts +1 -1
  155. package/dist/storage/index-schema.d.ts.map +1 -1
  156. package/dist/storage/index-schema.js +9 -2
  157. package/dist/storage/index-schema.js.map +1 -1
  158. package/dist/storage/node-data-storage.d.ts.map +1 -1
  159. package/dist/storage/node-data-storage.js +31 -1
  160. package/dist/storage/node-data-storage.js.map +1 -1
  161. package/dist/storage/pdpp-records-sqlite-store.d.ts +8 -0
  162. package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -0
  163. package/dist/storage/pdpp-records-sqlite-store.js +472 -0
  164. package/dist/storage/pdpp-records-sqlite-store.js.map +1 -0
  165. package/dist/storage/question-store.d.ts +9 -0
  166. package/dist/storage/question-store.d.ts.map +1 -0
  167. package/dist/storage/question-store.js +173 -0
  168. package/dist/storage/question-store.js.map +1 -0
  169. package/dist/sync-cursor.d.ts.map +1 -1
  170. package/dist/sync-cursor.js.map +1 -1
  171. package/dist/tunnel/binary.d.ts +8 -0
  172. package/dist/tunnel/binary.d.ts.map +1 -1
  173. package/dist/tunnel/binary.js +11 -0
  174. package/dist/tunnel/binary.js.map +1 -1
  175. package/dist/tunnel/manager.d.ts +15 -1
  176. package/dist/tunnel/manager.d.ts.map +1 -1
  177. package/dist/tunnel/manager.js +34 -7
  178. package/dist/tunnel/manager.js.map +1 -1
  179. package/dist/ui/index.html +14 -2
  180. package/dist/ui/ps-lite-debug.d.ts.map +1 -1
  181. package/dist/ui/ps-lite-debug.js +12170 -4468
  182. package/dist/ui/ps-lite-debug.js.map +1 -1
  183. package/package.json +18 -10
@@ -1,5 +1,6 @@
1
1
  import { type SessionTokenVerifierPort } from "@opendatalabs/personal-server-ts-core/auth";
2
2
  import type { PersonalServerApiAuthPort } from "@opendatalabs/personal-server-ts-core/api";
3
+ import { type WriteProofReplayStore, type WriteSessionStore } from "@opendatalabs/personal-server-ts-core/write";
3
4
  import type { DataStoragePort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
4
5
  import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
5
6
  export interface ServerApiAuthDeps {
@@ -11,6 +12,20 @@ export interface ServerApiAuthDeps {
11
12
  tokenStore?: SessionTokenVerifierPort;
12
13
  dataStorage?: Pick<DataStoragePort, "findEntry">;
13
14
  runtimeAvailability?: RuntimeAvailabilityPort;
15
+ /**
16
+ * Write API sessions. When present, POST /v1/data/:scope accepts a bearer
17
+ * write-session token (minted by POST /v1/write/session) and authorizes the
18
+ * write as the session's builder via verifyDataWritePolicy + the
19
+ * X-Vana-Write-Signature attribution proof. Absent = owner-only ingest,
20
+ * exactly as before.
21
+ */
22
+ writeSessionStore?: WriteSessionStore;
23
+ /**
24
+ * Replay guard for per-write proofs (X-Vana-Write-Signature). Defaults to
25
+ * an in-memory store so replay protection is always on when write sessions
26
+ * are enabled; hosts may supply a shared store.
27
+ */
28
+ writeProofReplayStore?: WriteProofReplayStore;
14
29
  }
15
30
  export declare function createServerApiAuth(deps: ServerApiAuthDeps): PersonalServerApiAuthPort;
16
31
  //# sourceMappingURL=api-auth.d.ts.map
@@ -1 +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,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,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AA6CD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,GACtB,yBAAyB,CA0E3B"}
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,EAG1B,MAAM,2CAA2C,CAAC;AAEnD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,KAAK,EACV,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,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C;;;;;;OAMG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;CAC/C;AA6CD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,GACtB,yBAAyB,CAiI3B"}
package/dist/api-auth.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { authenticateRequest, } from "@opendatalabs/personal-server-ts-core/auth";
2
2
  import { verifyDataReadPolicy } from "@opendatalabs/personal-server-ts-core/policy";
3
+ import { createInMemoryWriteProofReplayStore, createWriteSessionAuthorization, } from "@opendatalabs/personal-server-ts-core/write";
3
4
  import { NotOwnerError, ProtocolError, UnregisteredBuilderError, } from "@opendatalabs/personal-server-ts-core/errors";
4
5
  function serverNotConfigured() {
5
6
  return new ProtocolError(500, "SERVER_NOT_CONFIGURED", "Server owner address not configured. Set VANA_MASTER_KEY_SIGNATURE environment variable.");
@@ -18,30 +19,75 @@ async function authenticate(request, deps) {
18
19
  });
19
20
  }
20
21
  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();
22
+ // vana-sdk 3.14.0's GatewayClient always exposes isRegisteredBuilder, so the
23
+ // legacy getBuilder feature-detect fallback is now unreachable (its else
24
+ // branch narrows the client to `never`). Query registration directly, matching
25
+ // middleware/builder-check.ts.
26
+ if (await gateway.isRegisteredBuilder(signer))
27
+ return;
28
+ throw new UnregisteredBuilderError();
29
29
  }
30
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
- }
31
+ const writeProofReplayStore = deps.writeProofReplayStore ?? createInMemoryWriteProofReplayStore();
32
+ // The write-session half of this port is protocol, not runtime: the browser
33
+ // build's adapters call the same factory, so a delegated write is checked
34
+ // identically wherever the Personal Server runs.
35
+ const writeSessions = createWriteSessionAuthorization({
36
+ serverOrigin: deps.serverOrigin,
37
+ serverOwner: deps.serverOwner,
38
+ sessionStore: deps.writeSessionStore,
39
+ replayStore: writeProofReplayStore,
40
+ policyPorts: {
41
+ authSessionVerifier: deps.gateway,
42
+ grantVerifier: deps.gateway,
43
+ runtimeAvailability: deps.runtimeAvailability,
44
+ // Fee seam intentionally not wired: builder writes are free in the
45
+ // demo slice (write fee mechanics undecided).
44
46
  },
47
+ });
48
+ async function authorizeOwner(request) {
49
+ const result = await authenticate(request, deps);
50
+ if (result.isPolicyBypass)
51
+ return;
52
+ if (!deps.serverOwner)
53
+ throw serverNotConfigured();
54
+ if (!isOwner(result.auth.signer, deps.serverOwner)) {
55
+ throw new NotOwnerError({
56
+ signer: result.auth.signer,
57
+ expected: deps.serverOwner,
58
+ });
59
+ }
60
+ }
61
+ /**
62
+ * Delegated ingest. A bearer token that resolves to a live write session
63
+ * authorizes as the session builder: the write policy re-runs against the
64
+ * LIVE grant (revocation / expiry / scope coverage stay authoritative per
65
+ * write), and the builder's X-Vana-Write-Signature payload proof is
66
+ * verified and returned for the handler to store with the record. Any
67
+ * other credential (owner Web3Signed, dev token, control-plane token,
68
+ * unknown bearer) falls through to the owner path unchanged.
69
+ */
70
+ async function authorizeWrite(input) {
71
+ const delegated = await writeSessions.authorizeSessionWrite(input);
72
+ if (delegated)
73
+ return delegated;
74
+ await authorizeOwner(input.request);
75
+ }
76
+ /**
77
+ * Identity-only recognition of a write-session caller: the bearer must
78
+ * resolve to a live session and the request must carry that builder's
79
+ * valid proof, but NO grant policy runs (there is no scope to run it
80
+ * against). Callers use it only to choose between error shapes, never to
81
+ * release data, so a revoked or narrowed grant getting a 404 instead of a
82
+ * 401 discloses nothing. Returns undefined for any other credential.
83
+ */
84
+ async function authorizeWriteSession(request) {
85
+ return writeSessions.recognizeWriteSession(request);
86
+ }
87
+ return {
88
+ authorizeOwner,
89
+ authorizeWrite,
90
+ authorizeWriteSession,
45
91
  async authorizeBuilderList(request) {
46
92
  const result = await authenticate(request, deps);
47
93
  if (result.isPolicyBypass ||
@@ -76,6 +122,10 @@ export function createServerApiAuth(deps) {
76
122
  result.mechanism === "control-plane-token")) {
77
123
  return { builder: result.auth.signer, grantId: "owner" };
78
124
  }
125
+ // Fail closed: a builder grant read can't be authorized if we can't
126
+ // identify this server's owner to bind the grant to.
127
+ if (!deps.serverOwner)
128
+ throw serverNotConfigured();
79
129
  const selectedEntry = deps.dataStorage?.findEntry({
80
130
  scope: input.scope,
81
131
  fileId: input.fileId,
@@ -85,6 +135,7 @@ export function createServerApiAuth(deps) {
85
135
  grantId: result.auth.payload.grantId ?? input.grantId,
86
136
  requestedScope: input.scope,
87
137
  fileId: input.fileId ?? selectedEntry?.fileId ?? undefined,
138
+ serverOwner: deps.serverOwner,
88
139
  }, {
89
140
  authSessionVerifier: deps.gateway,
90
141
  grantVerifier: deps.gateway,
@@ -1 +1 @@
1
- {"version":3,"file":"api-auth.js","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-auth.js","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"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"}
package/dist/app.d.ts CHANGED
@@ -5,13 +5,21 @@ import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/
5
5
  import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
6
6
  import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
7
7
  import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
8
+ import type { PersonalServerReadFulfillmentReporter } from "@opendatalabs/personal-server-ts-core/api";
8
9
  import { type HealthDeps } from "./routes/health.js";
10
+ import { type WriteProofReplayStore, type WriteSessionStore } from "@opendatalabs/personal-server-ts-core/write";
9
11
  import { McpActivityRecorder, type McpConnectionStore, type McpOAuthAuthorizationStore } from "@opendatalabs/personal-server-ts-core/mcp";
10
- import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
12
+ import type { ScopeDeletionTracker, SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
11
13
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
14
+ import type { LineageGatewayPort } from "@opendatalabs/personal-server-ts-core/lineage";
15
+ import type { QuestionStore, RecomputeScheduler } from "@opendatalabs/personal-server-ts-core/derivatives";
12
16
  import type { DataStoragePort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
13
17
  import type { TokenStore } from "./token-store.js";
14
18
  import type { Logger } from "pino";
19
+ import type { JobRequestEnvelope } from "@opendatalabs/vana-sdk/protocol/jobs";
20
+ import type { JobExecuteResponse } from "./jobs/types.js";
21
+ import type { PdppAuthorizationService } from "@opendatalabs/personal-server-ts-core/ports/pdpp-auth";
22
+ import type { PdppRecordStore, StreamDeclarationRegistry } from "@opendatalabs/personal-server-ts-core/storage/pdpp-records";
15
23
  export interface IdentityInfo {
16
24
  address: `0x${string}`;
17
25
  publicKey: `0x${string}`;
@@ -34,13 +42,23 @@ export interface AppDeps {
34
42
  config?: ServerConfig;
35
43
  accessLogWriter: AccessLogWriter;
36
44
  accessLogReader: AccessLogReader;
45
+ readFulfillmentReporter?: PersonalServerReadFulfillmentReporter;
37
46
  cloudMode?: boolean;
38
47
  devToken?: string;
48
+ /**
49
+ * Port of the loopback-only auth listener. The dev UI subtree is served
50
+ * only to connections that arrived on it (never via the tunnel).
51
+ */
52
+ localApprovalPort?: number;
53
+ /** Main server port; a loopback-port collision disables the dev UI. */
54
+ serverPort?: number;
39
55
  ownerSignature?: `0x${string}`;
40
56
  ownerPrivateKey?: `0x${string}`;
41
57
  accessToken?: string;
42
58
  configPath?: string;
43
59
  syncManager?: SyncManager | null;
60
+ /** Read-side tombstone memory; reads of a deleted scope answer 410. */
61
+ scopeDeletions?: ScopeDeletionTracker;
44
62
  serverSigner?: ServerSigner;
45
63
  tokenStore?: TokenStore;
46
64
  runtimeAvailability?: RuntimeAvailabilityPort;
@@ -55,7 +73,24 @@ export interface AppDeps {
55
73
  * Off-by-default to keep dev / test setups frictionless.
56
74
  */
57
75
  paymentEnabled?: boolean;
76
+ /** Derivative data: gateway lineage access for the data routes. */
77
+ lineageGateway?: LineageGatewayPort;
78
+ /**
79
+ * Derivative compute layer (docs/derivative-data-api.md, "Compute").
80
+ * Absent = /v1/derivatives answers 503 and writes trigger no recompute.
81
+ */
82
+ derivativeCompute?: {
83
+ store: QuestionStore;
84
+ scheduler: RecomputeScheduler;
85
+ } | null;
58
86
  getTunnelStatus?: HealthDeps["getTunnelStatus"];
87
+ /**
88
+ * Invoked when the /ui/api registration route confirms the server is
89
+ * registered with the gateway (fresh or pre-existing), so a
90
+ * registration-gated tunnel can start immediately instead of waiting for
91
+ * the bootstrap's gateway poll (BUI-611).
92
+ */
93
+ onServerRegistered?: (serverId: string | null) => void;
59
94
  /**
60
95
  * MCP connection store shared between the `/mcp/:token` Streamable HTTP
61
96
  * endpoint and the owner `/v1/mcp/connections` management surface. Defaults
@@ -66,6 +101,36 @@ export interface AppDeps {
66
101
  mcpOAuthAuthorizationStore?: McpOAuthAuthorizationStore;
67
102
  mcpOAuthApprovalUrl?: string | (() => string);
68
103
  mcpActivityRecorder?: McpActivityRecorder;
104
+ mcpHydrateScopes?: (scopes: string[]) => Promise<void>;
105
+ /**
106
+ * Write API session store shared between POST /v1/write/session (which
107
+ * mints tokens) and the ingest endpoint (which redeems them). Defaults to
108
+ * an in-memory store, mirroring the MCP connection store default.
109
+ */
110
+ writeSessionStore?: WriteSessionStore;
111
+ /**
112
+ * Replay guard for per-write proofs on delegated ingest. Defaults to an
113
+ * in-memory store (api-auth); hosts may supply a shared one.
114
+ */
115
+ writeProofReplayStore?: WriteProofReplayStore;
116
+ profile?: "standard" | "enclave";
117
+ jobWorker?: (envelope: JobRequestEnvelope) => Promise<JobExecuteResponse>;
118
+ /**
119
+ * PDPP §4/§8 record model + Resource Server query surface. Absent = the
120
+ * PDPP routes are not mounted; existing deployments are unaffected. When
121
+ * present, all three must be present together (record store, token
122
+ * resolution, and stream declarations are mutually required).
123
+ */
124
+ pdpp?: {
125
+ store: PdppRecordStore;
126
+ auth: PdppAuthorizationService;
127
+ declarations: StreamDeclarationRegistry;
128
+ instancesForSubject?: (subjectId: string) => string[];
129
+ readBlobBytes?: (blobId: string) => Promise<Uint8Array<ArrayBuffer> | undefined>;
130
+ /** This resource server's own identifier, RFC 9728 `resource` member. */
131
+ resource: string;
132
+ authorizationServers?: string[];
133
+ };
69
134
  }
70
135
  export declare function createApp(deps: AppDeps): Hono;
71
136
  //# 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;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;AAWlE,OAAO,EACL,mBAAmB,EAGnB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAChC,MAAM,2CAA2C,CAAC;AASnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EACV,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,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAChD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAuP7C"}
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,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,KAAK,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AACvG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKlE,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACvB,MAAM,6CAA6C,CAAC;AAcrD,OAAO,EACL,mBAAmB,EAGnB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAChC,MAAM,2CAA2C,CAAC;AASnD,OAAO,KAAK,EACV,oBAAoB,EACpB,WAAW,EACZ,MAAM,4CAA4C,CAAC;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACxF,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EACnB,MAAM,mDAAmD,CAAC;AAC3D,OAAO,KAAK,EACV,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,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAI1D,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACtG,OAAO,KAAK,EACV,eAAe,EACf,yBAAyB,EAC1B,MAAM,4DAA4D,CAAC;AAEpE,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,uBAAuB,CAAC,EAAE,qCAAqC,CAAC;IAChE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,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,uEAAuE;IACvE,cAAc,CAAC,EAAE,oBAAoB,CAAC;IACtC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;IAC9C,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mEAAmE;IACnE,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC;;;OAGG;IACH,iBAAiB,CAAC,EAAE;QAClB,KAAK,EAAE,aAAa,CAAC;QACrB,SAAS,EAAE,kBAAkB,CAAC;KAC/B,GAAG,IAAI,CAAC;IACT,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;IAChD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACvD;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,mBAAmB,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IAC9C,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvD;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC;;;OAGG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAC9C,OAAO,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,kBAAkB,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC1E;;;;;OAKG;IACH,IAAI,CAAC,EAAE;QACL,KAAK,EAAE,eAAe,CAAC;QACvB,IAAI,EAAE,wBAAwB,CAAC;QAC/B,YAAY,EAAE,yBAAyB,CAAC;QACxC,mBAAmB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QACtD,aAAa,CAAC,EAAE,CACd,MAAM,EAAE,MAAM,KACX,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC,CAAC;QAClD,yEAAyE;QACzE,QAAQ,EAAE,MAAM,CAAC;QACjB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC;CACH;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CA8Y7C"}
package/dist/app.js CHANGED
@@ -1,27 +1,52 @@
1
1
  import { Hono } from "hono";
2
- import { cors } from "hono/cors";
3
2
  import { ProtocolError } from "@opendatalabs/personal-server-ts-core/errors";
4
3
  import { healthRoute } from "./routes/health.js";
4
+ import { corsMiddleware } from "./middleware/cors.js";
5
+ import { requireLoopbackListener } from "./middleware/local-listener.js";
5
6
  import { dataRoutes } from "./routes/data.js";
7
+ import { writeSessionRoutes } from "./routes/write-session.js";
8
+ import { createInMemoryWriteProofReplayStore, createInMemoryWriteSessionStore, } from "@opendatalabs/personal-server-ts-core/write";
9
+ import { derivativesRoutes } from "./routes/derivatives.js";
6
10
  import { grantsRoutes } from "./routes/grants.js";
7
11
  import { accessLogsRoutes } from "./routes/access-logs.js";
8
12
  import { syncRoutes } from "./routes/sync.js";
9
- import { mcpActivityRoutes, mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
13
+ import { executeMcpConnectionRequest, mcpActivityRoutes, mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
14
+ import { enclaveMcpRoutes } from "./routes/enclave-mcp.js";
15
+ import { enclaveFleetRoutes } from "./routes/enclave-fleet.js";
10
16
  import { McpActivityRecorder, createInMemoryMcpConnectionStore, createInMemoryMcpOAuthAuthorizationStore, } from "@opendatalabs/personal-server-ts-core/mcp";
11
17
  import { uiConfigRoutes } from "./routes/ui-config.js";
12
18
  import { uiRegistrationRoutes } from "./routes/ui-registration.js";
13
19
  import { uiRoute } from "./routes/ui.js";
14
20
  import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
15
21
  import { oauthTokenRoutes } from "./routes/oauth-token.js";
22
+ import { enclaveJobRoutes } from "./routes/enclave-jobs.js";
23
+ import { pdppRecordsRoutes } from "./routes/pdpp-records.js";
24
+ import { pdppBlobsRoutes } from "./routes/pdpp-blobs.js";
25
+ import { pdppWellKnownRoutes } from "./routes/pdpp-well-known.js";
16
26
  export function createApp(deps) {
17
27
  const app = new Hono();
18
- // CORS — allow all origins for browser-based clients
19
- app.use("*", cors({
20
- origin: "*",
21
- allowHeaders: ["Content-Type", "Authorization"],
22
- allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
23
- maxAge: 86400,
24
- }));
28
+ // One store for mint (POST /v1/write/session) and redeem (data ingest and
29
+ // derivative question registration), and one replay guard for the proofs
30
+ // both redeeming routes verify.
31
+ const writeSessionStore = deps.writeSessionStore ?? createInMemoryWriteSessionStore();
32
+ const writeProofReplayStore = deps.writeProofReplayStore ?? createInMemoryWriteProofReplayStore();
33
+ // CORS — allow all origins for browser-based clients. Registered first so
34
+ // OPTIONS preflights are answered before any route or auth code runs
35
+ // (route sub-apps only register their real methods).
36
+ // Dev UI gate — registered BEFORE the permissive global CORS so a
37
+ // cross-origin preflight for /ui/* is refused rather than answered with
38
+ // `Access-Control-Allow-Origin: *`. The whole /ui subtree is served only to
39
+ // connections on the loopback auth listener: the tunnel forwards the main
40
+ // server port, so without this gate the page (and the dev token it
41
+ // carries, which is a full owner/policy bypass) is reachable by anyone who
42
+ // knows the public tunnel URL.
43
+ const uiLoopbackOnly = requireLoopbackListener({
44
+ localApprovalPort: deps.localApprovalPort,
45
+ serverPort: deps.serverPort,
46
+ });
47
+ app.use("/ui", uiLoopbackOnly);
48
+ app.use("/ui/*", uiLoopbackOnly);
49
+ app.use("*", corsMiddleware());
25
50
  // Mount health route
26
51
  app.route("/", healthRoute({
27
52
  version: deps.version,
@@ -35,6 +60,35 @@ export function createApp(deps) {
35
60
  getTunnelStatus: deps.getTunnelStatus,
36
61
  runtimeAvailability: deps.runtimeAvailability,
37
62
  }));
63
+ // PDPP §4 record model + §8 Resource Server query surface. Independent of
64
+ // the legacy DPP fileId/scope routes above; mounted only when a pdpp deps
65
+ // bundle is supplied.
66
+ if (deps.pdpp) {
67
+ app.route("/v1", pdppRecordsRoutes({
68
+ store: deps.pdpp.store,
69
+ auth: deps.pdpp.auth,
70
+ declarations: deps.pdpp.declarations,
71
+ instancesForSubject: deps.pdpp.instancesForSubject,
72
+ }));
73
+ app.route("/v1/blobs", pdppBlobsRoutes({
74
+ store: deps.pdpp.store,
75
+ auth: deps.pdpp.auth,
76
+ declarations: deps.pdpp.declarations,
77
+ instancesForSubject: deps.pdpp.instancesForSubject,
78
+ readBlobBytes: deps.pdpp.readBlobBytes,
79
+ }));
80
+ app.route("/.well-known", pdppWellKnownRoutes({
81
+ resource: deps.pdpp.resource,
82
+ coreQueryBase: "/v1",
83
+ authorizationServers: deps.pdpp.authorizationServers,
84
+ }));
85
+ }
86
+ if (deps.profile === "enclave" && deps.jobWorker && deps.accessToken) {
87
+ app.route("/enclave/v1/jobs", enclaveJobRoutes({
88
+ accessToken: deps.accessToken,
89
+ executeJob: deps.jobWorker,
90
+ }));
91
+ }
38
92
  // Mount data routes (ingest + read + delete)
39
93
  app.route("/v1/data", dataRoutes({
40
94
  indexManager: deps.indexManager,
@@ -44,10 +98,12 @@ export function createApp(deps) {
44
98
  serverOwner: deps.serverOwner,
45
99
  gateway: deps.gateway,
46
100
  accessLogWriter: deps.accessLogWriter,
101
+ readFulfillmentReporter: deps.readFulfillmentReporter,
47
102
  devToken: deps.devToken,
48
103
  accessToken: deps.accessToken,
49
104
  tokenStore: deps.tokenStore,
50
105
  syncManager: deps.syncManager ?? null,
106
+ scopeDeletions: deps.scopeDeletions,
51
107
  runtimeAvailability: deps.runtimeAvailability,
52
108
  dataStorage: deps.dataStorage,
53
109
  // Powers the RECORD_DATA_ACCESS attestation embedded in X402 challenges.
@@ -60,8 +116,49 @@ export function createApp(deps) {
60
116
  gatewayConfig: deps.gatewayConfig,
61
117
  gatewayUrl: deps.gatewayUrl ?? deps.config?.gateway.url ?? deps.gatewayConfig?.url,
62
118
  paymentEnabled: deps.paymentEnabled,
119
+ lineageGateway: deps.lineageGateway,
120
+ writeSessionStore,
121
+ writeProofReplayStore,
122
+ // A new local version of a scope marks every question that reads it
123
+ // stale; the recompute waits for a reader.
124
+ onDataWritten: deps.derivativeCompute
125
+ ? (event) => deps.derivativeCompute?.scheduler.markSourceChanged(event.scope, {
126
+ lineageSources: event.lineageSources,
127
+ })
128
+ : undefined,
129
+ // And an authorized read of a derived scope is that reader.
130
+ onDataRead: deps.derivativeCompute
131
+ ? (event) => deps.derivativeCompute?.scheduler.markDemand(event.scope)
132
+ : undefined,
63
133
  mountPath: "/v1/data",
64
134
  }));
135
+ // Derivative compute: question registration + readiness for builders.
136
+ app.route("/v1/derivatives", derivativesRoutes({
137
+ logger: deps.logger,
138
+ serverOrigin: deps.serverOrigin,
139
+ serverOwner: deps.serverOwner,
140
+ gateway: deps.gateway,
141
+ devToken: deps.devToken,
142
+ accessToken: deps.accessToken,
143
+ tokenStore: deps.tokenStore,
144
+ dataStorage: deps.dataStorage,
145
+ runtimeAvailability: deps.runtimeAvailability,
146
+ writeSessionStore,
147
+ writeProofReplayStore,
148
+ compute: deps.derivativeCompute ?? null,
149
+ mountPath: "/v1/derivatives",
150
+ }));
151
+ // Mount the Write API session handshake (delegated builder writes).
152
+ app.route("/v1/write", writeSessionRoutes({
153
+ logger: deps.logger,
154
+ serverOrigin: deps.serverOrigin,
155
+ serverOwner: deps.serverOwner,
156
+ gateway: deps.gateway,
157
+ devToken: deps.devToken,
158
+ accessToken: deps.accessToken,
159
+ tokenStore: deps.tokenStore,
160
+ sessionStore: writeSessionStore,
161
+ }));
65
162
  // Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
66
163
  app.route("/v1/grants", grantsRoutes({
67
164
  logger: deps.logger,
@@ -111,13 +208,16 @@ export function createApp(deps) {
111
208
  logger: deps.logger,
112
209
  serverOrigin: deps.serverOrigin,
113
210
  serverOwner: deps.serverOwner,
211
+ serverAddress: deps.identity?.address,
114
212
  serverSigner: deps.serverSigner,
115
213
  gateway: deps.gateway,
116
214
  gatewayConfig: deps.gatewayConfig,
215
+ paymentEnabled: deps.paymentEnabled,
117
216
  devToken: deps.devToken,
118
217
  accessToken: deps.accessToken,
119
218
  tokenStore: deps.tokenStore,
120
219
  accessLogWriter: deps.accessLogWriter,
220
+ readFulfillmentReporter: deps.readFulfillmentReporter,
121
221
  indexManager: deps.indexManager,
122
222
  hierarchyOptions: deps.hierarchyOptions,
123
223
  dataStorage: deps.dataStorage,
@@ -131,6 +231,34 @@ export function createApp(deps) {
131
231
  app.route("/v1/mcp/connections", mcpConnectionsRoutes(mcpRouteDeps));
132
232
  app.route("/v1/mcp/activity", mcpActivityRoutes(mcpRouteDeps));
133
233
  app.route("/mcp", mcpStreamableHttpRoutes(mcpRouteDeps));
234
+ if (deps.profile === "enclave" && deps.accessToken && deps.serverOwner) {
235
+ app.route("/enclave/v1/fleet", enclaveFleetRoutes({
236
+ accessToken: deps.accessToken,
237
+ hydrate: async (scopes) => {
238
+ if (!deps.mcpHydrateScopes)
239
+ throw new Error("Scoped hydration unavailable");
240
+ await deps.mcpHydrateScopes(scopes);
241
+ },
242
+ observe: async (scope) => {
243
+ const storage = deps.dataStorage;
244
+ const entry = storage?.findEntry({ scope });
245
+ const ready = entry && storage?.hasScopeBlocks
246
+ ? await storage.hasScopeBlocks(scope, entry.collectedAt)
247
+ : false;
248
+ return { dataVersion: entry?.version ?? null, ready };
249
+ },
250
+ }));
251
+ app.route("/enclave/v1/mcp", enclaveMcpRoutes({
252
+ accessToken: deps.accessToken,
253
+ serverOwner: deps.serverOwner,
254
+ execute: async (request, connection) => {
255
+ await deps.mcpHydrateScopes?.([
256
+ ...new Set(connection.grants.flatMap((grant) => grant.scopes)),
257
+ ]);
258
+ return executeMcpConnectionRequest(request, connection, mcpRouteDeps);
259
+ },
260
+ }));
261
+ }
134
262
  // Mount login flow v2 routes (self-hosted CLI auth, no auth required)
135
263
  if (deps.tokenStore) {
136
264
  app.route("/auth/device", authDeviceRoutes({
@@ -153,7 +281,8 @@ export function createApp(deps) {
153
281
  deviceSessions: createDeviceSessionLookup(),
154
282
  }));
155
283
  }
156
- // Mount dev UI routes when dev token is available
284
+ // Mount dev UI routes when dev token is available. The /ui subtree is
285
+ // already gated to the loopback auth listener above.
157
286
  if (deps.devToken) {
158
287
  app.route("/ui", uiRoute({
159
288
  devToken: deps.devToken,
@@ -173,6 +302,7 @@ export function createApp(deps) {
173
302
  app.route("/ui/api", uiRegistrationRoutes({
174
303
  devToken: deps.devToken,
175
304
  ownerPrivateKey: deps.ownerPrivateKey,
305
+ onRegistered: deps.onServerRegistered,
176
306
  }));
177
307
  }
178
308
  // Global error handler
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAU7E,OAAO,EAAE,WAAW,EAAmB,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,uBAAuB,GACxB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,mBAAmB,EACnB,gCAAgC,EAChC,wCAAwC,GAGzC,MAAM,2CAA2C,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,EACL,gBAAgB,EAChB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiE3D,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;IAEvB,qDAAqD;IACrD,GAAG,CAAC,GAAG,CACL,GAAG,EACH,IAAI,CAAC;QACH,MAAM,EAAE,GAAG;QACX,YAAY,EAAE,CAAC,cAAc,EAAE,eAAe,CAAC;QAC/C,YAAY,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC;QACzD,MAAM,EAAE,KAAK;KACd,CAAC,CACH,CAAC;IAEF,qBAAqB;IACrB,GAAG,CAAC,KAAK,CACP,GAAG,EACH,WAAW,CAAC;QACV,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;KAC9C,CAAC,CACH,CAAC;IAEF,6CAA6C;IAC7C,GAAG,CAAC,KAAK,CACP,UAAU,EACV,UAAU,CAAC;QACT,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,yEAAyE;QACzE,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,OAAO;QACrC,mEAAmE;QACnE,mEAAmE;QACnE,iEAAiE;QACjE,mDAAmD;QACnD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,UAAU,EACR,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG;QACxE,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,UAAU;KACtB,CAAC,CACH,CAAC;IAEF,iFAAiF;IACjF,GAAG,CAAC,KAAK,CACP,YAAY,EACZ,YAAY,CAAC;QACX,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,SAAS,EAAE,YAAY;KACxB,CAAC,CACH,CAAC;IAEF,4CAA4C;IAC5C,GAAG,CAAC,KAAK,CACP,iBAAiB,EACjB,gBAAgB,CAAC;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,SAAS,EAAE,iBAAiB;KAC7B,CAAC,CACH,CAAC;IAEF,qCAAqC;IACrC,GAAG,CAAC,KAAK,CACP,UAAU,EACV,UAAU,CAAC;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,WAAW,EAAE,IAAI,CAAC,WAAW,IAAI,IAAI;QACrC,SAAS,EAAE,UAAU;KACtB,CAAC,CACH,CAAC;IAEF,2DAA2D;IAC3D,0EAA0E;IAC1E,0EAA0E;IAC1E,qBAAqB;IACrB,MAAM,kBAAkB,GACtB,IAAI,CAAC,kBAAkB,IAAI,gCAAgC,EAAE,CAAC;IAChE,MAAM,0BAA0B,GAC9B,IAAI,CAAC,0BAA0B;QAC/B,wCAAwC,EAAE,CAAC;IAC7C,MAAM,mBAAmB,GACvB,IAAI,CAAC,mBAAmB,IAAI,IAAI,mBAAmB,EAAE,CAAC;IACxD,MAAM,YAAY,GAAG;QACnB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,kBAAkB;QACnC,uBAAuB,EAAE,0BAA0B;QACnD,gBAAgB,EAAE,IAAI,CAAC,mBAAmB;QAC1C,gBAAgB,EAAE,mBAAmB;KACtC,CAAC;IAEF,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7C,GAAG,CAAC,KAAK,CAAC,qBAAqB,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC,CAAC;IACrE,GAAG,CAAC,KAAK,CAAC,kBAAkB,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;IAEzD,sEAAsE;IACtE,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,GAAG,CAAC,KAAK,CACP,cAAc,EACd,gBAAgB,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,qBAAqB,EAAE,CAAC,IAAI,CAAC,SAAS;SACvC,CAAC,CACH,CAAC;QAEF,0EAA0E;QAC1E,8DAA8D;QAC9D,0EAA0E;QAC1E,GAAG,CAAC,KAAK,CACP,cAAc,EACd,gBAAgB,CAAC;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,kBAAkB,EAAE,IAAI,CAAC,WAAW;YACpC,cAAc,EAAE,yBAAyB,EAAE;SAC5C,CAAC,CACH,CAAC;IACJ,CAAC;IAED,kDAAkD;IAClD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,GAAG,CAAC,KAAK,CACP,KAAK,EACL,OAAO,CAAC;YACN,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,cAAc;gBAClC,CAAC,CAAC;oBACE,cAAc,EAAE,IAAI,CAAC,cAAc;oBACnC,MAAM,EAAE,IAAI,CAAC,MAAM;iBACpB;gBACH,CAAC,CAAC,IAAI;SACT,CAAC,CACH,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,GAAG,CAAC,KAAK,CACP,SAAS,EACT,cAAc,CAAC;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,UAAU,EAAE,IAAI,CAAC,UAAU;aAC5B,CAAC,CACH,CAAC;QACJ,CAAC;QACD,GAAG,CAAC,KAAK,CACP,SAAS,EACT,oBAAoB,CAAC;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,eAAe,EAAE,IAAI,CAAC,eAAe;SACtC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,uBAAuB;IACvB,GAAG,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACrB,IAAI,GAAG,YAAY,aAAa,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,CAAC,IAA6B,CAAC,CAAC;QACjE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;QAC9C,OAAO,CAAC,CAAC,IAAI,CACX;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,gBAAgB;gBAC3B,OAAO,EAAE,uBAAuB;aACjC;SACF,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,eAAe;IACf,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE;QACjB,OAAO,CAAC,CAAC,IAAI,CACX;YACE,KAAK,EAAE;gBACL,IAAI,EAAE,GAAG;gBACT,SAAS,EAAE,WAAW;gBACtB,OAAO,EAAE,WAAW;aACrB;SACF,EACD,GAAG,CACJ,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
2
+ import type { PersonalServerReadFulfillmentReporter } from "@opendatalabs/personal-server-ts-core/api";
2
3
  import { type Logger } from "./logger/index.js";
3
4
  import { type IndexManager } from "./storage/index-manager.js";
4
5
  import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
@@ -6,8 +7,11 @@ import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logg
6
7
  import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
7
8
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
8
9
  import { type SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
10
+ import type { DataPointFeedPort } from "@opendatalabs/personal-server-ts-core/ports";
9
11
  import type { Hono } from "hono";
10
12
  import { TunnelManager } from "./tunnel/index.js";
13
+ import { type InferenceProvider } from "@opendatalabs/personal-server-ts-core/derivatives";
14
+ import { type JobWorkerDeps } from "./jobs/worker.js";
11
15
  export interface ServerContext {
12
16
  app: Hono;
13
17
  logger: Logger;
@@ -31,11 +35,38 @@ export interface ServerContext {
31
35
  }
32
36
  export interface CreateServerOptions {
33
37
  rootPath?: string;
38
+ /** Exact owner scopes to hydrate before the first full sync pass. */
39
+ hydrateScopes?: string[];
40
+ /**
41
+ * Inference provider for the derivative compute layer. Defaults to the
42
+ * OpenAI-compatible client on `config.inference` (env overrides:
43
+ * INFERENCE_BASE_URL, INFERENCE_MODEL, INFERENCE_API_KEY). Tests inject
44
+ * a fake.
45
+ */
46
+ inferenceProvider?: InferenceProvider;
34
47
  /** @deprecated Use rootPath instead. */
35
48
  serverDir?: string;
36
49
  dataDir?: string;
37
50
  ownerSignature?: `0x${string}`;
51
+ jobResultUpload?: JobWorkerDeps["resultUpload"];
38
52
  gatewayClient?: GatewayClient;
53
+ /**
54
+ * Deletion-aware gateway feed (`includeDeleted=true` listings + tombstone
55
+ * lookups). Defaults to a REST feed on `config.gateway.url`; inject with a
56
+ * mock gateway in tests.
57
+ */
58
+ dataPointFeed?: DataPointFeedPort;
59
+ readFulfillmentReporter?: PersonalServerReadFulfillmentReporter;
60
+ /**
61
+ * MCP OAuth approval page URL (or a lazy getter for it). When set, the MCP
62
+ * OAuth router advertises discovery metadata and redirects authorization
63
+ * requests to this page for owner approval; when absent, MCP OAuth
64
+ * endpoints report MCP_OAUTH_NOT_CONFIGURED. Hosts that render their own
65
+ * approval surface (e.g. the desktop app) pass it here.
66
+ */
67
+ mcpOAuthApprovalUrl?: string | (() => string);
68
+ profile?: "standard" | "enclave";
69
+ serverAccount?: ServerAccount;
39
70
  }
40
71
  export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
41
72
  //# sourceMappingURL=bootstrap.d.ts.map