@opendatalabs/personal-server-ts-server 0.0.1-canary.b75bcfa → 0.0.1-canary.bc9c8d9

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 (185) hide show
  1. package/dist/api-auth.d.ts +17 -0
  2. package/dist/api-auth.d.ts.map +1 -0
  3. package/dist/api-auth.js +98 -0
  4. package/dist/api-auth.js.map +1 -0
  5. package/dist/api.d.ts +4 -0
  6. package/dist/api.d.ts.map +1 -1
  7. package/dist/api.js +3 -0
  8. package/dist/api.js.map +1 -1
  9. package/dist/app.d.ts +27 -1
  10. package/dist/app.d.ts.map +1 -1
  11. package/dist/app.js +88 -30
  12. package/dist/app.js.map +1 -1
  13. package/dist/bootstrap.d.ts +16 -3
  14. package/dist/bootstrap.d.ts.map +1 -1
  15. package/dist/bootstrap.js +168 -30
  16. package/dist/bootstrap.js.map +1 -1
  17. package/dist/client.d.ts +17 -0
  18. package/dist/client.d.ts.map +1 -0
  19. package/dist/client.js +367 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/config/defaults.d.ts +12 -0
  22. package/dist/config/defaults.d.ts.map +1 -0
  23. package/dist/config/defaults.js +14 -0
  24. package/dist/config/defaults.js.map +1 -0
  25. package/dist/config/index.d.ts +4 -0
  26. package/dist/config/index.d.ts.map +1 -0
  27. package/dist/config/index.js +4 -0
  28. package/dist/config/index.js.map +1 -0
  29. package/dist/config/loader.d.ts +8 -0
  30. package/dist/config/loader.d.ts.map +1 -0
  31. package/dist/config/loader.js +74 -0
  32. package/dist/config/loader.js.map +1 -0
  33. package/dist/config/paths.d.ts +9 -0
  34. package/dist/config/paths.d.ts.map +1 -0
  35. package/dist/config/paths.js +22 -0
  36. package/dist/config/paths.js.map +1 -0
  37. package/dist/grant-fee-verifier.d.ts +27 -0
  38. package/dist/grant-fee-verifier.d.ts.map +1 -0
  39. package/dist/grant-fee-verifier.js +40 -0
  40. package/dist/grant-fee-verifier.js.map +1 -0
  41. package/dist/hono-context.d.ts +14 -0
  42. package/dist/hono-context.d.ts.map +1 -0
  43. package/dist/hono-context.js +2 -0
  44. package/dist/hono-context.js.map +1 -0
  45. package/dist/index.js +64 -12
  46. package/dist/index.js.map +1 -1
  47. package/dist/keys/server-account.d.ts +28 -0
  48. package/dist/keys/server-account.d.ts.map +1 -0
  49. package/dist/keys/server-account.js +48 -0
  50. package/dist/keys/server-account.js.map +1 -0
  51. package/dist/logger/index.d.ts +5 -0
  52. package/dist/logger/index.d.ts.map +1 -0
  53. package/dist/logger/index.js +9 -0
  54. package/dist/logger/index.js.map +1 -0
  55. package/dist/logging/access-log.d.ts +15 -0
  56. package/dist/logging/access-log.d.ts.map +1 -0
  57. package/dist/logging/access-log.js +25 -0
  58. package/dist/logging/access-log.js.map +1 -0
  59. package/dist/logging/access-reader.d.ts +19 -0
  60. package/dist/logging/access-reader.d.ts.map +1 -0
  61. package/dist/logging/access-reader.js +50 -0
  62. package/dist/logging/access-reader.js.map +1 -0
  63. package/dist/middleware/access-log.d.ts.map +1 -1
  64. package/dist/middleware/access-log.js +8 -2
  65. package/dist/middleware/access-log.js.map +1 -1
  66. package/dist/middleware/builder-check.d.ts +2 -2
  67. package/dist/middleware/builder-check.d.ts.map +1 -1
  68. package/dist/middleware/builder-check.js +7 -2
  69. package/dist/middleware/builder-check.js.map +1 -1
  70. package/dist/middleware/data-read-policy.d.ts +11 -0
  71. package/dist/middleware/data-read-policy.d.ts.map +1 -0
  72. package/dist/middleware/data-read-policy.js +39 -0
  73. package/dist/middleware/data-read-policy.js.map +1 -0
  74. package/dist/middleware/owner-check.js +1 -1
  75. package/dist/middleware/owner-check.js.map +1 -1
  76. package/dist/middleware/web3-auth.d.ts +11 -0
  77. package/dist/middleware/web3-auth.d.ts.map +1 -1
  78. package/dist/middleware/web3-auth.js +21 -31
  79. package/dist/middleware/web3-auth.js.map +1 -1
  80. package/dist/migrations/local-state.d.ts +21 -0
  81. package/dist/migrations/local-state.d.ts.map +1 -0
  82. package/dist/migrations/local-state.js +106 -0
  83. package/dist/migrations/local-state.js.map +1 -0
  84. package/dist/routes/access-logs.d.ts +7 -0
  85. package/dist/routes/access-logs.d.ts.map +1 -1
  86. package/dist/routes/access-logs.js +11 -17
  87. package/dist/routes/access-logs.js.map +1 -1
  88. package/dist/routes/auth-device.d.ts +48 -0
  89. package/dist/routes/auth-device.d.ts.map +1 -0
  90. package/dist/routes/auth-device.js +578 -0
  91. package/dist/routes/auth-device.js.map +1 -0
  92. package/dist/routes/data.d.ts +10 -1
  93. package/dist/routes/data.d.ts.map +1 -1
  94. package/dist/routes/data.js +25 -201
  95. package/dist/routes/data.js.map +1 -1
  96. package/dist/routes/grants.d.ts +9 -2
  97. package/dist/routes/grants.d.ts.map +1 -1
  98. package/dist/routes/grants.js +18 -196
  99. package/dist/routes/grants.js.map +1 -1
  100. package/dist/routes/health.d.ts +7 -1
  101. package/dist/routes/health.d.ts.map +1 -1
  102. package/dist/routes/health.js +39 -2
  103. package/dist/routes/health.js.map +1 -1
  104. package/dist/routes/mcp.d.ts +85 -6
  105. package/dist/routes/mcp.d.ts.map +1 -1
  106. package/dist/routes/mcp.js +486 -53
  107. package/dist/routes/mcp.js.map +1 -1
  108. package/dist/routes/oauth-token.d.ts +56 -0
  109. package/dist/routes/oauth-token.d.ts.map +1 -0
  110. package/dist/routes/oauth-token.js +49 -0
  111. package/dist/routes/oauth-token.js.map +1 -0
  112. package/dist/routes/sync.d.ts +7 -0
  113. package/dist/routes/sync.d.ts.map +1 -1
  114. package/dist/routes/sync.js +12 -39
  115. package/dist/routes/sync.js.map +1 -1
  116. package/dist/routes/ui-config.d.ts.map +1 -1
  117. package/dist/routes/ui-config.js +17 -82
  118. package/dist/routes/ui-config.js.map +1 -1
  119. package/dist/routes/ui-registration.d.ts +7 -0
  120. package/dist/routes/ui-registration.d.ts.map +1 -0
  121. package/dist/routes/ui-registration.js +215 -0
  122. package/dist/routes/ui-registration.js.map +1 -0
  123. package/dist/routes/ui.d.ts +1 -0
  124. package/dist/routes/ui.d.ts.map +1 -1
  125. package/dist/routes/ui.js +46 -4
  126. package/dist/routes/ui.js.map +1 -1
  127. package/dist/storage/hierarchy.d.ts +17 -0
  128. package/dist/storage/hierarchy.d.ts.map +1 -0
  129. package/dist/storage/hierarchy.js +67 -0
  130. package/dist/storage/hierarchy.js.map +1 -0
  131. package/dist/storage/index-manager.d.ts +37 -0
  132. package/dist/storage/index-manager.d.ts.map +1 -0
  133. package/dist/storage/index-manager.js +136 -0
  134. package/dist/storage/index-manager.js.map +1 -0
  135. package/dist/storage/index-schema.d.ts +5 -0
  136. package/dist/storage/index-schema.d.ts.map +1 -0
  137. package/dist/storage/index-schema.js +48 -0
  138. package/dist/storage/index-schema.js.map +1 -0
  139. package/dist/storage/node-data-storage.d.ts +9 -0
  140. package/dist/storage/node-data-storage.d.ts.map +1 -0
  141. package/dist/storage/node-data-storage.js +60 -0
  142. package/dist/storage/node-data-storage.js.map +1 -0
  143. package/dist/sync-cursor.d.ts +15 -0
  144. package/dist/sync-cursor.d.ts.map +1 -0
  145. package/dist/sync-cursor.js +110 -0
  146. package/dist/sync-cursor.js.map +1 -0
  147. package/dist/token-store.d.ts +22 -0
  148. package/dist/token-store.d.ts.map +1 -0
  149. package/dist/token-store.js +120 -0
  150. package/dist/token-store.js.map +1 -0
  151. package/dist/tunnel/auth.d.ts +4 -0
  152. package/dist/tunnel/auth.d.ts.map +1 -1
  153. package/dist/tunnel/auth.js +2 -1
  154. package/dist/tunnel/auth.js.map +1 -1
  155. package/dist/tunnel/config.d.ts +1 -0
  156. package/dist/tunnel/config.d.ts.map +1 -1
  157. package/dist/tunnel/config.js +1 -1
  158. package/dist/tunnel/config.js.map +1 -1
  159. package/dist/tunnel/manager.d.ts +6 -0
  160. package/dist/tunnel/manager.d.ts.map +1 -1
  161. package/dist/tunnel/manager.js +45 -17
  162. package/dist/tunnel/manager.js.map +1 -1
  163. package/dist/tunnel/verify.d.ts +1 -1
  164. package/dist/tunnel/verify.d.ts.map +1 -1
  165. package/dist/tunnel/verify.js +8 -2
  166. package/dist/tunnel/verify.js.map +1 -1
  167. package/dist/ui/browser_tls_rustls_bg.wasm +0 -0
  168. package/dist/ui/index.html +2193 -0
  169. package/dist/ui/ps-lite-debug.d.ts +93 -0
  170. package/dist/ui/ps-lite-debug.d.ts.map +1 -0
  171. package/dist/ui/ps-lite-debug.js +79703 -0
  172. package/dist/ui/ps-lite-debug.js.map +1 -0
  173. package/package.json +20 -8
  174. package/dist/middleware/grant-check.d.ts +0 -12
  175. package/dist/middleware/grant-check.d.ts.map +0 -1
  176. package/dist/middleware/grant-check.js +0 -90
  177. package/dist/middleware/grant-check.js.map +0 -1
  178. package/dist/oauth/provider.d.ts +0 -55
  179. package/dist/oauth/provider.d.ts.map +0 -1
  180. package/dist/oauth/provider.js +0 -160
  181. package/dist/oauth/provider.js.map +0 -1
  182. package/dist/oauth/routes.d.ts +0 -10
  183. package/dist/oauth/routes.d.ts.map +0 -1
  184. package/dist/oauth/routes.js +0 -206
  185. package/dist/oauth/routes.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"}
