@opendatalabs/personal-server-ts-server 0.0.1-canary.eecb7d7 → 0.0.1-canary.eecdaa7

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 (159) 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 +39 -1
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +111 -10
  8. package/dist/app.js.map +1 -1
  9. package/dist/bootstrap.d.ts +29 -0
  10. package/dist/bootstrap.d.ts.map +1 -1
  11. package/dist/bootstrap.js +186 -11
  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 +1 -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 +29 -1
  91. package/dist/routes/data.d.ts.map +1 -1
  92. package/dist/routes/data.js +6 -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 +24 -3
  111. package/dist/routes/mcp.d.ts.map +1 -1
  112. package/dist/routes/mcp.js +211 -37
  113. package/dist/routes/mcp.js.map +1 -1
  114. package/dist/routes/ui.d.ts +7 -0
  115. package/dist/routes/ui.d.ts.map +1 -1
  116. package/dist/routes/ui.js +32 -3
  117. package/dist/routes/ui.js.map +1 -1
  118. package/dist/routes/write-session.d.ts +37 -0
  119. package/dist/routes/write-session.d.ts.map +1 -0
  120. package/dist/routes/write-session.js +34 -0
  121. package/dist/routes/write-session.js.map +1 -0
  122. package/dist/scripts/bundle-verification.d.ts +2 -0
  123. package/dist/scripts/bundle-verification.d.ts.map +1 -0
  124. package/dist/scripts/bundle-verification.js +32 -0
  125. package/dist/scripts/bundle-verification.js.map +1 -0
  126. package/dist/scripts/verify-bundle.d.ts +2 -0
  127. package/dist/scripts/verify-bundle.d.ts.map +1 -0
  128. package/dist/scripts/verify-bundle.js +44 -0
  129. package/dist/scripts/verify-bundle.js.map +1 -0
  130. package/dist/storage/hierarchy.d.ts +11 -0
  131. package/dist/storage/hierarchy.d.ts.map +1 -1
  132. package/dist/storage/hierarchy.js +52 -1
  133. package/dist/storage/hierarchy.js.map +1 -1
  134. package/dist/storage/index-manager.d.ts +7 -0
  135. package/dist/storage/index-manager.d.ts.map +1 -1
  136. package/dist/storage/index-manager.js +9 -2
  137. package/dist/storage/index-manager.js.map +1 -1
  138. package/dist/storage/index-schema.d.ts +1 -1
  139. package/dist/storage/index-schema.d.ts.map +1 -1
  140. package/dist/storage/index-schema.js +9 -2
  141. package/dist/storage/index-schema.js.map +1 -1
  142. package/dist/storage/node-data-storage.d.ts.map +1 -1
  143. package/dist/storage/node-data-storage.js +28 -1
  144. package/dist/storage/node-data-storage.js.map +1 -1
  145. package/dist/storage/pdpp-records-sqlite-store.d.ts +8 -0
  146. package/dist/storage/pdpp-records-sqlite-store.d.ts.map +1 -0
  147. package/dist/storage/pdpp-records-sqlite-store.js +472 -0
  148. package/dist/storage/pdpp-records-sqlite-store.js.map +1 -0
  149. package/dist/storage/question-store.d.ts +9 -0
  150. package/dist/storage/question-store.d.ts.map +1 -0
  151. package/dist/storage/question-store.js +173 -0
  152. package/dist/storage/question-store.js.map +1 -0
  153. package/dist/tunnel/binary.d.ts +8 -0
  154. package/dist/tunnel/binary.d.ts.map +1 -1
  155. package/dist/tunnel/binary.js +11 -0
  156. package/dist/tunnel/binary.js.map +1 -1
  157. package/dist/ui/index.html +13 -0
  158. package/dist/ui/ps-lite-debug.js +11094 -4280
  159. package/package.json +15 -7
@@ -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
@@ -7,12 +7,17 @@ import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logg
7
7
  import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
8
8
  import type { PersonalServerReadFulfillmentReporter } from "@opendatalabs/personal-server-ts-core/api";
9
9
  import { type HealthDeps } from "./routes/health.js";
10
+ import { type WriteProofReplayStore, type WriteSessionStore } from "@opendatalabs/personal-server-ts-core/write";
10
11
  import { McpActivityRecorder, type McpConnectionStore, type McpOAuthAuthorizationStore } from "@opendatalabs/personal-server-ts-core/mcp";
