@opendatalabs/personal-server-ts-server 0.0.1-canary.c357ffa → 0.0.1-canary.ce76db7
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 +17 -0
- package/dist/api-auth.d.ts.map +1 -0
- package/dist/api-auth.js +98 -0
- package/dist/api-auth.js.map +1 -0
- package/dist/api.d.ts +4 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +3 -0
- package/dist/api.js.map +1 -1
- package/dist/app.d.ts +35 -2
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +101 -2
- package/dist/app.js.map +1 -1
- package/dist/bootstrap.d.ts +25 -4
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +303 -39
- package/dist/bootstrap.js.map +1 -1
- package/dist/client.d.ts +17 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +367 -0
- package/dist/client.js.map +1 -0
- package/dist/config/defaults.d.ts +12 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +14 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config/index.d.ts +4 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +8 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +86 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +9 -0
- package/dist/config/paths.d.ts.map +1 -0
- package/dist/config/paths.js +22 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/grant-fee-verifier.d.ts +27 -0
- package/dist/grant-fee-verifier.d.ts.map +1 -0
- package/dist/grant-fee-verifier.js +40 -0
- package/dist/grant-fee-verifier.js.map +1 -0
- package/dist/hono-context.d.ts +14 -0
- package/dist/hono-context.d.ts.map +1 -0
- package/dist/hono-context.js +2 -0
- package/dist/hono-context.js.map +1 -0
- package/dist/index.js +91 -13
- package/dist/index.js.map +1 -1
- package/dist/keys/server-account.d.ts +28 -0
- package/dist/keys/server-account.d.ts.map +1 -0
- package/dist/keys/server-account.js +48 -0
- package/dist/keys/server-account.js.map +1 -0
- package/dist/logger/index.d.ts +5 -0
- package/dist/logger/index.d.ts.map +1 -0
- package/dist/logger/index.js +9 -0
- package/dist/logger/index.js.map +1 -0
- package/dist/logging/access-log.d.ts +15 -0
- package/dist/logging/access-log.d.ts.map +1 -0
- package/dist/logging/access-log.js +25 -0
- package/dist/logging/access-log.js.map +1 -0
- package/dist/logging/access-reader.d.ts +19 -0
- package/dist/logging/access-reader.d.ts.map +1 -0
- package/dist/logging/access-reader.js +50 -0
- package/dist/logging/access-reader.js.map +1 -0
- package/dist/middleware/access-log.d.ts.map +1 -1
- package/dist/middleware/access-log.js +8 -2
- package/dist/middleware/access-log.js.map +1 -1
- package/dist/middleware/builder-check.d.ts +2 -2
- package/dist/middleware/builder-check.d.ts.map +1 -1
- package/dist/middleware/builder-check.js +7 -2
- package/dist/middleware/builder-check.js.map +1 -1
- package/dist/middleware/data-read-policy.d.ts +11 -0
- package/dist/middleware/data-read-policy.d.ts.map +1 -0
- package/dist/middleware/data-read-policy.js +39 -0
- package/dist/middleware/data-read-policy.js.map +1 -0
- package/dist/middleware/owner-check.js +1 -1
- package/dist/middleware/owner-check.js.map +1 -1
- package/dist/middleware/web3-auth.d.ts +12 -1
- package/dist/middleware/web3-auth.d.ts.map +1 -1
- package/dist/middleware/web3-auth.js +21 -29
- package/dist/middleware/web3-auth.js.map +1 -1
- package/dist/migrations/local-state.d.ts +21 -0
- package/dist/migrations/local-state.d.ts.map +1 -0
- package/dist/migrations/local-state.js +106 -0
- package/dist/migrations/local-state.js.map +1 -0
- package/dist/routes/access-logs.d.ts +8 -1
- package/dist/routes/access-logs.d.ts.map +1 -1
- package/dist/routes/access-logs.js +11 -17
- package/dist/routes/access-logs.js.map +1 -1
- package/dist/routes/auth-device.d.ts +49 -0
- package/dist/routes/auth-device.d.ts.map +1 -0
- package/dist/routes/auth-device.js +581 -0
- package/dist/routes/auth-device.js.map +1 -0
- package/dist/routes/data.d.ts +18 -2
- package/dist/routes/data.d.ts.map +1 -1
- package/dist/routes/data.js +34 -195
- package/dist/routes/data.js.map +1 -1
- package/dist/routes/grants.d.ts +12 -4
- package/dist/routes/grants.d.ts.map +1 -1
- package/dist/routes/grants.js +18 -110
- package/dist/routes/grants.js.map +1 -1
- package/dist/routes/health.d.ts +9 -1
- package/dist/routes/health.d.ts.map +1 -1
- package/dist/routes/health.js +40 -1
- package/dist/routes/health.js.map +1 -1
- package/dist/routes/mcp.d.ts +96 -0
- package/dist/routes/mcp.d.ts.map +1 -0
- package/dist/routes/mcp.js +535 -0
- package/dist/routes/mcp.js.map +1 -0
- package/dist/routes/oauth-token.d.ts +56 -0
- package/dist/routes/oauth-token.d.ts.map +1 -0
- package/dist/routes/oauth-token.js +49 -0
- package/dist/routes/oauth-token.js.map +1 -0
- package/dist/routes/sync.d.ts +12 -3
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/sync.js +14 -27
- package/dist/routes/sync.js.map +1 -1
- package/dist/routes/ui-config.d.ts.map +1 -1
- package/dist/routes/ui-config.js +17 -82
- package/dist/routes/ui-config.js.map +1 -1
- package/dist/routes/ui-registration.d.ts +7 -0
- package/dist/routes/ui-registration.d.ts.map +1 -0
- package/dist/routes/ui-registration.js +215 -0
- package/dist/routes/ui-registration.js.map +1 -0
- package/dist/routes/ui.d.ts +1 -0
- package/dist/routes/ui.d.ts.map +1 -1
- package/dist/routes/ui.js +46 -4
- package/dist/routes/ui.js.map +1 -1
- package/dist/schema-registrar.d.ts +26 -0
- package/dist/schema-registrar.d.ts.map +1 -0
- package/dist/schema-registrar.js +61 -0
- package/dist/schema-registrar.js.map +1 -0
- package/dist/storage/hierarchy.d.ts +29 -0
- package/dist/storage/hierarchy.d.ts.map +1 -0
- package/dist/storage/hierarchy.js +241 -0
- package/dist/storage/hierarchy.js.map +1 -0
- package/dist/storage/index-manager.d.ts +37 -0
- package/dist/storage/index-manager.d.ts.map +1 -0
- package/dist/storage/index-manager.js +136 -0
- package/dist/storage/index-manager.js.map +1 -0
- package/dist/storage/index-schema.d.ts +5 -0
- package/dist/storage/index-schema.d.ts.map +1 -0
- package/dist/storage/index-schema.js +48 -0
- package/dist/storage/index-schema.js.map +1 -0
- package/dist/storage/node-data-storage.d.ts +9 -0
- package/dist/storage/node-data-storage.d.ts.map +1 -0
- package/dist/storage/node-data-storage.js +72 -0
- package/dist/storage/node-data-storage.js.map +1 -0
- package/dist/sync-cursor.d.ts +15 -0
- package/dist/sync-cursor.d.ts.map +1 -0
- package/dist/sync-cursor.js +110 -0
- package/dist/sync-cursor.js.map +1 -0
- package/dist/token-store.d.ts +22 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +120 -0
- package/dist/token-store.js.map +1 -0
- package/dist/tunnel/auth.d.ts +50 -0
- package/dist/tunnel/auth.d.ts.map +1 -0
- package/dist/tunnel/auth.js +47 -0
- package/dist/tunnel/auth.js.map +1 -0
- package/dist/tunnel/binary.d.ts +57 -0
- package/dist/tunnel/binary.d.ts.map +1 -0
- package/dist/tunnel/binary.js +180 -0
- package/dist/tunnel/binary.js.map +1 -0
- package/dist/tunnel/config.d.ts +28 -0
- package/dist/tunnel/config.d.ts.map +1 -0
- package/dist/tunnel/config.js +38 -0
- package/dist/tunnel/config.js.map +1 -0
- package/dist/tunnel/index.d.ts +13 -0
- package/dist/tunnel/index.d.ts.map +1 -0
- package/dist/tunnel/index.js +9 -0
- package/dist/tunnel/index.js.map +1 -0
- package/dist/tunnel/manager.d.ts +94 -0
- package/dist/tunnel/manager.d.ts.map +1 -0
- package/dist/tunnel/manager.js +307 -0
- package/dist/tunnel/manager.js.map +1 -0
- package/dist/tunnel/verify.d.ts +28 -0
- package/dist/tunnel/verify.d.ts.map +1 -0
- package/dist/tunnel/verify.js +46 -0
- package/dist/tunnel/verify.js.map +1 -0
- package/dist/ui/browser_tls_rustls_bg.wasm +0 -0
- package/dist/ui/index.html +2193 -0
- package/dist/ui/ps-lite-debug.d.ts +93 -0
- package/dist/ui/ps-lite-debug.d.ts.map +1 -0
- package/dist/ui/ps-lite-debug.js +84167 -0
- package/dist/ui/ps-lite-debug.js.map +1 -0
- package/package.json +20 -6
- package/dist/middleware/grant-check.d.ts +0 -12
- package/dist/middleware/grant-check.d.ts.map +0 -1
- package/dist/middleware/grant-check.js +0 -90
- package/dist/middleware/grant-check.js.map +0 -1
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type SessionTokenVerifierPort } from "@opendatalabs/personal-server-ts-core/auth";
|
|
2
|
+
import type { PersonalServerApiAuthPort } from "@opendatalabs/personal-server-ts-core/api";
|
|
3
|
+
import type { DataStoragePort, FeeVerifierPort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
4
|
+
import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
5
|
+
export interface ServerApiAuthDeps {
|
|
6
|
+
serverOrigin: string | (() => string);
|
|
7
|
+
serverOwner?: `0x${string}`;
|
|
8
|
+
gateway: GatewayClient;
|
|
9
|
+
devToken?: string;
|
|
10
|
+
accessToken?: string;
|
|
11
|
+
tokenStore?: SessionTokenVerifierPort;
|
|
12
|
+
dataStorage?: Pick<DataStoragePort, "findEntry">;
|
|
13
|
+
feeVerifier?: FeeVerifierPort;
|
|
14
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
15
|
+
}
|
|
16
|
+
export declare function createServerApiAuth(deps: ServerApiAuthDeps): PersonalServerApiAuthPort;
|
|
17
|
+
//# sourceMappingURL=api-auth.d.ts.map
|
|
@@ -0,0 +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,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,WAAW,CAAC,EAAE,eAAe,CAAC;IAC9B,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC/C;AA6CD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,iBAAiB,GACtB,yBAAyB,CA2E3B"}
|
package/dist/api-auth.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { authenticateRequest, } from "@opendatalabs/personal-server-ts-core/auth";
|
|
2
|
+
import { verifyDataReadPolicy } from "@opendatalabs/personal-server-ts-core/policy";
|
|
3
|
+
import { NotOwnerError, ProtocolError, UnregisteredBuilderError, } from "@opendatalabs/personal-server-ts-core/errors";
|
|
4
|
+
function serverNotConfigured() {
|
|
5
|
+
return new ProtocolError(500, "SERVER_NOT_CONFIGURED", "Server owner address not configured. Set VANA_MASTER_KEY_SIGNATURE environment variable.");
|
|
6
|
+
}
|
|
7
|
+
function isOwner(signer, serverOwner) {
|
|
8
|
+
return Boolean(serverOwner && signer.toLowerCase() === serverOwner.toLowerCase());
|
|
9
|
+
}
|
|
10
|
+
async function authenticate(request, deps) {
|
|
11
|
+
return authenticateRequest({
|
|
12
|
+
request,
|
|
13
|
+
serverOrigin: deps.serverOrigin,
|
|
14
|
+
devToken: deps.devToken,
|
|
15
|
+
accessToken: deps.accessToken,
|
|
16
|
+
sessionTokenVerifier: deps.tokenStore,
|
|
17
|
+
serverOwner: deps.serverOwner,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
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();
|
|
29
|
+
}
|
|
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
|
+
}
|
|
44
|
+
},
|
|
45
|
+
async authorizeBuilderList(request) {
|
|
46
|
+
const result = await authenticate(request, deps);
|
|
47
|
+
if (result.isPolicyBypass ||
|
|
48
|
+
isOwner(result.auth.signer, deps.serverOwner)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
await assertRegisteredBuilder(deps.gateway, result.auth.signer);
|
|
52
|
+
},
|
|
53
|
+
async authorizeBuilderRead(input) {
|
|
54
|
+
const result = await authenticate(input.request, deps);
|
|
55
|
+
if (result.isPolicyBypass) {
|
|
56
|
+
return { builder: result.auth.signer, grantId: "policy-bypass" };
|
|
57
|
+
}
|
|
58
|
+
// Owner-exempt read paths. We allow two mechanisms here:
|
|
59
|
+
// - web3-signed: per-request signature by the owner wallet. Already
|
|
60
|
+
// gated on a fresh cryptographic proof per request.
|
|
61
|
+
// - control-plane-token: a static bearer set by the parent host
|
|
62
|
+
// process at boot. Never crosses an interactive surface, so it
|
|
63
|
+
// has the same threat model as the host process itself.
|
|
64
|
+
// Intentionally NOT exempted:
|
|
65
|
+
// - cli-session-token: an interactive bearer issued via /auth/device.
|
|
66
|
+
// These flow through terminals / copy-paste / shell history, so we
|
|
67
|
+
// keep them on the grant path so that any leaked CLI session can
|
|
68
|
+
// still only read what an explicit grant authorizes.
|
|
69
|
+
// Defense-in-depth justification: any owner-identified credential can
|
|
70
|
+
// already mint a grant via authorizeOwner, so blocking owner reads in
|
|
71
|
+
// general does not meaningfully shrink the blast radius of a stolen
|
|
72
|
+
// token. The cli-session-token exception preserves the audit-log
|
|
73
|
+
// signal for the one credential class that's most prone to leakage.
|
|
74
|
+
if (isOwner(result.auth.signer, deps.serverOwner) &&
|
|
75
|
+
(result.mechanism === "web3-signed" ||
|
|
76
|
+
result.mechanism === "control-plane-token")) {
|
|
77
|
+
return { builder: result.auth.signer, grantId: "owner" };
|
|
78
|
+
}
|
|
79
|
+
const selectedEntry = deps.dataStorage?.findEntry({
|
|
80
|
+
scope: input.scope,
|
|
81
|
+
fileId: input.fileId,
|
|
82
|
+
});
|
|
83
|
+
const grant = await verifyDataReadPolicy({
|
|
84
|
+
signer: result.auth.signer,
|
|
85
|
+
grantId: result.auth.payload.grantId ?? input.grantId,
|
|
86
|
+
requestedScope: input.scope,
|
|
87
|
+
fileId: input.fileId ?? selectedEntry?.fileId ?? undefined,
|
|
88
|
+
}, {
|
|
89
|
+
authSessionVerifier: deps.gateway,
|
|
90
|
+
grantVerifier: deps.gateway,
|
|
91
|
+
feeVerifier: deps.feeVerifier,
|
|
92
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
93
|
+
});
|
|
94
|
+
return { builder: result.auth.signer, grantId: grant.id };
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=api-auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-auth.js","sourceRoot":"","sources":["../src/api-auth.ts"],"names":[],"mappings":"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"}
|
package/dist/api.d.ts
CHANGED
|
@@ -1,2 +1,6 @@
|
|
|
1
1
|
export { createServer, type CreateServerOptions, type ServerContext, } from "./bootstrap.js";
|
|
2
|
+
export { startPersonalServer, type StartPersonalServerNodeOptions, } from "./client.js";
|
|
3
|
+
export type { PersonalServerHandle, PersonalServerClientErrorBody, PersonalServerDataVersion, PersonalServerHealthRegistration, PersonalServerIdentity, PersonalServerInfo, PersonalServerAuthRequestOptions, PersonalServerListDataOptions, PersonalServerListDataResult, PersonalServerListVersionsOptions, PersonalServerListVersionsResult, PersonalServerReadDataOptions, PersonalServerRegistrationRequest, PersonalServerStatus, PersonalServerSyncTriggerResult, PersonalServerUrls, } from "@opendatalabs/personal-server-ts-core/client";
|
|
4
|
+
export { PersonalServerClientError, dataListPath, dataReadPath, dataVersionsPath, parsePersonalServerJsonResponse, } from "@opendatalabs/personal-server-ts-core/client";
|
|
5
|
+
export { DEFAULT_ROOT_PATH, DEFAULT_CONFIG_PATH, DEFAULT_DATA_DIR, DEFAULT_SERVER_DIR, DEFAULT_VANA_DIR, expandHomePath, loadConfig, resolveRootPath, type LoadConfigOptions, } from "./config/index.js";
|
|
2
6
|
//# sourceMappingURL=api.d.ts.map
|
package/dist/api.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,aAAa,GACnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,KAAK,8BAA8B,GACpC,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,oBAAoB,EACpB,6BAA6B,EAC7B,yBAAyB,EACzB,gCAAgC,EAChC,sBAAsB,EACtB,kBAAkB,EAClB,gCAAgC,EAChC,6BAA6B,EAC7B,4BAA4B,EAC5B,iCAAiC,EACjC,gCAAgC,EAChC,6BAA6B,EAC7B,iCAAiC,EACjC,oBAAoB,EACpB,+BAA+B,EAC/B,kBAAkB,GACnB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,EACf,KAAK,iBAAiB,GACvB,MAAM,mBAAmB,CAAC"}
|
package/dist/api.js
CHANGED
|
@@ -1,2 +1,5 @@
|
|
|
1
1
|
export { createServer, } from "./bootstrap.js";
|
|
2
|
+
export { startPersonalServer, } from "./client.js";
|
|
3
|
+
export { PersonalServerClientError, dataListPath, dataReadPath, dataVersionsPath, parsePersonalServerJsonResponse, } from "@opendatalabs/personal-server-ts-core/client";
|
|
4
|
+
export { DEFAULT_ROOT_PATH, DEFAULT_CONFIG_PATH, DEFAULT_DATA_DIR, DEFAULT_SERVER_DIR, DEFAULT_VANA_DIR, expandHomePath, loadConfig, resolveRootPath, } from "./config/index.js";
|
|
2
5
|
//# sourceMappingURL=api.js.map
|
package/dist/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,gBAAgB,CAAC"}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,GAEpB,MAAM,aAAa,CAAC;AAmBrB,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACL,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,UAAU,EACV,eAAe,GAEhB,MAAM,mBAAmB,CAAC"}
|
package/dist/app.d.ts
CHANGED
|
@@ -1,9 +1,16 @@
|
|
|
1
1
|
import { Hono } from "hono";
|
|
2
2
|
import type { IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
|
|
3
3
|
import type { HierarchyManagerOptions } from "@opendatalabs/personal-server-ts-core/storage/hierarchy";
|
|
4
|
-
import type { GatewayClient } from "@opendatalabs/
|
|
4
|
+
import type { DataPortabilityGatewayConfig, GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
5
|
+
import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
|
|
5
6
|
import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
|
|
6
7
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
8
|
+
import { type HealthDeps } from "./routes/health.js";
|
|
9
|
+
import { McpActivityRecorder, type McpConnectionStore, type McpOAuthAuthorizationStore } from "@opendatalabs/personal-server-ts-core/mcp";
|
|
10
|
+
import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
|
|
11
|
+
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
12
|
+
import type { DataStoragePort, FeeVerifierPort, RuntimeAvailabilityPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
13
|
+
import type { TokenStore } from "./token-store.js";
|
|
7
14
|
import type { Logger } from "pino";
|
|
8
15
|
export interface IdentityInfo {
|
|
9
16
|
address: `0x${string}`;
|
|
@@ -16,14 +23,40 @@ export interface AppDeps {
|
|
|
16
23
|
startedAt: Date;
|
|
17
24
|
indexManager: IndexManager;
|
|
18
25
|
hierarchyOptions: HierarchyManagerOptions;
|
|
19
|
-
serverOrigin: string;
|
|
26
|
+
serverOrigin: string | (() => string);
|
|
27
|
+
localApprovalOrigin?: string | (() => string | undefined);
|
|
20
28
|
serverOwner?: `0x${string}`;
|
|
21
29
|
identity?: IdentityInfo;
|
|
22
30
|
gateway: GatewayClient;
|
|
31
|
+
gatewayConfig?: DataPortabilityGatewayConfig & {
|
|
32
|
+
url?: string;
|
|
33
|
+
};
|
|
34
|
+
config?: ServerConfig;
|
|
23
35
|
accessLogWriter: AccessLogWriter;
|
|
24
36
|
accessLogReader: AccessLogReader;
|
|
37
|
+
cloudMode?: boolean;
|
|
25
38
|
devToken?: string;
|
|
39
|
+
ownerSignature?: `0x${string}`;
|
|
40
|
+
ownerPrivateKey?: `0x${string}`;
|
|
41
|
+
accessToken?: string;
|
|
26
42
|
configPath?: string;
|
|
43
|
+
syncManager?: SyncManager | null;
|
|
44
|
+
serverSigner?: ServerSigner;
|
|
45
|
+
tokenStore?: TokenStore;
|
|
46
|
+
feeVerifier?: FeeVerifierPort;
|
|
47
|
+
runtimeAvailability?: RuntimeAvailabilityPort;
|
|
48
|
+
dataStorage?: DataStoragePort;
|
|
49
|
+
getTunnelStatus?: HealthDeps["getTunnelStatus"];
|
|
50
|
+
/**
|
|
51
|
+
* MCP connection store shared between the `/mcp/:token` Streamable HTTP
|
|
52
|
+
* endpoint and the owner `/v1/mcp/connections` management surface. Defaults
|
|
53
|
+
* to an in-memory store so the routes are wired up out of the box; pass an
|
|
54
|
+
* IndexedDB-backed (or persistent) store for production.
|
|
55
|
+
*/
|
|
56
|
+
mcpConnectionStore?: McpConnectionStore;
|
|
57
|
+
mcpOAuthAuthorizationStore?: McpOAuthAuthorizationStore;
|
|
58
|
+
mcpOAuthApprovalUrl?: string | (() => string);
|
|
59
|
+
mcpActivityRecorder?: McpActivityRecorder;
|
|
27
60
|
}
|
|
28
61
|
export declare function createApp(deps: AppDeps): Hono;
|
|
29
62
|
//# 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,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/app.js
CHANGED
|
@@ -6,8 +6,13 @@ import { dataRoutes } from "./routes/data.js";
|
|
|
6
6
|
import { grantsRoutes } from "./routes/grants.js";
|
|
7
7
|
import { accessLogsRoutes } from "./routes/access-logs.js";
|
|
8
8
|
import { syncRoutes } from "./routes/sync.js";
|
|
9
|
+
import { mcpActivityRoutes, mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
|
|
10
|
+
import { McpActivityRecorder, createInMemoryMcpConnectionStore, createInMemoryMcpOAuthAuthorizationStore, } from "@opendatalabs/personal-server-ts-core/mcp";
|
|
9
11
|
import { uiConfigRoutes } from "./routes/ui-config.js";
|
|
12
|
+
import { uiRegistrationRoutes } from "./routes/ui-registration.js";
|
|
10
13
|
import { uiRoute } from "./routes/ui.js";
|
|
14
|
+
import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
|
|
15
|
+
import { oauthTokenRoutes } from "./routes/oauth-token.js";
|
|
11
16
|
export function createApp(deps) {
|
|
12
17
|
const app = new Hono();
|
|
13
18
|
// CORS — allow all origins for browser-based clients
|
|
@@ -21,10 +26,14 @@ export function createApp(deps) {
|
|
|
21
26
|
app.route("/", healthRoute({
|
|
22
27
|
version: deps.version,
|
|
23
28
|
startedAt: deps.startedAt,
|
|
29
|
+
serverOrigin: deps.serverOrigin,
|
|
24
30
|
serverOwner: deps.serverOwner,
|
|
25
31
|
identity: deps.identity,
|
|
26
32
|
gateway: deps.gateway,
|
|
33
|
+
gatewayConfig: deps.gatewayConfig,
|
|
27
34
|
logger: deps.logger,
|
|
35
|
+
getTunnelStatus: deps.getTunnelStatus,
|
|
36
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
28
37
|
}));
|
|
29
38
|
// Mount data routes (ingest + read + delete)
|
|
30
39
|
app.route("/v1/data", dataRoutes({
|
|
@@ -36,14 +45,28 @@ export function createApp(deps) {
|
|
|
36
45
|
gateway: deps.gateway,
|
|
37
46
|
accessLogWriter: deps.accessLogWriter,
|
|
38
47
|
devToken: deps.devToken,
|
|
48
|
+
accessToken: deps.accessToken,
|
|
49
|
+
tokenStore: deps.tokenStore,
|
|
50
|
+
syncManager: deps.syncManager ?? null,
|
|
51
|
+
feeVerifier: deps.feeVerifier,
|
|
52
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
53
|
+
dataStorage: deps.dataStorage,
|
|
54
|
+
serverSigner: deps.serverSigner,
|
|
55
|
+
gatewayUrl: deps.config?.gateway.url ?? deps.gatewayConfig?.url,
|
|
56
|
+
mountPath: "/v1/data",
|
|
39
57
|
}));
|
|
40
|
-
// Mount grants routes (POST /verify is public, GET /
|
|
58
|
+
// Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
|
|
41
59
|
app.route("/v1/grants", grantsRoutes({
|
|
42
60
|
logger: deps.logger,
|
|
43
61
|
gateway: deps.gateway,
|
|
62
|
+
gatewayConfig: deps.gatewayConfig,
|
|
44
63
|
serverOwner: deps.serverOwner,
|
|
45
64
|
serverOrigin: deps.serverOrigin,
|
|
46
65
|
devToken: deps.devToken,
|
|
66
|
+
accessToken: deps.accessToken,
|
|
67
|
+
tokenStore: deps.tokenStore,
|
|
68
|
+
serverSigner: deps.serverSigner,
|
|
69
|
+
mountPath: "/v1/grants",
|
|
47
70
|
}));
|
|
48
71
|
// Mount access-logs routes (all owner auth)
|
|
49
72
|
app.route("/v1/access-logs", accessLogsRoutes({
|
|
@@ -51,24 +74,100 @@ export function createApp(deps) {
|
|
|
51
74
|
accessLogReader: deps.accessLogReader,
|
|
52
75
|
serverOrigin: deps.serverOrigin,
|
|
53
76
|
serverOwner: deps.serverOwner,
|
|
77
|
+
gateway: deps.gateway,
|
|
54
78
|
devToken: deps.devToken,
|
|
79
|
+
accessToken: deps.accessToken,
|
|
80
|
+
tokenStore: deps.tokenStore,
|
|
81
|
+
mountPath: "/v1/access-logs",
|
|
55
82
|
}));
|
|
56
83
|
// Mount sync routes (all owner auth)
|
|
57
84
|
app.route("/v1/sync", syncRoutes({
|
|
58
85
|
logger: deps.logger,
|
|
59
86
|
serverOrigin: deps.serverOrigin,
|
|
60
87
|
serverOwner: deps.serverOwner,
|
|
88
|
+
gateway: deps.gateway,
|
|
61
89
|
devToken: deps.devToken,
|
|
90
|
+
accessToken: deps.accessToken,
|
|
91
|
+
tokenStore: deps.tokenStore,
|
|
92
|
+
syncManager: deps.syncManager ?? null,
|
|
93
|
+
mountPath: "/v1/sync",
|
|
62
94
|
}));
|
|
95
|
+
// MCP — Phase 1 / 260604-PLAN-vana-mcp-personal-server.md.
|
|
96
|
+
// Owner endpoints + Claude-facing Streamable HTTP endpoint share a single
|
|
97
|
+
// connection store so the management API and the data path agree on which
|
|
98
|
+
// connections exist.
|
|
99
|
+
const mcpConnectionStore = deps.mcpConnectionStore ?? createInMemoryMcpConnectionStore();
|
|
100
|
+
const mcpOAuthAuthorizationStore = deps.mcpOAuthAuthorizationStore ??
|
|
101
|
+
createInMemoryMcpOAuthAuthorizationStore();
|
|
102
|
+
const mcpActivityRecorder = deps.mcpActivityRecorder ?? new McpActivityRecorder();
|
|
103
|
+
const mcpRouteDeps = {
|
|
104
|
+
logger: deps.logger,
|
|
105
|
+
serverOrigin: deps.serverOrigin,
|
|
106
|
+
serverOwner: deps.serverOwner,
|
|
107
|
+
serverSigner: deps.serverSigner,
|
|
108
|
+
gateway: deps.gateway,
|
|
109
|
+
gatewayConfig: deps.gatewayConfig,
|
|
110
|
+
devToken: deps.devToken,
|
|
111
|
+
accessToken: deps.accessToken,
|
|
112
|
+
tokenStore: deps.tokenStore,
|
|
113
|
+
accessLogWriter: deps.accessLogWriter,
|
|
114
|
+
indexManager: deps.indexManager,
|
|
115
|
+
hierarchyOptions: deps.hierarchyOptions,
|
|
116
|
+
dataStorage: deps.dataStorage,
|
|
117
|
+
feeVerifier: deps.feeVerifier,
|
|
118
|
+
runtimeAvailability: deps.runtimeAvailability,
|
|
119
|
+
connectionStore: mcpConnectionStore,
|
|
120
|
+
oauthAuthorizationStore: mcpOAuthAuthorizationStore,
|
|
121
|
+
oauthApprovalUrl: deps.mcpOAuthApprovalUrl,
|
|
122
|
+
activityRecorder: mcpActivityRecorder,
|
|
123
|
+
};
|
|
124
|
+
app.route("/", mcpOAuthRoutes(mcpRouteDeps));
|
|
125
|
+
app.route("/v1/mcp/connections", mcpConnectionsRoutes(mcpRouteDeps));
|
|
126
|
+
app.route("/v1/mcp/activity", mcpActivityRoutes(mcpRouteDeps));
|
|
127
|
+
app.route("/mcp", mcpStreamableHttpRoutes(mcpRouteDeps));
|
|
128
|
+
// Mount login flow v2 routes (self-hosted CLI auth, no auth required)
|
|
129
|
+
if (deps.tokenStore) {
|
|
130
|
+
app.route("/auth/device", authDeviceRoutes({
|
|
131
|
+
logger: deps.logger,
|
|
132
|
+
serverOrigin: deps.serverOrigin,
|
|
133
|
+
localApprovalOrigin: deps.localApprovalOrigin,
|
|
134
|
+
serverOwner: deps.serverOwner,
|
|
135
|
+
tokenStore: deps.tokenStore,
|
|
136
|
+
devToken: deps.devToken,
|
|
137
|
+
accessToken: deps.accessToken,
|
|
138
|
+
allowInteractiveLogin: !deps.cloudMode,
|
|
139
|
+
}));
|
|
140
|
+
// RFC 6749 token endpoint. Replaces ad-hoc `/auth/device/token` semantics
|
|
141
|
+
// with a standard OAuth2 surface that supports both the cloud
|
|
142
|
+
// control-plane `client_credentials` grant and the CLI device-code grant.
|
|
143
|
+
app.route("/oauth/token", oauthTokenRoutes({
|
|
144
|
+
logger: deps.logger,
|
|
145
|
+
tokenStore: deps.tokenStore,
|
|
146
|
+
controlPlaneSecret: deps.accessToken,
|
|
147
|
+
deviceSessions: createDeviceSessionLookup(),
|
|
148
|
+
}));
|
|
149
|
+
}
|
|
63
150
|
// Mount dev UI routes when dev token is available
|
|
64
151
|
if (deps.devToken) {
|
|
65
|
-
app.route("/ui", uiRoute({
|
|
152
|
+
app.route("/ui", uiRoute({
|
|
153
|
+
devToken: deps.devToken,
|
|
154
|
+
psLiteBootstrap: deps.ownerSignature
|
|
155
|
+
? {
|
|
156
|
+
ownerSignature: deps.ownerSignature,
|
|
157
|
+
config: deps.config,
|
|
158
|
+
}
|
|
159
|
+
: null,
|
|
160
|
+
}));
|
|
66
161
|
if (deps.configPath) {
|
|
67
162
|
app.route("/ui/api", uiConfigRoutes({
|
|
68
163
|
devToken: deps.devToken,
|
|
69
164
|
configPath: deps.configPath,
|
|
70
165
|
}));
|
|
71
166
|
}
|
|
167
|
+
app.route("/ui/api", uiRegistrationRoutes({
|
|
168
|
+
devToken: deps.devToken,
|
|
169
|
+
ownerPrivateKey: deps.ownerPrivateKey,
|
|
170
|
+
}));
|
|
72
171
|
}
|
|
73
172
|
// Global error handler
|
|
74
173
|
app.onError((err, c) => {
|
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;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/bootstrap.d.ts
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
|
|
2
|
-
import { type Logger } from "
|
|
3
|
-
import { type IndexManager } from "
|
|
4
|
-
import type { GatewayClient } from "@opendatalabs/
|
|
2
|
+
import { type Logger } from "./logger/index.js";
|
|
3
|
+
import { type IndexManager } from "./storage/index-manager.js";
|
|
4
|
+
import type { GatewayClient } from "@opendatalabs/vana-sdk/node";
|
|
5
5
|
import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
|
|
6
6
|
import type { ServerAccount } from "@opendatalabs/personal-server-ts-core/keys";
|
|
7
7
|
import type { ServerSigner } from "@opendatalabs/personal-server-ts-core/signing";
|
|
8
|
+
import { type SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
|
|
8
9
|
import type { Hono } from "hono";
|
|
10
|
+
import type { FeeVerifierPort } from "@opendatalabs/personal-server-ts-core/ports";
|
|
11
|
+
import { TunnelManager } from "./tunnel/index.js";
|
|
9
12
|
export interface ServerContext {
|
|
10
13
|
app: Hono;
|
|
11
14
|
logger: Logger;
|
|
@@ -16,12 +19,30 @@ export interface ServerContext {
|
|
|
16
19
|
accessLogReader: AccessLogReader;
|
|
17
20
|
serverAccount?: ServerAccount;
|
|
18
21
|
serverSigner?: ServerSigner;
|
|
22
|
+
syncManager: SyncManager | null;
|
|
23
|
+
tunnelManager?: TunnelManager;
|
|
24
|
+
tunnelUrl?: string;
|
|
25
|
+
isServerRegistered: () => boolean;
|
|
26
|
+
localApprovalPort?: number;
|
|
27
|
+
getLocalApprovalOrigin: () => string | undefined;
|
|
28
|
+
setLocalApprovalOrigin: (origin?: string) => void;
|
|
19
29
|
devToken?: string;
|
|
20
|
-
|
|
30
|
+
startBackgroundServices: () => Promise<void>;
|
|
31
|
+
cleanup: () => Promise<void>;
|
|
21
32
|
}
|
|
22
33
|
export interface CreateServerOptions {
|
|
34
|
+
rootPath?: string;
|
|
35
|
+
/** @deprecated Use rootPath instead. */
|
|
23
36
|
serverDir?: string;
|
|
24
37
|
dataDir?: string;
|
|
38
|
+
ownerSignature?: `0x${string}`;
|
|
39
|
+
gatewayClient?: GatewayClient;
|
|
40
|
+
/**
|
|
41
|
+
* Fee verifier for payment-gated data reads. When omitted, one is built
|
|
42
|
+
* from `config.payment` — pass this to keep grant + payment checks on the
|
|
43
|
+
* same gateway as an injected `gatewayClient`.
|
|
44
|
+
*/
|
|
45
|
+
feeVerifier?: FeeVerifierPort;
|
|
25
46
|
}
|
|
26
47
|
export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
|
|
27
48
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAElF,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;AAGjC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAInF,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;;;;OAIG;IACH,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AA0BD,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CAiZxB"}
|