@opendatalabs/personal-server-ts-server 0.0.1-canary.f5535bc → 0.0.1-canary.f5febb3
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.
- package/dist/api-auth.d.ts +16 -2
- package/dist/api-auth.d.ts.map +1 -1
- package/dist/api-auth.js +72 -22
- package/dist/api-auth.js.map +1 -1
- package/dist/app.d.ts +54 -4
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +112 -12
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +29 -5
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +304 -37
- package/dist/bootstrap.js.map +1 -1
- package/dist/client.d.ts +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +4 -2
- package/dist/client.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +6 -2
- package/dist/config/loader.js.map +1 -1
- package/dist/enclave-main.d.ts +11 -0
- package/dist/enclave-main.d.ts.map +1 -0
- package/dist/enclave-main.js +188 -0
- package/dist/enclave-main.js.map +1 -0
- package/dist/index.js +6 -22
- package/dist/index.js.map +1 -1
- package/dist/jobs/access-reporter.d.ts +31 -0
- package/dist/jobs/access-reporter.d.ts.map +1 -0
- package/dist/jobs/access-reporter.js +127 -0
- package/dist/jobs/access-reporter.js.map +1 -0
- package/dist/jobs/raw-envelope-stream.d.ts +3 -0
- package/dist/jobs/raw-envelope-stream.d.ts.map +1 -0
- package/dist/jobs/raw-envelope-stream.js +371 -0
- package/dist/jobs/raw-envelope-stream.js.map +1 -0
- package/dist/jobs/types.d.ts +17 -0
- package/dist/jobs/types.d.ts.map +1 -0
- package/dist/jobs/types.js +3 -0
- package/dist/jobs/types.js.map +1 -0
- package/dist/jobs/worker.d.ts +43 -0
- package/dist/jobs/worker.d.ts.map +1 -0
- package/dist/jobs/worker.js +491 -0
- package/dist/jobs/worker.js.map +1 -0
- package/dist/listen.d.ts +11 -0
- package/dist/listen.d.ts.map +1 -0
- package/dist/listen.js +23 -0
- package/dist/listen.js.map +1 -0
- package/dist/logging/access-log.d.ts +2 -13
- package/dist/logging/access-log.d.ts.map +1 -1
- package/dist/logging/access-log.js.map +1 -1
- package/dist/mcp/durable-state.d.ts +60 -0
- package/dist/mcp/durable-state.d.ts.map +1 -0
- package/dist/mcp/durable-state.js +394 -0
- package/dist/mcp/durable-state.js.map +1 -0
- package/dist/mcp/grants.d.ts +12 -0
- package/dist/mcp/grants.d.ts.map +1 -0
- package/dist/mcp/grants.js +33 -0
- package/dist/mcp/grants.js.map +1 -0
- package/dist/mcp/index.d.ts +4 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +4 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/tee-ingress.d.ts +29 -0
- package/dist/mcp/tee-ingress.d.ts.map +1 -0
- package/dist/mcp/tee-ingress.js +190 -0
- package/dist/mcp/tee-ingress.js.map +1 -0
- package/dist/middleware/cors.d.ts +18 -0
- package/dist/middleware/cors.d.ts.map +1 -0
- package/dist/middleware/cors.js +51 -0
- package/dist/middleware/cors.js.map +1 -0
- package/dist/middleware/web3-auth.d.ts +1 -0
- package/dist/middleware/web3-auth.d.ts.map +1 -1
- package/dist/middleware/web3-auth.js +6 -0
- package/dist/middleware/web3-auth.js.map +1 -1
- package/dist/migrations/detect-stuck-version-ledger.d.ts +43 -0
- package/dist/migrations/detect-stuck-version-ledger.d.ts.map +1 -0
- package/dist/migrations/detect-stuck-version-ledger.js +73 -0
- package/dist/migrations/detect-stuck-version-ledger.js.map +1 -0
- package/dist/migrations/local-state.d.ts +14 -0
- package/dist/migrations/local-state.d.ts.map +1 -1
- package/dist/migrations/local-state.js +27 -0
- package/dist/migrations/local-state.js.map +1 -1
- package/dist/migrations/state-migrations.d.ts +78 -0
- package/dist/migrations/state-migrations.d.ts.map +1 -0
- package/dist/migrations/state-migrations.js +72 -0
- package/dist/migrations/state-migrations.js.map +1 -0
- package/dist/package.json +67 -0
- package/dist/pending-blob-deletions.d.ts +10 -0
- package/dist/pending-blob-deletions.d.ts.map +1 -0
- package/dist/pending-blob-deletions.js +38 -0
- package/dist/pending-blob-deletions.js.map +1 -0
- package/dist/routes/auth-device.d.ts +1 -0
- package/dist/routes/auth-device.d.ts.map +1 -1
- package/dist/routes/auth-device.js +3 -0
- package/dist/routes/auth-device.js.map +1 -1
- package/dist/routes/data.d.ts +65 -5
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +20 -3
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/derivatives.d.ts +33 -0
- package/dist/routes/derivatives.d.ts.map +1 -0
- package/dist/routes/derivatives.js +33 -0
- package/dist/routes/derivatives.js.map +1 -0
- package/dist/routes/enclave-fleet.d.ts +14 -0
- package/dist/routes/enclave-fleet.d.ts.map +1 -0
- package/dist/routes/enclave-fleet.js +43 -0
- package/dist/routes/enclave-fleet.js.map +1 -0
- package/dist/routes/enclave-jobs.d.ts +9 -0
- package/dist/routes/enclave-jobs.d.ts.map +1 -0
- package/dist/routes/enclave-jobs.js +106 -0
- package/dist/routes/enclave-jobs.js.map +1 -0
- package/dist/routes/enclave-mcp.d.ts +9 -0
- package/dist/routes/enclave-mcp.d.ts.map +1 -0
- package/dist/routes/enclave-mcp.js +46 -0
- package/dist/routes/enclave-mcp.js.map +1 -0
- package/dist/routes/mcp.d.ts +27 -5
- package/dist/routes/mcp.d.ts.map +1 -1
- package/dist/routes/mcp.js +212 -39
- package/dist/routes/mcp.js.map +1 -1
- package/dist/routes/ui-registration.d.ts +2 -0
- package/dist/routes/ui-registration.d.ts.map +1 -1
- package/dist/routes/ui-registration.js +4 -2
- package/dist/routes/ui-registration.js.map +1 -1
- package/dist/routes/write-session.d.ts +37 -0
- package/dist/routes/write-session.d.ts.map +1 -0
- package/dist/routes/write-session.js +34 -0
- package/dist/routes/write-session.js.map +1 -0
- package/dist/scripts/bundle-verification.d.ts +2 -0
- package/dist/scripts/bundle-verification.d.ts.map +1 -0
- package/dist/scripts/bundle-verification.js +32 -0
- package/dist/scripts/bundle-verification.js.map +1 -0
- package/dist/scripts/verify-bundle.d.ts +2 -0
- package/dist/scripts/verify-bundle.d.ts.map +1 -0
- package/dist/scripts/verify-bundle.js +44 -0
- package/dist/scripts/verify-bundle.js.map +1 -0
- package/dist/storage/hierarchy.d.ts +11 -0
- package/dist/storage/hierarchy.d.ts.map +1 -1
- package/dist/storage/hierarchy.js +99 -5
- package/dist/storage/hierarchy.js.map +1 -1
- package/dist/storage/index-manager.d.ts +25 -2
- package/dist/storage/index-manager.d.ts.map +1 -1
- package/dist/storage/index-manager.js +42 -4
- package/dist/storage/index-manager.js.map +1 -1
- package/dist/storage/index-schema.d.ts +1 -1
- package/dist/storage/index-schema.d.ts.map +1 -1
- package/dist/storage/index-schema.js +23 -2
- package/dist/storage/index-schema.js.map +1 -1
- package/dist/storage/node-data-storage.d.ts.map +1 -1
- package/dist/storage/node-data-storage.js +40 -1
- package/dist/storage/node-data-storage.js.map +1 -1
- package/dist/storage/question-store.d.ts +9 -0
- package/dist/storage/question-store.d.ts.map +1 -0
- package/dist/storage/question-store.js +173 -0
- package/dist/storage/question-store.js.map +1 -0
- package/dist/sync-cursor.d.ts.map +1 -1
- package/dist/sync-cursor.js.map +1 -1
- package/dist/tunnel/manager.d.ts +15 -1
- package/dist/tunnel/manager.d.ts.map +1 -1
- package/dist/tunnel/manager.js +34 -7
- package/dist/tunnel/manager.js.map +1 -1
- package/dist/ui/index.html +1 -2
- package/dist/ui/ps-lite-debug.d.ts.map +1 -1
- package/dist/ui/ps-lite-debug.js +108569 -56029
- package/dist/ui/ps-lite-debug.js.map +1 -1
- package/package.json +18 -10
- package/dist/grant-fee-verifier.d.ts +0 -27
- package/dist/grant-fee-verifier.d.ts.map +0 -1
- package/dist/grant-fee-verifier.js +0 -40
- package/dist/grant-fee-verifier.js.map +0 -1
- package/dist/middleware/data-read-policy.d.ts +0 -11
- package/dist/middleware/data-read-policy.d.ts.map +0 -1
- package/dist/middleware/data-read-policy.js +0 -39
- package/dist/middleware/data-read-policy.js.map +0 -1
package/dist/api-auth.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
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
|
|
3
|
+
import { type WriteProofReplayStore, type WriteSessionStore } from "@opendatalabs/personal-server-ts-core/write";
|
|
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 {
|
|
6
7
|
serverOrigin: string | (() => string);
|
|
@@ -10,8 +11,21 @@ export interface ServerApiAuthDeps {
|
|
|
10
11
|
accessToken?: string;
|
|
11
12
|
tokenStore?: SessionTokenVerifierPort;
|
|
12
13
|
dataStorage?: Pick<DataStoragePort, "findEntry">;
|
|
13
|
-
feeVerifier?: FeeVerifierPort;
|
|
14
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;
|
|
15
29
|
}
|
|
16
30
|
export declare function createServerApiAuth(deps: ServerApiAuthDeps): PersonalServerApiAuthPort;
|
|
17
31
|
//# sourceMappingURL=api-auth.d.ts.map
|
package/dist/api-auth.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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,10 +135,10 @@ 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,
|
|
91
|
-
feeVerifier: deps.feeVerifier,
|
|
92
142
|
runtimeAvailability: deps.runtimeAvailability,
|
|
93
143
|
});
|
|
94
144
|
return { builder: result.auth.signer, grantId: grant.id };
|
package/dist/api-auth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-auth.js","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAGpB,MAAM,4CAA4C,CAAC;
|
|
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,19 @@ 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";
|
|
9
|
-
import { type
|
|
10
|
-
import type
|
|
10
|
+
import { type WriteProofReplayStore, type WriteSessionStore } from "@opendatalabs/personal-server-ts-core/write";
|
|
11
|
+
import { McpActivityRecorder, type McpConnectionStore, type McpOAuthAuthorizationStore } from "@opendatalabs/personal-server-ts-core/mcp";
|
|
12
|
+
import type { ScopeDeletionTracker, SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
|
|
11
13
|
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
12
|
-
import type {
|
|
14
|
+
import type { LineageGatewayPort } from "@opendatalabs/personal-server-ts-core/lineage";
|
|
15
|
+
import type { QuestionStore, RecomputeScheduler } from "@opendatalabs/personal-server-ts-core/derivatives";
|
|
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";
|
|
15
21
|
export interface IdentityInfo {
|
|
16
22
|
address: `0x${string}`;
|
|
17
23
|
publicKey: `0x${string}`;
|
|
@@ -34,6 +40,7 @@ export interface AppDeps {
|
|
|
34
40
|
config?: ServerConfig;
|
|
35
41
|
accessLogWriter: AccessLogWriter;
|
|
36
42
|
accessLogReader: AccessLogReader;
|
|
43
|
+
readFulfillmentReporter?: PersonalServerReadFulfillmentReporter;
|
|
37
44
|
cloudMode?: boolean;
|
|
38
45
|
devToken?: string;
|
|
39
46
|
ownerSignature?: `0x${string}`;
|
|
@@ -41,12 +48,40 @@ export interface AppDeps {
|
|
|
41
48
|
accessToken?: string;
|
|
42
49
|
configPath?: string;
|
|
43
50
|
syncManager?: SyncManager | null;
|
|
51
|
+
/** Read-side tombstone memory; reads of a deleted scope answer 410. */
|
|
52
|
+
scopeDeletions?: ScopeDeletionTracker;
|
|
44
53
|
serverSigner?: ServerSigner;
|
|
45
54
|
tokenStore?: TokenStore;
|
|
46
|
-
feeVerifier?: FeeVerifierPort;
|
|
47
55
|
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
48
56
|
dataStorage?: DataStoragePort;
|
|
57
|
+
/**
|
|
58
|
+
* Gateway base URL — wired into the data route so the GET handler can
|
|
59
|
+
* forward validated X-PAYMENTs to POST /v1/escrow/pay via direct fetch.
|
|
60
|
+
*/
|
|
61
|
+
gatewayUrl?: string;
|
|
62
|
+
/**
|
|
63
|
+
* When true, GET /v1/data/:scope enforces X402 payment on every read.
|
|
64
|
+
* Off-by-default to keep dev / test setups frictionless.
|
|
65
|
+
*/
|
|
66
|
+
paymentEnabled?: boolean;
|
|
67
|
+
/** Derivative data: gateway lineage access for the data routes. */
|
|
68
|
+
lineageGateway?: LineageGatewayPort;
|
|
69
|
+
/**
|
|
70
|
+
* Derivative compute layer (docs/derivative-data-api.md, "Compute").
|
|
71
|
+
* Absent = /v1/derivatives answers 503 and writes trigger no recompute.
|
|
72
|
+
*/
|
|
73
|
+
derivativeCompute?: {
|
|
74
|
+
store: QuestionStore;
|
|
75
|
+
scheduler: RecomputeScheduler;
|
|
76
|
+
} | null;
|
|
49
77
|
getTunnelStatus?: HealthDeps["getTunnelStatus"];
|
|
78
|
+
/**
|
|
79
|
+
* Invoked when the /ui/api registration route confirms the server is
|
|
80
|
+
* registered with the gateway (fresh or pre-existing), so a
|
|
81
|
+
* registration-gated tunnel can start immediately instead of waiting for
|
|
82
|
+
* the bootstrap's gateway poll (BUI-611).
|
|
83
|
+
*/
|
|
84
|
+
onServerRegistered?: (serverId: string | null) => void;
|
|
50
85
|
/**
|
|
51
86
|
* MCP connection store shared between the `/mcp/:token` Streamable HTTP
|
|
52
87
|
* endpoint and the owner `/v1/mcp/connections` management surface. Defaults
|
|
@@ -56,6 +91,21 @@ export interface AppDeps {
|
|
|
56
91
|
mcpConnectionStore?: McpConnectionStore;
|
|
57
92
|
mcpOAuthAuthorizationStore?: McpOAuthAuthorizationStore;
|
|
58
93
|
mcpOAuthApprovalUrl?: string | (() => string);
|
|
94
|
+
mcpActivityRecorder?: McpActivityRecorder;
|
|
95
|
+
mcpHydrateScopes?: (scopes: string[]) => Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Write API session store shared between POST /v1/write/session (which
|
|
98
|
+
* mints tokens) and the ingest endpoint (which redeems them). Defaults to
|
|
99
|
+
* an in-memory store, mirroring the MCP connection store default.
|
|
100
|
+
*/
|
|
101
|
+
writeSessionStore?: WriteSessionStore;
|
|
102
|
+
/**
|
|
103
|
+
* Replay guard for per-write proofs on delegated ingest. Defaults to an
|
|
104
|
+
* in-memory store (api-auth); hosts may supply a shared one.
|
|
105
|
+
*/
|
|
106
|
+
writeProofReplayStore?: WriteProofReplayStore;
|
|
107
|
+
profile?: "standard" | "enclave";
|
|
108
|
+
jobWorker?: (envelope: JobRequestEnvelope) => Promise<JobExecuteResponse>;
|
|
59
109
|
}
|
|
60
110
|
export declare function createApp(deps: AppDeps): Hono;
|
|
61
111
|
//# 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;
|
|
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,35 @@
|
|
|
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
5
|
import { dataRoutes } from "./routes/data.js";
|
|
6
|
+
import { writeSessionRoutes } from "./routes/write-session.js";
|
|
7
|
+
import { createInMemoryWriteProofReplayStore, createInMemoryWriteSessionStore, } from "@opendatalabs/personal-server-ts-core/write";
|
|
8
|
+
import { derivativesRoutes } from "./routes/derivatives.js";
|
|
6
9
|
import { grantsRoutes } from "./routes/grants.js";
|
|
7
10
|
import { accessLogsRoutes } from "./routes/access-logs.js";
|
|
8
11
|
import { syncRoutes } from "./routes/sync.js";
|
|
9
|
-
import { mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
|
|
10
|
-
import {
|
|
12
|
+
import { executeMcpConnectionRequest, mcpActivityRoutes, mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
|
|
13
|
+
import { enclaveMcpRoutes } from "./routes/enclave-mcp.js";
|
|
14
|
+
import { enclaveFleetRoutes } from "./routes/enclave-fleet.js";
|
|
15
|
+
import { McpActivityRecorder, createInMemoryMcpConnectionStore, createInMemoryMcpOAuthAuthorizationStore, } from "@opendatalabs/personal-server-ts-core/mcp";
|
|
11
16
|
import { uiConfigRoutes } from "./routes/ui-config.js";
|
|
12
17
|
import { uiRegistrationRoutes } from "./routes/ui-registration.js";
|
|
13
18
|
import { uiRoute } from "./routes/ui.js";
|
|
14
19
|
import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
|
|
15
20
|
import { oauthTokenRoutes } from "./routes/oauth-token.js";
|
|
21
|
+
import { enclaveJobRoutes } from "./routes/enclave-jobs.js";
|
|
16
22
|
export function createApp(deps) {
|
|
17
23
|
const app = new Hono();
|
|
18
|
-
//
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
// One store for mint (POST /v1/write/session) and redeem (data ingest and
|
|
25
|
+
// derivative question registration), and one replay guard for the proofs
|
|
26
|
+
// both redeeming routes verify.
|
|
27
|
+
const writeSessionStore = deps.writeSessionStore ?? createInMemoryWriteSessionStore();
|
|
28
|
+
const writeProofReplayStore = deps.writeProofReplayStore ?? createInMemoryWriteProofReplayStore();
|
|
29
|
+
// CORS — allow all origins for browser-based clients. Registered first so
|
|
30
|
+
// OPTIONS preflights are answered before any route or auth code runs
|
|
31
|
+
// (route sub-apps only register their real methods).
|
|
32
|
+
app.use("*", corsMiddleware());
|
|
25
33
|
// Mount health route
|
|
26
34
|
app.route("/", healthRoute({
|
|
27
35
|
version: deps.version,
|
|
@@ -35,6 +43,12 @@ export function createApp(deps) {
|
|
|
35
43
|
getTunnelStatus: deps.getTunnelStatus,
|
|
36
44
|
runtimeAvailability: deps.runtimeAvailability,
|
|
37
45
|
}));
|
|
46
|
+
if (deps.profile === "enclave" && deps.jobWorker && deps.accessToken) {
|
|
47
|
+
app.route("/enclave/v1/jobs", enclaveJobRoutes({
|
|
48
|
+
accessToken: deps.accessToken,
|
|
49
|
+
executeJob: deps.jobWorker,
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
38
52
|
// Mount data routes (ingest + read + delete)
|
|
39
53
|
app.route("/v1/data", dataRoutes({
|
|
40
54
|
indexManager: deps.indexManager,
|
|
@@ -44,15 +58,67 @@ export function createApp(deps) {
|
|
|
44
58
|
serverOwner: deps.serverOwner,
|
|
45
59
|
gateway: deps.gateway,
|
|
46
60
|
accessLogWriter: deps.accessLogWriter,
|
|
61
|
+
readFulfillmentReporter: deps.readFulfillmentReporter,
|
|
47
62
|
devToken: deps.devToken,
|
|
48
63
|
accessToken: deps.accessToken,
|
|
49
64
|
tokenStore: deps.tokenStore,
|
|
50
65
|
syncManager: deps.syncManager ?? null,
|
|
51
|
-
|
|
66
|
+
scopeDeletions: deps.scopeDeletions,
|
|
52
67
|
runtimeAvailability: deps.runtimeAvailability,
|
|
53
68
|
dataStorage: deps.dataStorage,
|
|
69
|
+
// Powers the RECORD_DATA_ACCESS attestation embedded in X402 challenges.
|
|
70
|
+
serverSigner: deps.serverSigner,
|
|
71
|
+
serverAddress: deps.identity?.address,
|
|
72
|
+
// Required for X402: gatewayConfig provides the EIP-712 domain for
|
|
73
|
+
// payment signature recovery; gatewayUrl is the forward target for
|
|
74
|
+
// POST /v1/escrow/pay (direct fetch — bypasses the SDK client to
|
|
75
|
+
// preserve the gateway's structured error bodies).
|
|
76
|
+
gatewayConfig: deps.gatewayConfig,
|
|
77
|
+
gatewayUrl: deps.gatewayUrl ?? deps.config?.gateway.url ?? deps.gatewayConfig?.url,
|
|
78
|
+
paymentEnabled: deps.paymentEnabled,
|
|
79
|
+
lineageGateway: deps.lineageGateway,
|
|
80
|
+
writeSessionStore,
|
|
81
|
+
writeProofReplayStore,
|
|
82
|
+
// A new local version of a scope marks every question that reads it
|
|
83
|
+
// stale; the recompute waits for a reader.
|
|
84
|
+
onDataWritten: deps.derivativeCompute
|
|
85
|
+
? (event) => deps.derivativeCompute?.scheduler.markSourceChanged(event.scope, {
|
|
86
|
+
lineageSources: event.lineageSources,
|
|
87
|
+
})
|
|
88
|
+
: undefined,
|
|
89
|
+
// And an authorized read of a derived scope is that reader.
|
|
90
|
+
onDataRead: deps.derivativeCompute
|
|
91
|
+
? (event) => deps.derivativeCompute?.scheduler.markDemand(event.scope)
|
|
92
|
+
: undefined,
|
|
54
93
|
mountPath: "/v1/data",
|
|
55
94
|
}));
|
|
95
|
+
// Derivative compute: question registration + readiness for builders.
|
|
96
|
+
app.route("/v1/derivatives", derivativesRoutes({
|
|
97
|
+
logger: deps.logger,
|
|
98
|
+
serverOrigin: deps.serverOrigin,
|
|
99
|
+
serverOwner: deps.serverOwner,
|
|
100
|
+
gateway: deps.gateway,
|
|
101
|
+
devToken: deps.devToken,
|
|
102
|
+
accessToken: deps.accessToken,
|
|
103
|
+
tokenStore: deps.tokenStore,
|
|
104
|
+
dataStorage: deps.dataStorage,
|
|
105
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
106
|
+
writeSessionStore,
|
|
107
|
+
writeProofReplayStore,
|
|
108
|
+
compute: deps.derivativeCompute ?? null,
|
|
109
|
+
mountPath: "/v1/derivatives",
|
|
110
|
+
}));
|
|
111
|
+
// Mount the Write API session handshake (delegated builder writes).
|
|
112
|
+
app.route("/v1/write", writeSessionRoutes({
|
|
113
|
+
logger: deps.logger,
|
|
114
|
+
serverOrigin: deps.serverOrigin,
|
|
115
|
+
serverOwner: deps.serverOwner,
|
|
116
|
+
gateway: deps.gateway,
|
|
117
|
+
devToken: deps.devToken,
|
|
118
|
+
accessToken: deps.accessToken,
|
|
119
|
+
tokenStore: deps.tokenStore,
|
|
120
|
+
sessionStore: writeSessionStore,
|
|
121
|
+
}));
|
|
56
122
|
// Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
|
|
57
123
|
app.route("/v1/grants", grantsRoutes({
|
|
58
124
|
logger: deps.logger,
|
|
@@ -97,29 +163,62 @@ export function createApp(deps) {
|
|
|
97
163
|
const mcpConnectionStore = deps.mcpConnectionStore ?? createInMemoryMcpConnectionStore();
|
|
98
164
|
const mcpOAuthAuthorizationStore = deps.mcpOAuthAuthorizationStore ??
|
|
99
165
|
createInMemoryMcpOAuthAuthorizationStore();
|
|
166
|
+
const mcpActivityRecorder = deps.mcpActivityRecorder ?? new McpActivityRecorder();
|
|
100
167
|
const mcpRouteDeps = {
|
|
101
168
|
logger: deps.logger,
|
|
102
169
|
serverOrigin: deps.serverOrigin,
|
|
103
170
|
serverOwner: deps.serverOwner,
|
|
171
|
+
serverAddress: deps.identity?.address,
|
|
104
172
|
serverSigner: deps.serverSigner,
|
|
105
173
|
gateway: deps.gateway,
|
|
106
174
|
gatewayConfig: deps.gatewayConfig,
|
|
175
|
+
paymentEnabled: deps.paymentEnabled,
|
|
107
176
|
devToken: deps.devToken,
|
|
108
177
|
accessToken: deps.accessToken,
|
|
109
178
|
tokenStore: deps.tokenStore,
|
|
110
179
|
accessLogWriter: deps.accessLogWriter,
|
|
180
|
+
readFulfillmentReporter: deps.readFulfillmentReporter,
|
|
111
181
|
indexManager: deps.indexManager,
|
|
112
182
|
hierarchyOptions: deps.hierarchyOptions,
|
|
113
183
|
dataStorage: deps.dataStorage,
|
|
114
|
-
feeVerifier: deps.feeVerifier,
|
|
115
184
|
runtimeAvailability: deps.runtimeAvailability,
|
|
116
185
|
connectionStore: mcpConnectionStore,
|
|
117
186
|
oauthAuthorizationStore: mcpOAuthAuthorizationStore,
|
|
118
187
|
oauthApprovalUrl: deps.mcpOAuthApprovalUrl,
|
|
188
|
+
activityRecorder: mcpActivityRecorder,
|
|
119
189
|
};
|
|
120
190
|
app.route("/", mcpOAuthRoutes(mcpRouteDeps));
|
|
121
191
|
app.route("/v1/mcp/connections", mcpConnectionsRoutes(mcpRouteDeps));
|
|
192
|
+
app.route("/v1/mcp/activity", mcpActivityRoutes(mcpRouteDeps));
|
|
122
193
|
app.route("/mcp", mcpStreamableHttpRoutes(mcpRouteDeps));
|
|
194
|
+
if (deps.profile === "enclave" && deps.accessToken && deps.serverOwner) {
|
|
195
|
+
app.route("/enclave/v1/fleet", enclaveFleetRoutes({
|
|
196
|
+
accessToken: deps.accessToken,
|
|
197
|
+
hydrate: async (scopes) => {
|
|
198
|
+
if (!deps.mcpHydrateScopes)
|
|
199
|
+
throw new Error("Scoped hydration unavailable");
|
|
200
|
+
await deps.mcpHydrateScopes(scopes);
|
|
201
|
+
},
|
|
202
|
+
observe: async (scope) => {
|
|
203
|
+
const storage = deps.dataStorage;
|
|
204
|
+
const entry = storage?.findEntry({ scope });
|
|
205
|
+
const ready = entry && storage?.hasScopeBlocks
|
|
206
|
+
? await storage.hasScopeBlocks(scope, entry.collectedAt)
|
|
207
|
+
: false;
|
|
208
|
+
return { dataVersion: entry?.version ?? null, ready };
|
|
209
|
+
},
|
|
210
|
+
}));
|
|
211
|
+
app.route("/enclave/v1/mcp", enclaveMcpRoutes({
|
|
212
|
+
accessToken: deps.accessToken,
|
|
213
|
+
serverOwner: deps.serverOwner,
|
|
214
|
+
execute: async (request, connection) => {
|
|
215
|
+
await deps.mcpHydrateScopes?.([
|
|
216
|
+
...new Set(connection.grants.flatMap((grant) => grant.scopes)),
|
|
217
|
+
]);
|
|
218
|
+
return executeMcpConnectionRequest(request, connection, mcpRouteDeps);
|
|
219
|
+
},
|
|
220
|
+
}));
|
|
221
|
+
}
|
|
123
222
|
// Mount login flow v2 routes (self-hosted CLI auth, no auth required)
|
|
124
223
|
if (deps.tokenStore) {
|
|
125
224
|
app.route("/auth/device", authDeviceRoutes({
|
|
@@ -162,6 +261,7 @@ export function createApp(deps) {
|
|
|
162
261
|
app.route("/ui/api", uiRegistrationRoutes({
|
|
163
262
|
devToken: deps.devToken,
|
|
164
263
|
ownerPrivateKey: deps.ownerPrivateKey,
|
|
264
|
+
onRegistered: deps.onServerRegistered,
|
|
165
265
|
}));
|
|
166
266
|
}
|
|
167
267
|
// 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,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -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,9 +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
|
-
import type { FeeVerifierPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
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,17 +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;
|
|
40
53
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
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.
|
|
44
57
|
*/
|
|
45
|
-
|
|
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;
|
|
46
70
|
}
|
|
47
71
|
export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
|
|
48
72
|
//# sourceMappingURL=bootstrap.d.ts.map
|
package/dist/bootstrap.d.ts.map
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"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"}
|