11
- import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
12
+ import type { ScopeDeletionTracker, SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
12
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";
13
16
  import type { DataStoragePort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
14
17
  import type { TokenStore } from "./token-store.js";
15
18
  import type { Logger } from "pino";
19
+ import type { JobRequestEnvelope } from "@opendatalabs/vana-sdk/protocol/jobs";
20
+ import type { JobExecuteResponse } from "./jobs/types.js";
16
21
  export interface IdentityInfo {
17
22
  address: `0x${string}`;
18
23
  publicKey: `0x${string}`;
@@ -38,11 +43,20 @@ export interface AppDeps {
38
43
  readFulfillmentReporter?: PersonalServerReadFulfillmentReporter;
39
44
  cloudMode?: boolean;
40
45
  devToken?: string;
46
+ /**
47
+ * Port of the loopback-only auth listener. The dev UI subtree is served
48
+ * only to connections that arrived on it (never via the tunnel).
49
+ */
50
+ localApprovalPort?: number;
51
+ /** Main server port; a loopback-port collision disables the dev UI. */
52
+ serverPort?: number;
41
53
  ownerSignature?: `0x${string}`;
42
54
  ownerPrivateKey?: `0x${string}`;
43
55
  accessToken?: string;
44
56
  configPath?: string;
45
57
  syncManager?: SyncManager | null;
58
+ /** Read-side tombstone memory; reads of a deleted scope answer 410. */
59
+ scopeDeletions?: ScopeDeletionTracker;
46
60
  serverSigner?: ServerSigner;
47
61
  tokenStore?: TokenStore;
48
62
  runtimeAvailability?: RuntimeAvailabilityPort;
@@ -57,6 +71,16 @@ export interface AppDeps {
57
71
  * Off-by-default to keep dev / test setups frictionless.
58
72
  */
59
73
  paymentEnabled?: boolean;
74
+ /** Derivative data: gateway lineage access for the data routes. */
75
+ lineageGateway?: LineageGatewayPort;
76
+ /**
77
+ * Derivative compute layer (docs/derivative-data-api.md, "Compute").
78
+ * Absent = /v1/derivatives answers 503 and writes trigger no recompute.
79
+ */
80
+ derivativeCompute?: {
81
+ store: QuestionStore;
82
+ scheduler: RecomputeScheduler;
83
+ } | null;
60
84
  getTunnelStatus?: HealthDeps["getTunnelStatus"];
61
85
  /**
62
86
  * Invoked when the /ui/api registration route confirms the server is
@@ -75,6 +99,20 @@ export interface AppDeps {
75
99
  mcpOAuthAuthorizationStore?: McpOAuthAuthorizationStore;
76
100
  mcpOAuthApprovalUrl?: string | (() => string);
77
101
  mcpActivityRecorder?: McpActivityRecorder;
102
+ mcpHydrateScopes?: (scopes: string[]) => Promise<void>;
103
+ /**
104
+ * Write API session store shared between POST /v1/write/session (which
105
+ * mints tokens) and the ingest endpoint (which redeems them). Defaults to
106
+ * an in-memory store, mirroring the MCP connection store default.
107
+ */
108
+ writeSessionStore?: WriteSessionStore;
109
+ /**
110
+ * Replay guard for per-write proofs on delegated ingest. Defaults to an
111
+ * in-memory store (api-auth); hosts may supply a shared one.
112
+ */
113
+ writeProofReplayStore?: WriteProofReplayStore;
114
+ profile?: "standard" | "enclave";
115
+ jobWorker?: (envelope: JobRequestEnvelope) => Promise<JobExecuteResponse>;
78
116
  }
79
117
  export declare function createApp(deps: AppDeps): Hono;
80
118
  //# 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":"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"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -1,27 +1,49 @@
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";
16
23
  export function createApp(deps) {
17
24
  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
- }));
25
+ // One store for mint (POST /v1/write/session) and redeem (data ingest and
26
+ // derivative question registration), and one replay guard for the proofs
27
+ // both redeeming routes verify.
28
+ const writeSessionStore = deps.writeSessionStore ?? createInMemoryWriteSessionStore();
29
+ const writeProofReplayStore = deps.writeProofReplayStore ?? createInMemoryWriteProofReplayStore();
30
+ // CORS — allow all origins for browser-based clients. Registered first so
31
+ // OPTIONS preflights are answered before any route or auth code runs
32
+ // (route sub-apps only register their real methods).
33
+ // Dev UI gate — registered BEFORE the permissive global CORS so a
34
+ // cross-origin preflight for /ui/* is refused rather than answered with
35
+ // `Access-Control-Allow-Origin: *`. The whole /ui subtree is served only to
36
+ // connections on the loopback auth listener: the tunnel forwards the main
37
+ // server port, so without this gate the page (and the dev token it
38
+ // carries, which is a full owner/policy bypass) is reachable by anyone who
39
+ // knows the public tunnel URL.
40
+ const uiLoopbackOnly = requireLoopbackListener({
41
+ localApprovalPort: deps.localApprovalPort,
42
+ serverPort: deps.serverPort,
43
+ });
44
+ app.use("/ui", uiLoopbackOnly);
45
+ app.use("/ui/*", uiLoopbackOnly);
46
+ app.use("*", corsMiddleware());
25
47
  // Mount health route
26
48
  app.route("/", healthRoute({
27
49
  version: deps.version,
@@ -35,6 +57,12 @@ export function createApp(deps) {
35
57
  getTunnelStatus: deps.getTunnelStatus,
36
58
  runtimeAvailability: deps.runtimeAvailability,
37
59
  }));
60
+ if (deps.profile === "enclave" && deps.jobWorker && deps.accessToken) {
61
+ app.route("/enclave/v1/jobs", enclaveJobRoutes({
62
+ accessToken: deps.accessToken,
63
+ executeJob: deps.jobWorker,
64
+ }));
65
+ }
38
66
  // Mount data routes (ingest + read + delete)
39
67
  app.route("/v1/data", dataRoutes({
40
68
  indexManager: deps.indexManager,
@@ -49,6 +77,7 @@ export function createApp(deps) {
49
77
  accessToken: deps.accessToken,
50
78
  tokenStore: deps.tokenStore,
51
79
  syncManager: deps.syncManager ?? null,
80
+ scopeDeletions: deps.scopeDeletions,
52
81
  runtimeAvailability: deps.runtimeAvailability,
53
82
  dataStorage: deps.dataStorage,
54
83
  // Powers the RECORD_DATA_ACCESS attestation embedded in X402 challenges.
@@ -61,8 +90,49 @@ export function createApp(deps) {
61
90
  gatewayConfig: deps.gatewayConfig,
62
91
  gatewayUrl: deps.gatewayUrl ?? deps.config?.gateway.url ?? deps.gatewayConfig?.url,
63
92
  paymentEnabled: deps.paymentEnabled,
93
+ lineageGateway: deps.lineageGateway,
94
+ writeSessionStore,
95
+ writeProofReplayStore,
96
+ // A new local version of a scope marks every question that reads it
97
+ // stale; the recompute waits for a reader.
98
+ onDataWritten: deps.derivativeCompute
99
+ ? (event) => deps.derivativeCompute?.scheduler.markSourceChanged(event.scope, {
100
+ lineageSources: event.lineageSources,
101
+ })
102
+ : undefined,
103
+ // And an authorized read of a derived scope is that reader.
104
+ onDataRead: deps.derivativeCompute
105
+ ? (event) => deps.derivativeCompute?.scheduler.markDemand(event.scope)
106
+ : undefined,
64
107
  mountPath: "/v1/data",
65
108
  }));
109
+ // Derivative compute: question registration + readiness for builders.
110
+ app.route("/v1/derivatives", derivativesRoutes({
111
+ logger: deps.logger,
112
+ serverOrigin: deps.serverOrigin,
113
+ serverOwner: deps.serverOwner,
114
+ gateway: deps.gateway,
115
+ devToken: deps.devToken,
116
+ accessToken: deps.accessToken,
117
+ tokenStore: deps.tokenStore,
118
+ dataStorage: deps.dataStorage,
119
+ runtimeAvailability: deps.runtimeAvailability,
120
+ writeSessionStore,
121
+ writeProofReplayStore,
122
+ compute: deps.derivativeCompute ?? null,
123
+ mountPath: "/v1/derivatives",
124
+ }));
125
+ // Mount the Write API session handshake (delegated builder writes).
126
+ app.route("/v1/write", writeSessionRoutes({
127
+ logger: deps.logger,
128
+ serverOrigin: deps.serverOrigin,
129
+ serverOwner: deps.serverOwner,
130
+ gateway: deps.gateway,
131
+ devToken: deps.devToken,
132
+ accessToken: deps.accessToken,
133
+ tokenStore: deps.tokenStore,
134
+ sessionStore: writeSessionStore,
135
+ }));
66
136
  // Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
67
137
  app.route("/v1/grants", grantsRoutes({
68
138
  logger: deps.logger,
@@ -112,9 +182,11 @@ export function createApp(deps) {
112
182
  logger: deps.logger,
113
183
  serverOrigin: deps.serverOrigin,
114
184
  serverOwner: deps.serverOwner,
185
+ serverAddress: deps.identity?.address,
115
186
  serverSigner: deps.serverSigner,
116
187
  gateway: deps.gateway,
117
188
  gatewayConfig: deps.gatewayConfig,
189
+ paymentEnabled: deps.paymentEnabled,
118
190
  devToken: deps.devToken,
119
191
  accessToken: deps.accessToken,
120
192
  tokenStore: deps.tokenStore,
@@ -133,6 +205,34 @@ export function createApp(deps) {
133
205
  app.route("/v1/mcp/connections", mcpConnectionsRoutes(mcpRouteDeps));
134
206
  app.route("/v1/mcp/activity", mcpActivityRoutes(mcpRouteDeps));
135
207
  app.route("/mcp", mcpStreamableHttpRoutes(mcpRouteDeps));
208
+ if (deps.profile === "enclave" && deps.accessToken && deps.serverOwner) {
209
+ app.route("/enclave/v1/fleet", enclaveFleetRoutes({
210
+ accessToken: deps.accessToken,
211
+ hydrate: async (scopes) => {
212
+ if (!deps.mcpHydrateScopes)
213
+ throw new Error("Scoped hydration unavailable");
214
+ await deps.mcpHydrateScopes(scopes);
215
+ },
216
+ observe: async (scope) => {
217
+ const storage = deps.dataStorage;
218
+ const entry = storage?.findEntry({ scope });
219
+ const ready = entry && storage?.hasScopeBlocks
220
+ ? await storage.hasScopeBlocks(scope, entry.collectedAt)
221
+ : false;
222
+ return { dataVersion: entry?.version ?? null, ready };
223
+ },
224
+ }));
225
+ app.route("/enclave/v1/mcp", enclaveMcpRoutes({
226
+ accessToken: deps.accessToken,
227
+ serverOwner: deps.serverOwner,
228
+ execute: async (request, connection) => {
229
+ await deps.mcpHydrateScopes?.([
230
+ ...new Set(connection.grants.flatMap((grant) => grant.scopes)),
231
+ ]);
232
+ return executeMcpConnectionRequest(request, connection, mcpRouteDeps);
233
+ },
234
+ }));
235
+ }
136
236
  // Mount login flow v2 routes (self-hosted CLI auth, no auth required)
137
237
  if (deps.tokenStore) {
138
238
  app.route("/auth/device", authDeviceRoutes({
@@ -155,7 +255,8 @@ export function createApp(deps) {
155
255
  deviceSessions: createDeviceSessionLookup(),
156
256
  }));
157
257
  }
158
- // Mount dev UI routes when dev token is available
258
+ // Mount dev UI routes when dev token is available. The /ui subtree is
259
+ // already gated to the loopback auth listener above.
159
260
  if (deps.devToken) {
160
261
  app.route("/ui", uiRoute({
161
262
  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,8 +7,11 @@ import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logg
7
7
  import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
8
8
  import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
9
9
  import { type SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
10
+ import type { DataPointFeedPort } from "@opendatalabs/personal-server-ts-core/ports";
10
11
  import type { Hono } from "hono";
11
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";
12
15
  export interface ServerContext {
13
16
  app: Hono;
14
17
  logger: Logger;
@@ -32,12 +35,38 @@ export interface ServerContext {
32
35
  }
33
36
  export interface CreateServerOptions {
34
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;
35
47
  /** @deprecated Use rootPath instead. */
36
48
  serverDir?: string;
37
49
  dataDir?: string;
38
50
  ownerSignature?: `0x${string}`;
51
+ jobResultUpload?: JobWorkerDeps["resultUpload"];
39
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;
40
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;
41
70
  }
42
71
  export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
43
72
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,qCAAqC,EAAE,MAAM,2CAA2C,CAAC;AAEvG,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAGjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAElF,OAAO,EAEL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAKjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAGpE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,IAAI,CAAC;IACV,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,EAAE,eAAe,CAAC;IACjC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,OAAO,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IACjD,sBAAsB,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,uBAAuB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,wCAAwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,uBAAuB,CAAC,EAAE,qCAAqC,CAAC;CACjE;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAqfxB"}
1
+ {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}