@opendatalabs/personal-server-ts-lite 0.0.1-canary.055d48e

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 (56) hide show
  1. package/dist/bridge.d.ts +23 -0
  2. package/dist/bridge.d.ts.map +1 -0
  3. package/dist/bridge.js +53 -0
  4. package/dist/bridge.js.map +1 -0
  5. package/dist/browser-runtime.d.ts +31 -0
  6. package/dist/browser-runtime.d.ts.map +1 -0
  7. package/dist/browser-runtime.js +103 -0
  8. package/dist/browser-runtime.js.map +1 -0
  9. package/dist/browser-tls-rustls/browser_tls_rustls.d.ts +49 -0
  10. package/dist/browser-tls-rustls/browser_tls_rustls.js +401 -0
  11. package/dist/browser-tls-rustls/browser_tls_rustls_bg.wasm +0 -0
  12. package/dist/client.d.ts +22 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +376 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/index.d.ts +14 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +13 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/mcp-store.d.ts +30 -0
  21. package/dist/mcp-store.d.ts.map +1 -0
  22. package/dist/mcp-store.js +118 -0
  23. package/dist/mcp-store.js.map +1 -0
  24. package/dist/owner-binding.d.ts +7 -0
  25. package/dist/owner-binding.d.ts.map +1 -0
  26. package/dist/owner-binding.js +18 -0
  27. package/dist/owner-binding.js.map +1 -0
  28. package/dist/relay-tls.d.ts +19 -0
  29. package/dist/relay-tls.d.ts.map +1 -0
  30. package/dist/relay-tls.js +226 -0
  31. package/dist/relay-tls.js.map +1 -0
  32. package/dist/relay.d.ts +68 -0
  33. package/dist/relay.d.ts.map +1 -0
  34. package/dist/relay.js +361 -0
  35. package/dist/relay.js.map +1 -0
  36. package/dist/runtime.d.ts +87 -0
  37. package/dist/runtime.d.ts.map +1 -0
  38. package/dist/runtime.js +631 -0
  39. package/dist/runtime.js.map +1 -0
  40. package/dist/state.d.ts +62 -0
  41. package/dist/state.d.ts.map +1 -0
  42. package/dist/state.js +296 -0
  43. package/dist/state.js.map +1 -0
  44. package/dist/storage-utils.d.ts +7 -0
  45. package/dist/storage-utils.d.ts.map +1 -0
  46. package/dist/storage-utils.js +66 -0
  47. package/dist/storage-utils.js.map +1 -0
  48. package/dist/storage.d.ts +37 -0
  49. package/dist/storage.d.ts.map +1 -0
  50. package/dist/storage.js +301 -0
  51. package/dist/storage.js.map +1 -0
  52. package/dist/sync.d.ts +26 -0
  53. package/dist/sync.d.ts.map +1 -0
  54. package/dist/sync.js +87 -0
  55. package/dist/sync.js.map +1 -0
  56. package/package.json +40 -0