@@ -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,12 +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/personal-server-ts-core/gateway";
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";
7
8
  import { type HealthDeps } from "./routes/health.js";
9
+ import { type McpConnectionStore, type McpOAuthAuthorizationStore } from "@opendatalabs/personal-server-ts-core/mcp";
8
10
  import type { SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
9
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";
10
14
  import type { Logger } from "pino";
11
15
  export interface IdentityInfo {
12
16
  address: `0x${string}`;
@@ -20,16 +24,38 @@ export interface AppDeps {
20
24
  indexManager: IndexManager;
21
25
  hierarchyOptions: HierarchyManagerOptions;
22
26
  serverOrigin: string | (() => string);
27
+ localApprovalOrigin?: string | (() => string | undefined);
23
28
  serverOwner?: `0x${string}`;
24
29
  identity?: IdentityInfo;
25
30
  gateway: GatewayClient;
31
+ gatewayConfig?: DataPortabilityGatewayConfig & {
32
+ url?: string;
33
+ };
34
+ config?: ServerConfig;
26
35
  accessLogWriter: AccessLogWriter;
27
36
  accessLogReader: AccessLogReader;
37
+ cloudMode?: boolean;
28
38
  devToken?: string;
39
+ ownerSignature?: `0x${string}`;
40
+ ownerPrivateKey?: `0x${string}`;
41
+ accessToken?: string;
29
42
  configPath?: string;
30
43
  syncManager?: SyncManager | null;
31
44
  serverSigner?: ServerSigner;
45
+ tokenStore?: TokenStore;
46
+ feeVerifier?: FeeVerifierPort;
47
+ runtimeAvailability?: RuntimeAvailabilityPort;
48
+ dataStorage?: DataStoragePort;
32
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);
33
59
  }
34
60
  export declare function createApp(deps: AppDeps): Hono;
35
61
  //# 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,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAUlE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4CAA4C,CAAC;AAC9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,YAAY,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,CAAC,CAAC;IACtC,WAAW,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC5B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,OAAO,EAAE,aAAa,CAAC;IACvB,eAAe,EAAE,eAAe,CAAC;IACjC,eAAe,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,CAAC;CACjD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAyK7C"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
package/dist/app.js CHANGED
@@ -6,24 +6,19 @@ 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 { mcpConnectionsRoutes, mcpOAuthRoutes, mcpStreamableHttpRoutes, } from "./routes/mcp.js";
10
+ import { 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";
11
- import { mcpRoute } from "./routes/mcp.js";
12
- import { OAuthProvider } from "./oauth/provider.js";
13
- import { oauthRoutes } from "./oauth/routes.js";
14
+ import { authDeviceRoutes, createDeviceSessionLookup, } from "./routes/auth-device.js";
15
+ import { oauthTokenRoutes } from "./routes/oauth-token.js";
14
16
  export function createApp(deps) {
15
17
  const app = new Hono();
16
18
  // CORS — allow all origins for browser-based clients
17
19
  app.use("*", cors({
18
20
  origin: "*",
19
- allowHeaders: [
20
- "Content-Type",
21
- "Authorization",
22
- "mcp-session-id",
23
- "Last-Event-ID",
24
- "mcp-protocol-version",
25
- ],
26
- exposeHeaders: ["mcp-session-id", "mcp-protocol-version"],
21
+ allowHeaders: ["Content-Type", "Authorization"],
27
22
  allowMethods: ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
28
23
  maxAge: 86400,
29
24
  }));
@@ -31,11 +26,14 @@ export function createApp(deps) {
31
26
  app.route("/", healthRoute({
32
27
  version: deps.version,
33
28
  startedAt: deps.startedAt,
29
+ serverOrigin: deps.serverOrigin,
34
30
  serverOwner: deps.serverOwner,
35
31
  identity: deps.identity,
36
32
  gateway: deps.gateway,
33
+ gatewayConfig: deps.gatewayConfig,
37
34
  logger: deps.logger,
38
35
  getTunnelStatus: deps.getTunnelStatus,
36
+ runtimeAvailability: deps.runtimeAvailability,
39
37
  }));
40
38
  // Mount data routes (ingest + read + delete)
41
39
  app.route("/v1/data", dataRoutes({
@@ -47,16 +45,26 @@ export function createApp(deps) {
47
45
  gateway: deps.gateway,
48
46
  accessLogWriter: deps.accessLogWriter,
49
47
  devToken: deps.devToken,
48
+ accessToken: deps.accessToken,
49
+ tokenStore: deps.tokenStore,
50
50
  syncManager: deps.syncManager ?? null,
51
+ feeVerifier: deps.feeVerifier,
52
+ runtimeAvailability: deps.runtimeAvailability,
53
+ dataStorage: deps.dataStorage,
54
+ mountPath: "/v1/data",
51
55
  }));
52
56
  // Mount grants routes (POST /verify is public, GET / and POST / need owner auth)
53
57
  app.route("/v1/grants", grantsRoutes({
54
58
  logger: deps.logger,
55
59
  gateway: deps.gateway,
60
+ gatewayConfig: deps.gatewayConfig,
56
61
  serverOwner: deps.serverOwner,
57
62
  serverOrigin: deps.serverOrigin,
58
63
  devToken: deps.devToken,
64
+ accessToken: deps.accessToken,
65
+ tokenStore: deps.tokenStore,
59
66
  serverSigner: deps.serverSigner,
67
+ mountPath: "/v1/grants",
60
68
  }));
61
69
  // Mount access-logs routes (all owner auth)
62
70
  app.route("/v1/access-logs", accessLogsRoutes({
@@ -64,47 +72,97 @@ export function createApp(deps) {
64
72
  accessLogReader: deps.accessLogReader,
65
73
  serverOrigin: deps.serverOrigin,
66
74
  serverOwner: deps.serverOwner,
75
+ gateway: deps.gateway,
67
76
  devToken: deps.devToken,
77
+ accessToken: deps.accessToken,
78
+ tokenStore: deps.tokenStore,
79
+ mountPath: "/v1/access-logs",
68
80
  }));
69
81
  // Mount sync routes (all owner auth)
70
82
  app.route("/v1/sync", syncRoutes({
71
83
  logger: deps.logger,
72
84
  serverOrigin: deps.serverOrigin,
73
85
  serverOwner: deps.serverOwner,
86
+ gateway: deps.gateway,
74
87
  devToken: deps.devToken,
88
+ accessToken: deps.accessToken,
89
+ tokenStore: deps.tokenStore,
75
90
  syncManager: deps.syncManager ?? null,
91
+ mountPath: "/v1/sync",
76
92
  }));
77
- // Mount MCP endpoint (Model Context Protocol for AI tools)
78
- if (deps.serverOwner) {
79
- const oauthProvider = new OAuthProvider(deps.serverOwner);
80
- // Mount OAuth discovery + auth endpoints at the root
81
- app.route("/", oauthRoutes({
82
- oauthProvider,
83
- serverOwner: deps.serverOwner,
84
- accountPortalOrigin: process.env.ACCOUNT_URL,
93
+ // MCP Phase 1 / 260604-PLAN-vana-mcp-personal-server.md.
94
+ // Owner endpoints + Claude-facing Streamable HTTP endpoint share a single
95
+ // connection store so the management API and the data path agree on which
96
+ // connections exist.
97
+ const mcpConnectionStore = deps.mcpConnectionStore ?? createInMemoryMcpConnectionStore();
98
+ const mcpOAuthAuthorizationStore = deps.mcpOAuthAuthorizationStore ??
99
+ createInMemoryMcpOAuthAuthorizationStore();
100
+ const mcpRouteDeps = {
101
+ logger: deps.logger,
102
+ serverOrigin: deps.serverOrigin,
103
+ serverOwner: deps.serverOwner,
104
+ serverSigner: deps.serverSigner,
105
+ gateway: deps.gateway,
106
+ gatewayConfig: deps.gatewayConfig,
107
+ devToken: deps.devToken,
108
+ accessToken: deps.accessToken,
109
+ tokenStore: deps.tokenStore,
110
+ accessLogWriter: deps.accessLogWriter,
111
+ indexManager: deps.indexManager,
112
+ hierarchyOptions: deps.hierarchyOptions,
113
+ dataStorage: deps.dataStorage,
114
+ feeVerifier: deps.feeVerifier,
115
+ runtimeAvailability: deps.runtimeAvailability,
116
+ connectionStore: mcpConnectionStore,
117
+ oauthAuthorizationStore: mcpOAuthAuthorizationStore,
118
+ oauthApprovalUrl: deps.mcpOAuthApprovalUrl,
119
+ };
120
+ app.route("/", mcpOAuthRoutes(mcpRouteDeps));
121
+ app.route("/v1/mcp/connections", mcpConnectionsRoutes(mcpRouteDeps));
122
+ app.route("/mcp", mcpStreamableHttpRoutes(mcpRouteDeps));
123
+ // Mount login flow v2 routes (self-hosted CLI auth, no auth required)
124
+ if (deps.tokenStore) {
125
+ app.route("/auth/device", authDeviceRoutes({
126
+ logger: deps.logger,
85
127
  serverOrigin: deps.serverOrigin,
128
+ localApprovalOrigin: deps.localApprovalOrigin,
129
+ serverOwner: deps.serverOwner,
130
+ tokenStore: deps.tokenStore,
131
+ devToken: deps.devToken,
132
+ accessToken: deps.accessToken,
133
+ allowInteractiveLogin: !deps.cloudMode,
86
134
  }));
87
- app.route("/mcp", mcpRoute({
88
- mcpContext: {
89
- indexManager: deps.indexManager,
90
- hierarchyOptions: deps.hierarchyOptions,
91
- gatewayClient: deps.gateway,
92
- serverOwner: deps.serverOwner,
93
- logger: deps.logger,
94
- },
95
- oauthProvider,
96
- serverOrigin: deps.serverOrigin,
135
+ // RFC 6749 token endpoint. Replaces ad-hoc `/auth/device/token` semantics
136
+ // with a standard OAuth2 surface that supports both the cloud
137
+ // control-plane `client_credentials` grant and the CLI device-code grant.
138
+ app.route("/oauth/token", oauthTokenRoutes({
139
+ logger: deps.logger,
140
+ tokenStore: deps.tokenStore,
141
+ controlPlaneSecret: deps.accessToken,
142
+ deviceSessions: createDeviceSessionLookup(),
97
143
  }));
98
144
  }
99
145
  // Mount dev UI routes when dev token is available
100
146
  if (deps.devToken) {
101
- app.route("/ui", uiRoute({ devToken: deps.devToken }));
147
+ app.route("/ui", uiRoute({
148
+ devToken: deps.devToken,
149
+ psLiteBootstrap: deps.ownerSignature
150
+ ? {
151
+ ownerSignature: deps.ownerSignature,
152
+ config: deps.config,
153
+ }
154
+ : null,
155
+ }));
102
156
  if (deps.configPath) {
103
157
  app.route("/ui/api", uiConfigRoutes({
104
158
  devToken: deps.devToken,
105
159
  configPath: deps.configPath,
106
160
  }));
107
161
  }
162
+ app.route("/ui/api", uiRegistrationRoutes({
163
+ devToken: deps.devToken,
164
+ ownerPrivateKey: deps.ownerPrivateKey,
165
+ }));
108
166
  }
109
167
  // Global error handler
110
168
  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":"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"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,13 @@
1
1
  import type { ServerConfig } from "@opendatalabs/personal-server-ts-core/schemas";
2
- import { type Logger } from "@opendatalabs/personal-server-ts-core/logger";
3
- import { type IndexManager } from "@opendatalabs/personal-server-ts-core/storage/index";
4
- import type { GatewayClient } from "@opendatalabs/personal-server-ts-core/gateway";
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
8
  import { type SyncManager } from "@opendatalabs/personal-server-ts-core/sync";
9
9
  import type { Hono } from "hono";
10
+ import type { FeeVerifierPort } from "@opendatalabs/personal-server-ts-core/ports";
10
11
  import { TunnelManager } from "./tunnel/index.js";
11
12
  export interface ServerContext {
12
13
  app: Hono;
@@ -21,6 +22,10 @@ export interface ServerContext {
21
22
  syncManager: SyncManager | null;
22
23
  tunnelManager?: TunnelManager;
23
24
  tunnelUrl?: string;
25
+ isServerRegistered: () => boolean;
26
+ localApprovalPort?: number;
27
+ getLocalApprovalOrigin: () => string | undefined;
28
+ setLocalApprovalOrigin: (origin?: string) => void;
24
29
  devToken?: string;
25
30
  startBackgroundServices: () => Promise<void>;
26
31
  cleanup: () => Promise<void>;
@@ -30,6 +35,14 @@ export interface CreateServerOptions {
30
35
  /** @deprecated Use rootPath instead. */
31
36
  serverDir?: string;
32
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;
33
46
  }
34
47
  export declare function createServer(config: ServerConfig, options?: CreateServerOptions): Promise<ServerContext>;
35
48
  //# sourceMappingURL=bootstrap.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"bootstrap.d.ts","sourceRoot":"","sources":["../src/bootstrap.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAKlF,OAAO,EAEL,KAAK,MAAM,EACZ,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,qDAAqD,CAAC;AAG7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+CAA+C,CAAC;AAGnF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AAMnG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4CAA4C,CAAC;AAKhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,4CAA4C,CAAC;AAEpD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAoB,MAAM,mBAAmB,CAAC;AAEpE,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,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;CAClB;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,aAAa,CAAC,CA6QxB"}
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"}