@@ -0,0 +1,22 @@
1
+ import { type PersonalServerHandle, type PersonalServerStatus } from "@opendatalabs/personal-server-ts-core/client";
2
+ import { type GatewayClient } from "@opendatalabs/vana-sdk/browser";
3
+ import { type IndexedDbPsLiteRuntimeOptions } from "./browser-runtime.js";
4
+ import { type PsLiteRelayClientOptions } from "./relay.js";
5
+ import type { PsLiteRuntime } from "./runtime.js";
6
+ import { type PsLiteStateStore } from "./state.js";
7
+ export interface StartPersonalServerLiteRelayOptions extends Omit<PsLiteRelayClientOptions, "runtime" | "onStatus" | "sessionId"> {
8
+ sessionId?: string;
9
+ onStatus?: PsLiteRelayClientOptions["onStatus"];
10
+ }
11
+ export interface StartPersonalServerLiteOptions extends Omit<IndexedDbPsLiteRuntimeOptions, "ownerSignature" | "active"> {
12
+ ownerSignature?: `0x${string}`;
13
+ active?: boolean;
14
+ runtime?: PsLiteRuntime;
15
+ localOrigin?: string;
16
+ relay?: false | StartPersonalServerLiteRelayOptions;
17
+ relayStateStore?: PsLiteStateStore;
18
+ gateway?: GatewayClient;
19
+ onStatus?: (status: PersonalServerStatus) => void;
20
+ }
21
+ export declare function startPersonalServer(options: StartPersonalServerLiteOptions): Promise<PersonalServerHandle>;
22
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAeL,KAAK,oBAAoB,EAgBzB,KAAK,oBAAoB,EAG1B,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAGL,KAAK,6BAA6B,EACnC,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAIL,KAAK,wBAAwB,EAE9B,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAKL,KAAK,gBAAgB,EACtB,MAAM,YAAY,CAAC;AAIpB,MAAM,WAAW,mCAAoC,SAAQ,IAAI,CAC/D,wBAAwB,EACxB,SAAS,GAAG,UAAU,GAAG,WAAW,CACrC;IACC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,wBAAwB,CAAC,UAAU,CAAC,CAAC;CACjD;AAED,MAAM,WAAW,8BAA+B,SAAQ,IAAI,CAC1D,6BAA6B,EAC7B,gBAAgB,GAAG,QAAQ,CAC5B;IACC,cAAc,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC/B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,KAAK,GAAG,mCAAmC,CAAC;IACpD,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;CACnD;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,8BAA8B,GACtC,OAAO,CAAC,oBAAoB,CAAC,CA0Z/B"}
package/dist/client.js ADDED
@@ -0,0 +1,376 @@
1
+ import { accessLogsListPath, createOwnerSignedPersonalServerRequest, createPersonalServerInfoFromHealth, createPersonalServerRegistrationRequest, dataListPath, dataReadPath, dataVersionsPath, grantRevokePath, parsePersonalServerJsonResponse, requestPath, submitPersonalServerRegistration, } from "@opendatalabs/personal-server-ts-core/client";
2
+ import { createGatewayClient, } from "@opendatalabs/vana-sdk/browser";
3
+ import { createIndexedDbPsLiteRuntime, } from "./browser-runtime.js";
4
+ import { psLiteRelayPublicUrl, startPsLiteRelayClient, } from "./relay.js";
5
+ import { createIndexedDbPsLiteStateStore, loadPsLiteRelayState, savePsLiteRelayState, } from "./state.js";
6
+ const DEFAULT_LITE_ORIGIN = "https://ps-lite.local";
7
+ export async function startPersonalServer(options) {
8
+ const localOrigin = options.localOrigin ?? DEFAULT_LITE_ORIGIN;
9
+ const relayOptions = options.relay || undefined;
10
+ const relayStateStore = relayOptions
11
+ ? (options.relayStateStore ??
12
+ (options.runtime
13
+ ? undefined
14
+ : createIndexedDbPsLiteStateStore({
15
+ dbName: options.dbName ?? "personal-server-lite",
16
+ storeName: options.stateStoreName ?? "state",
17
+ })))
18
+ : undefined;
19
+ const savedRelayState = relayStateStore
20
+ ? await loadPsLiteRelayState(relayStateStore).catch(() => null)
21
+ : null;
22
+ const resolvedRelayOptions = relayOptions
23
+ ? {
24
+ ...relayOptions,
25
+ sessionId: relayOptions.sessionId ??
26
+ savedRelaySessionId(savedRelayState, relayOptions) ??
27
+ randomSessionId(),
28
+ }
29
+ : undefined;
30
+ const initialPublicUrl = resolvedRelayOptions
31
+ ? psLiteRelayPublicUrl(resolvedRelayOptions.sessionId, resolvedRelayOptions.publicSuffix)
32
+ : null;
33
+ const runtimeOrigin = initialPublicUrl ?? localOrigin;
34
+ const runtimeBundle = options.runtime
35
+ ? null
36
+ : await createIndexedDbPsLiteRuntime({
37
+ ...options,
38
+ ownerSignature: requiredOwnerSignature(options.ownerSignature),
39
+ active: options.active ?? true,
40
+ runtimeOrigin,
41
+ configDefaults: configDefaultsWithOrigin(options.configDefaults, runtimeOrigin),
42
+ });
43
+ const runtime = options.runtime ?? runtimeBundle.runtime;
44
+ if (options.active ?? true) {
45
+ runtime.activate();
46
+ }
47
+ let status = "ready";
48
+ let relayStatus = "closed";
49
+ let relayClient;
50
+ let publicUrl = null;
51
+ let lastInfo = null;
52
+ let lastPreparedRegistration = null;
53
+ const gateway = options.gateway;
54
+ const setStatus = (nextStatus) => {
55
+ status = nextStatus;
56
+ options.onStatus?.(nextStatus);
57
+ };
58
+ if (resolvedRelayOptions) {
59
+ relayStatus = "connecting";
60
+ publicUrl = initialPublicUrl;
61
+ relayClient = startPsLiteRelayClient({
62
+ ...resolvedRelayOptions,
63
+ runtime,
64
+ origin: runtimeOrigin,
65
+ onStatus(nextRelayStatus) {
66
+ relayStatus = nextRelayStatus;
67
+ if (nextRelayStatus === "error")
68
+ setStatus("error");
69
+ resolvedRelayOptions.onStatus?.(nextRelayStatus);
70
+ },
71
+ });
72
+ }
73
+ async function info() {
74
+ if (status === "stopped" && lastInfo) {
75
+ return { ...lastInfo, status: "stopped" };
76
+ }
77
+ const response = await runtime.fetch(new Request(`${localOrigin}/health`));
78
+ const body = await response.json();
79
+ lastInfo = createPersonalServerInfoFromHealth({
80
+ kind: "lite",
81
+ status,
82
+ health: {
83
+ ...body,
84
+ relay: { status: relayStatus, publicUrl },
85
+ },
86
+ localUrl: localOrigin,
87
+ publicUrl,
88
+ });
89
+ return lastInfo;
90
+ }
91
+ async function prepareRegistration(prepareOptions = {}) {
92
+ const current = await info();
93
+ const serverUrl = prepareOptions.serverUrl ?? current.urls.registration;
94
+ if (!current.ownerAddress || !current.server || !serverUrl) {
95
+ throw new Error("Personal Server identity and URL are required");
96
+ }
97
+ if (!current.gatewayConfig) {
98
+ throw new Error("Personal Server gateway config is required");
99
+ }
100
+ const request = createPersonalServerRegistrationRequest({
101
+ gatewayConfig: current.gatewayConfig,
102
+ ownerAddress: current.ownerAddress,
103
+ serverAddress: current.server.address,
104
+ publicKey: current.server.publicKey,
105
+ serverUrl,
106
+ });
107
+ lastPreparedRegistration = request;
108
+ return request;
109
+ }
110
+ async function submitRegistration(submitOptions) {
111
+ const request = submitOptions.request ??
112
+ (submitOptions.serverUrl
113
+ ? await prepareRegistration({ serverUrl: submitOptions.serverUrl })
114
+ : (lastPreparedRegistration ?? (await prepareRegistration())));
115
+ const gatewayClient = gateway ?? createGatewayClient(requiredGatewayUrl(await info()));
116
+ return submitPersonalServerRegistration({
117
+ gateway: gatewayClient,
118
+ request,
119
+ signature: submitOptions.signature,
120
+ }).then(async (result) => {
121
+ await rememberRegisteredRelay(request.candidate.serverUrl);
122
+ return result;
123
+ });
124
+ }
125
+ async function callFetch(input, init) {
126
+ const origin = (await info()).urls.apiOrigin ?? localOrigin;
127
+ return runtime.fetch(toRuntimeRequest(input, origin, init));
128
+ }
129
+ async function postData(scope, body, postOptions) {
130
+ const current = await info();
131
+ const origin = requiredApiOrigin(current);
132
+ const path = `/v1/data/${encodeURIComponent(scope)}`;
133
+ const request = await createOwnerRequest({
134
+ origin,
135
+ path,
136
+ method: "POST",
137
+ body,
138
+ authOptions: postOptions,
139
+ headers: {
140
+ "Content-Type": "application/json",
141
+ ...postOptions.headers,
142
+ },
143
+ });
144
+ return parsePersonalServerJsonResponse(await callFetch(request), "data write");
145
+ }
146
+ async function listData(listOptions = {}) {
147
+ const current = await info();
148
+ const request = await createOwnerRequest({
149
+ origin: requiredApiOrigin(current),
150
+ path: dataListPath(listOptions),
151
+ method: "GET",
152
+ authOptions: listOptions,
153
+ headers: listOptions.headers,
154
+ });
155
+ return parsePersonalServerJsonResponse(await callFetch(request), "data list");
156
+ }
157
+ async function listAccessLogs(accessLogOptions = {}) {
158
+ const current = await info();
159
+ const request = await createOwnerRequest({
160
+ origin: requiredApiOrigin(current),
161
+ path: accessLogsListPath(accessLogOptions),
162
+ method: "GET",
163
+ authOptions: accessLogOptions,
164
+ headers: accessLogOptions.headers,
165
+ });
166
+ return parsePersonalServerJsonResponse(await callFetch(request), "access logs list");
167
+ }
168
+ async function listVersions(scope, versionOptions = {}) {
169
+ const current = await info();
170
+ const request = await createOwnerRequest({
171
+ origin: requiredApiOrigin(current),
172
+ path: dataVersionsPath(scope, versionOptions),
173
+ method: "GET",
174
+ authOptions: versionOptions,
175
+ headers: versionOptions.headers,
176
+ });
177
+ return parsePersonalServerJsonResponse(await callFetch(request), "data versions list");
178
+ }
179
+ async function readData(scope, readOptions = {}) {
180
+ const current = await info();
181
+ const request = await createOwnerRequest({
182
+ origin: requiredApiOrigin(current),
183
+ path: dataReadPath(scope, readOptions),
184
+ method: "GET",
185
+ authOptions: readOptions,
186
+ headers: readOptions.headers,
187
+ });
188
+ return parsePersonalServerJsonResponse(await callFetch(request), "data read");
189
+ }
190
+ async function syncStatus(syncOptions = {}) {
191
+ const current = await info();
192
+ const request = await createOwnerRequest({
193
+ origin: requiredApiOrigin(current),
194
+ path: "/v1/sync/status",
195
+ method: "GET",
196
+ authOptions: syncOptions,
197
+ headers: syncOptions.headers,
198
+ });
199
+ return parsePersonalServerJsonResponse(await callFetch(request), "sync status");
200
+ }
201
+ async function createGrant(grantOptions) {
202
+ const current = await info();
203
+ const request = await createOwnerRequest({
204
+ origin: requiredApiOrigin(current),
205
+ path: "/v1/grants",
206
+ method: "POST",
207
+ body: {
208
+ granteeAddress: grantOptions.granteeAddress,
209
+ scopes: grantOptions.scopes,
210
+ ...(grantOptions.expiresAt === undefined
211
+ ? {}
212
+ : { expiresAt: grantOptions.expiresAt }),
213
+ ...(grantOptions.nonce === undefined
214
+ ? {}
215
+ : { nonce: grantOptions.nonce }),
216
+ },
217
+ authOptions: grantOptions,
218
+ headers: {
219
+ "Content-Type": "application/json",
220
+ ...grantOptions.headers,
221
+ },
222
+ });
223
+ return parsePersonalServerJsonResponse(await callFetch(request), "grant create");
224
+ }
225
+ async function listGrants(grantOptions = {}) {
226
+ const current = await info();
227
+ const request = await createOwnerRequest({
228
+ origin: requiredApiOrigin(current),
229
+ path: "/v1/grants",
230
+ method: "GET",
231
+ authOptions: grantOptions,
232
+ headers: grantOptions.headers,
233
+ });
234
+ return parsePersonalServerJsonResponse(await callFetch(request), "grant list");
235
+ }
236
+ async function revokeGrant(grantId, grantOptions = {}) {
237
+ const current = await info();
238
+ const request = await createOwnerRequest({
239
+ origin: requiredApiOrigin(current),
240
+ path: grantRevokePath(grantId),
241
+ method: "DELETE",
242
+ authOptions: grantOptions,
243
+ headers: grantOptions.headers,
244
+ });
245
+ return parsePersonalServerJsonResponse(await callFetch(request), "grant revoke");
246
+ }
247
+ async function syncNow(syncOptions = {}) {
248
+ const current = await info();
249
+ const request = await createOwnerRequest({
250
+ origin: requiredApiOrigin(current),
251
+ path: "/v1/sync/trigger",
252
+ method: "POST",
253
+ authOptions: syncOptions,
254
+ headers: syncOptions.headers,
255
+ });
256
+ return parsePersonalServerJsonResponse(await callFetch(request), "sync trigger");
257
+ }
258
+ async function rememberRegisteredRelay(serverUrl) {
259
+ if (!resolvedRelayOptions || !relayStateStore)
260
+ return;
261
+ await savePsLiteRelayState(relayStateStore, {
262
+ sessionId: resolvedRelayOptions.sessionId,
263
+ controlUrl: resolvedRelayOptions.controlUrl,
264
+ publicSuffix: resolvedRelayOptions.publicSuffix,
265
+ publicUrl: serverUrl,
266
+ });
267
+ }
268
+ async function createOwnerRequest(params) {
269
+ const encoded = params.body === undefined
270
+ ? undefined
271
+ : new TextEncoder().encode(JSON.stringify(params.body));
272
+ const auth = authFromOptions(params.authOptions);
273
+ if (auth) {
274
+ return createOwnerSignedPersonalServerRequest({
275
+ origin: params.origin,
276
+ path: params.path,
277
+ method: params.method,
278
+ body: encoded,
279
+ auth,
280
+ headers: params.headers,
281
+ });
282
+ }
283
+ return new Request(`${params.origin}${params.path}`, {
284
+ method: params.method,
285
+ body: encoded,
286
+ headers: params.headers,
287
+ });
288
+ }
289
+ async function stop() {
290
+ if (status === "stopped")
291
+ return;
292
+ relayClient?.close("personal-server-stop");
293
+ relayClient = undefined;
294
+ runtime.deactivate();
295
+ await runtimeBundle?.syncManager?.stop?.();
296
+ setStatus("stopped");
297
+ }
298
+ return {
299
+ kind: "lite",
300
+ ready: (_options) => info(),
301
+ info,
302
+ prepareRegistration,
303
+ submitRegistration,
304
+ fetch: callFetch,
305
+ postData,
306
+ listData,
307
+ listAccessLogs,
308
+ listVersions,
309
+ readData,
310
+ createGrant,
311
+ listGrants,
312
+ revokeGrant,
313
+ syncStatus,
314
+ syncNow,
315
+ stop,
316
+ };
317
+ }
318
+ function savedRelaySessionId(state, options) {
319
+ if (!state?.sessionId)
320
+ return null;
321
+ if (options.controlUrl && state.controlUrl !== options.controlUrl)
322
+ return null;
323
+ if (options.publicSuffix && state.publicSuffix !== options.publicSuffix) {
324
+ return null;
325
+ }
326
+ return state.sessionId;
327
+ }
328
+ function randomSessionId() {
329
+ const bytes = crypto.getRandomValues(new Uint8Array(12));
330
+ return Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0")).join("");
331
+ }
332
+ function authFromOptions(options) {
333
+ if ("auth" in options && options.auth)
334
+ return options.auth;
335
+ if ("signMessage" in options)
336
+ return { signMessage: options.signMessage };
337
+ if ("bearerToken" in options)
338
+ return { bearerToken: options.bearerToken };
339
+ return undefined;
340
+ }
341
+ function requiredOwnerSignature(ownerSignature) {
342
+ if (!ownerSignature) {
343
+ throw new Error("ownerSignature is required to start PS Lite");
344
+ }
345
+ return ownerSignature;
346
+ }
347
+ function configDefaultsWithOrigin(defaults, origin) {
348
+ return {
349
+ ...defaults,
350
+ server: {
351
+ ...defaults?.server,
352
+ origin,
353
+ },
354
+ };
355
+ }
356
+ function requiredGatewayUrl(info) {
357
+ if (!info.gatewayUrl) {
358
+ throw new Error("Personal Server gateway URL is required");
359
+ }
360
+ return info.gatewayUrl;
361
+ }
362
+ function requiredApiOrigin(info) {
363
+ if (!info.urls.apiOrigin) {
364
+ throw new Error("Personal Server API origin is required");
365
+ }
366
+ return info.urls.apiOrigin;
367
+ }
368
+ function toRuntimeRequest(input, origin, init) {
369
+ const url = `${origin}${requestPath(input)}`;
370
+ if (input instanceof Request) {
371
+ const base = new Request(url, input);
372
+ return init ? new Request(base, init) : base;
373
+ }
374
+ return new Request(url, init);
375
+ }
376
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export { createIndexedDbPsLiteRuntime, type IndexedDbPsLiteRuntime, type IndexedDbPsLiteRuntimeOptions, } from "./browser-runtime.js";
2
+ export { startPersonalServer, type StartPersonalServerLiteOptions, type StartPersonalServerLiteRelayOptions, } 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 { handlePsLiteBridgeRequest, type PsLiteBridgeRequest, type PsLiteBridgeResponse, } from "./bridge.js";
6
+ export { createIndexedDbPsLitePersistence, createOpfsPsLiteDataFileStore, createPersistentPsLiteStorage, isOpfsAvailable, type IndexedDbPsLitePersistenceOptions, type PsLiteDataFileStore, type PsLiteFileStorageKind, type PsLitePersistedStorageState, type PsLitePersistenceAdapter, } from "./storage.js";
7
+ export { createIndexedDbPsLiteAccessLogStore, createIndexedDbPsLiteStateStore, createIndexedDbPsLiteTokenStore, loadOrCreatePsLiteConfig, loadOrCreatePsLiteServerIdentity, loadPsLiteRelayState, savePsLiteConfig, savePsLiteRelayState, type IndexedDbPsLiteAccessLogStoreOptions, type IndexedDbPsLiteStateStoreOptions, type IndexedDbPsLiteTokenStoreOptions, type PsLiteEncryptedPrivateKey, type PsLiteEncryptedServerIdentity, type PsLiteRelayState, type PsLiteStateKey, type PsLiteStateStore, type PsLiteUnlockedServerIdentity, } from "./state.js";
8
+ export { createPsLiteSyncCursor, createPsLiteSyncManager, type PsLiteSyncOptions, } from "./sync.js";
9
+ export { resolvePsLiteOwner, type PsLiteOwnerBindingInput, } from "./owner-binding.js";
10
+ export { createBearerTokenPsLiteAuth, createPsLiteRuntime, createWeb3SignedPsLiteAuth, type BearerTokenPsLiteAuthOptions, type PsLiteAuthAdapter, type PsLiteReadAuthInput, type PsLiteRuntime, type PsLiteRuntimeOptions, type PsLiteStorageAdapter, type PsLiteTokenStore, type Web3SignedPsLiteAuthOptions, } from "./runtime.js";
11
+ export { createIndexedDbMcpConnectionStore, type IndexedDbMcpConnectionStoreOptions, } from "./mcp-store.js";
12
+ export { decodeDataFrame, encodeDataFrame, psLiteRelayControlUrl, psLiteRelayPublicUrl, startPsLiteRelayClient, type PsLiteRelayClient, type PsLiteRelayClientOptions, type PsLiteRelayStatus, type PsLiteRelayTlsFactory, type PsLiteRelayTlsPrepareInput, type PsLiteRelayTlsStep, type PsLiteRelayTlsStream, type PsLiteRelayTlsStreamInput, type PsLiteRelayWebSocket, type PsLiteRelayWebSocketFactory, } from "./relay.js";
13
+ export { createRustlsPsLiteRelayTlsFactory, psLiteRelayPublicHost, psLiteRelayPublicUrl as psLiteRelayTlsPublicUrl, type PsLiteRelayTlsIdentity, type RustlsPsLiteRelayTlsOptions, } from "./relay-tls.js";
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,EAC5B,KAAK,sBAAsB,EAC3B,KAAK,6BAA6B,GACnC,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,EACnB,KAAK,8BAA8B,EACnC,KAAK,mCAAmC,GACzC,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;AAEtD,OAAO,EACL,yBAAyB,EACzB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,EACf,KAAK,iCAAiC,EACtC,KAAK,mBAAmB,EACxB,KAAK,qBAAqB,EAC1B,KAAK,2BAA2B,EAChC,KAAK,wBAAwB,GAC9B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,oCAAoC,EACzC,KAAK,gCAAgC,EACrC,KAAK,gCAAgC,EACrC,KAAK,yBAAyB,EAC9B,KAAK,6BAA6B,EAClC,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,GAClC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,iBAAiB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,EAClB,KAAK,uBAAuB,GAC7B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,EAC1B,KAAK,4BAA4B,EACjC,KAAK,iBAAiB,EACtB,KAAK,mBAAmB,EACxB,KAAK,aAAa,EAClB,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,2BAA2B,GACjC,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iCAAiC,EACjC,KAAK,kCAAkC,GACxC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,KAAK,iBAAiB,EACtB,KAAK,wBAAwB,EAC7B,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,oBAAoB,EACzB,KAAK,2BAA2B,GACjC,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,EAC/C,KAAK,sBAAsB,EAC3B,KAAK,2BAA2B,GACjC,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,13 @@
1
+ export { createIndexedDbPsLiteRuntime, } from "./browser-runtime.js";
2
+ export { startPersonalServer, } from "./client.js";
3
+ export { PersonalServerClientError, dataListPath, dataReadPath, dataVersionsPath, parsePersonalServerJsonResponse, } from "@opendatalabs/personal-server-ts-core/client";
4
+ export { handlePsLiteBridgeRequest, } from "./bridge.js";
5
+ export { createIndexedDbPsLitePersistence, createOpfsPsLiteDataFileStore, createPersistentPsLiteStorage, isOpfsAvailable, } from "./storage.js";
6
+ export { createIndexedDbPsLiteAccessLogStore, createIndexedDbPsLiteStateStore, createIndexedDbPsLiteTokenStore, loadOrCreatePsLiteConfig, loadOrCreatePsLiteServerIdentity, loadPsLiteRelayState, savePsLiteConfig, savePsLiteRelayState, } from "./state.js";
7
+ export { createPsLiteSyncCursor, createPsLiteSyncManager, } from "./sync.js";
8
+ export { resolvePsLiteOwner, } from "./owner-binding.js";
9
+ export { createBearerTokenPsLiteAuth, createPsLiteRuntime, createWeb3SignedPsLiteAuth, } from "./runtime.js";
10
+ export { createIndexedDbMcpConnectionStore, } from "./mcp-store.js";
11
+ export { decodeDataFrame, encodeDataFrame, psLiteRelayControlUrl, psLiteRelayPublicUrl, startPsLiteRelayClient, } from "./relay.js";
12
+ export { createRustlsPsLiteRelayTlsFactory, psLiteRelayPublicHost, psLiteRelayPublicUrl as psLiteRelayTlsPublicUrl, } from "./relay-tls.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,4BAA4B,GAG7B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,mBAAmB,GAGpB,MAAM,aAAa,CAAC;AAmBrB,OAAO,EACL,yBAAyB,EACzB,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AAEtD,OAAO,EACL,yBAAyB,GAG1B,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,6BAA6B,EAC7B,eAAe,GAMhB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,mCAAmC,EACnC,+BAA+B,EAC/B,+BAA+B,EAC/B,wBAAwB,EACxB,gCAAgC,EAChC,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,GAUrB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,sBAAsB,EACtB,uBAAuB,GAExB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,2BAA2B,EAC3B,mBAAmB,EACnB,0BAA0B,GAS3B,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,iCAAiC,GAElC,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,eAAe,EACf,eAAe,EACf,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,GAWvB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,iCAAiC,EACjC,qBAAqB,EACrB,oBAAoB,IAAI,uBAAuB,GAGhD,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * IndexedDB-backed `McpConnectionStore` for Web PS Lite.
3
+ *
4
+ * Phase 1 trade-off: persists the per-connection grantee private key in
5
+ * PLAINTEXT in IndexedDB. The owner-derived AES-GCM wrap used for the PS Lite
6
+ * server identity is not yet applied to grantee keys — that's the Phase 2
7
+ * "encrypt grantee private keys at rest" task in
8
+ * `260604-PLAN-vana-mcp-personal-server.md`. The risk is bounded by:
9
+ *
10
+ * 1. The browser same-origin policy — only code running on the PS Lite tab's
11
+ * origin (e.g. app-dev.vana.org) can read this store.
12
+ * 2. Grantee keys are scoped per-connection and revocable. A leaked key only
13
+ * lets the holder read the grants that connection already approved; any
14
+ * revoke removes both the grant and the connection's lookup record.
15
+ * 3. There are no write tools — leaked grantee keys cannot mutate user data.
16
+ *
17
+ * Persistent storage is strongly preferred over in-memory because:
18
+ * - app-dev page reloads are routine in a browser app;
19
+ * - Claude's MCP URL is meant to live in the Claude config across sessions;
20
+ * - the alternative (re-create on every boot) would silently invalidate every
21
+ * prior Claude connection on every reload, indistinguishable from a real
22
+ * revoke from the user's perspective.
23
+ */
24
+ import type { McpConnectionStore } from "@opendatalabs/personal-server-ts-core/mcp";
25
+ export interface IndexedDbMcpConnectionStoreOptions {
26
+ dbName?: string;
27
+ storeName?: string;
28
+ }
29
+ export declare function createIndexedDbMcpConnectionStore(options?: IndexedDbMcpConnectionStoreOptions): McpConnectionStore;
30
+ //# sourceMappingURL=mcp-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-store.d.ts","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAEV,kBAAkB,EACnB,MAAM,2CAA2C,CAAC;AAOnD,MAAM,WAAW,kCAAkC;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0ED,wBAAgB,iCAAiC,CAC/C,OAAO,GAAE,kCAAuC,GAC/C,kBAAkB,CAgEpB"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * IndexedDB-backed `McpConnectionStore` for Web PS Lite.
3
+ *
4
+ * Phase 1 trade-off: persists the per-connection grantee private key in
5
+ * PLAINTEXT in IndexedDB. The owner-derived AES-GCM wrap used for the PS Lite
6
+ * server identity is not yet applied to grantee keys — that's the Phase 2
7
+ * "encrypt grantee private keys at rest" task in
8
+ * `260604-PLAN-vana-mcp-personal-server.md`. The risk is bounded by:
9
+ *
10
+ * 1. The browser same-origin policy — only code running on the PS Lite tab's
11
+ * origin (e.g. app-dev.vana.org) can read this store.
12
+ * 2. Grantee keys are scoped per-connection and revocable. A leaked key only
13
+ * lets the holder read the grants that connection already approved; any
14
+ * revoke removes both the grant and the connection's lookup record.
15
+ * 3. There are no write tools — leaked grantee keys cannot mutate user data.
16
+ *
17
+ * Persistent storage is strongly preferred over in-memory because:
18
+ * - app-dev page reloads are routine in a browser app;
19
+ * - Claude's MCP URL is meant to live in the Claude config across sessions;
20
+ * - the alternative (re-create on every boot) would silently invalidate every
21
+ * prior Claude connection on every reload, indistinguishable from a real
22
+ * revoke from the user's perspective.
23
+ */
24
+ const DEFAULT_DB_NAME = "personal-server-lite";
25
+ const DEFAULT_STORE_NAME = "mcpConnections";
26
+ const TOKEN_HASH_INDEX = "tokenHash";
27
+ const DB_VERSION = 1;
28
+ function openDb(opts) {
29
+ if (typeof indexedDB === "undefined") {
30
+ throw new Error("IndexedDB is not available in this runtime");
31
+ }
32
+ return new Promise((resolve, reject) => {
33
+ const request = indexedDB.open(opts.dbName, DB_VERSION);
34
+ request.onupgradeneeded = () => {
35
+ const db = request.result;
36
+ if (!db.objectStoreNames.contains(opts.storeName)) {
37
+ const store = db.createObjectStore(opts.storeName, { keyPath: "id" });
38
+ store.createIndex(TOKEN_HASH_INDEX, "tokenHash", { unique: true });
39
+ }
40
+ else {
41
+ const store = request.transaction?.objectStore(opts.storeName);
42
+ if (store && !store.indexNames.contains(TOKEN_HASH_INDEX)) {
43
+ store.createIndex(TOKEN_HASH_INDEX, "tokenHash", { unique: true });
44
+ }
45
+ }
46
+ };
47
+ request.onsuccess = () => resolve(request.result);
48
+ request.onerror = () => reject(request.error);
49
+ });
50
+ }
51
+ function runTx(opts, mode, fn) {
52
+ return openDb(opts).then((db) => new Promise((resolve, reject) => {
53
+ const transaction = db.transaction(opts.storeName, mode);
54
+ const store = transaction.objectStore(opts.storeName);
55
+ const request = fn(store);
56
+ request.onsuccess = () => resolve(request.result);
57
+ request.onerror = () => reject(request.error);
58
+ transaction.oncomplete = () => db.close();
59
+ transaction.onerror = () => {
60
+ db.close();
61
+ reject(transaction.error);
62
+ };
63
+ }));
64
+ }
65
+ function runIndexQuery(opts, indexName, fn) {
66
+ return openDb(opts).then((db) => new Promise((resolve, reject) => {
67
+ const transaction = db.transaction(opts.storeName, "readonly");
68
+ const store = transaction.objectStore(opts.storeName);
69
+ const request = fn(store.index(indexName));
70
+ request.onsuccess = () => resolve(request.result);
71
+ request.onerror = () => reject(request.error);
72
+ transaction.oncomplete = () => db.close();
73
+ transaction.onerror = () => {
74
+ db.close();
75
+ reject(transaction.error);
76
+ };
77
+ }));
78
+ }
79
+ export function createIndexedDbMcpConnectionStore(options = {}) {
80
+ const resolved = {
81
+ dbName: options.dbName ?? DEFAULT_DB_NAME,
82
+ storeName: options.storeName ?? DEFAULT_STORE_NAME,
83
+ };
84
+ return {
85
+ async create(record) {
86
+ const existing = await runTx(resolved, "readonly", (store) => store.get(record.id));
87
+ if (existing) {
88
+ throw new Error(`mcp connection ${record.id} already exists`);
89
+ }
90
+ await runTx(resolved, "readwrite", (store) => store.put({ ...record }));
91
+ },
92
+ async list() {
93
+ const all = await runTx(resolved, "readonly", (store) => store.getAll());
94
+ return all.map((r) => ({ ...r }));
95
+ },
96
+ async getById(id) {
97
+ const record = await runTx(resolved, "readonly", (store) => store.get(id));
98
+ return record ? { ...record } : null;
99
+ },
100
+ async getByTokenHash(tokenHash) {
101
+ const record = await runIndexQuery(resolved, TOKEN_HASH_INDEX, (index) => index.get(tokenHash));
102
+ if (!record)
103
+ return null;
104
+ if (record.status !== "approved")
105
+ return null;
106
+ return { ...record };
107
+ },
108
+ async update(id, patch) {
109
+ const existing = await runTx(resolved, "readonly", (store) => store.get(id));
110
+ if (!existing)
111
+ return null;
112
+ const updated = { ...existing, ...patch };
113
+ await runTx(resolved, "readwrite", (store) => store.put(updated));
114
+ return { ...updated };
115
+ },
116
+ };
117
+ }
118
+ //# sourceMappingURL=mcp-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-store.js","sourceRoot":"","sources":["../src/mcp-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type Address } from "viem";
2
+ export interface PsLiteOwnerBindingInput {
3
+ ownerAddress?: Address;
4
+ ownerSignature: `0x${string}`;
5
+ }
6
+ export declare function resolvePsLiteOwner(input: PsLiteOwnerBindingInput): Promise<Address>;
7
+ //# sourceMappingURL=owner-binding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owner-binding.d.ts","sourceRoot":"","sources":["../src/owner-binding.ts"],"names":[],"mappings":"AAEA,OAAO,EAAqC,KAAK,OAAO,EAAE,MAAM,MAAM,CAAC;AAEvE,MAAM,WAAW,uBAAuB;IACtC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;CAC/B;AAED,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAclB"}