@opendatalabs/personal-server-ts-lite 0.0.1-canary.00328bf

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 (68) 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 +58 -0
  6. package/dist/browser-runtime.d.ts.map +1 -0
  7. package/dist/browser-runtime.js +214 -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 +408 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/derivatives.d.ts +51 -0
  17. package/dist/derivatives.d.ts.map +1 -0
  18. package/dist/derivatives.js +87 -0
  19. package/dist/derivatives.js.map +1 -0
  20. package/dist/diagnostics.d.ts +166 -0
  21. package/dist/diagnostics.d.ts.map +1 -0
  22. package/dist/diagnostics.js +265 -0
  23. package/dist/diagnostics.js.map +1 -0
  24. package/dist/index.d.ts +18 -0
  25. package/dist/index.d.ts.map +1 -0
  26. package/dist/index.js +19 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/mcp-store.d.ts +35 -0
  29. package/dist/mcp-store.d.ts.map +1 -0
  30. package/dist/mcp-store.js +208 -0
  31. package/dist/mcp-store.js.map +1 -0
  32. package/dist/owner-binding.d.ts +7 -0
  33. package/dist/owner-binding.d.ts.map +1 -0
  34. package/dist/owner-binding.js +18 -0
  35. package/dist/owner-binding.js.map +1 -0
  36. package/dist/persistence.d.ts +69 -0
  37. package/dist/persistence.d.ts.map +1 -0
  38. package/dist/persistence.js +58 -0
  39. package/dist/persistence.js.map +1 -0
  40. package/dist/relay-tls.d.ts +61 -0
  41. package/dist/relay-tls.d.ts.map +1 -0
  42. package/dist/relay-tls.js +316 -0
  43. package/dist/relay-tls.js.map +1 -0
  44. package/dist/relay.d.ts +149 -0
  45. package/dist/relay.d.ts.map +1 -0
  46. package/dist/relay.js +646 -0
  47. package/dist/relay.js.map +1 -0
  48. package/dist/runtime.d.ts +188 -0
  49. package/dist/runtime.d.ts.map +1 -0
  50. package/dist/runtime.js +1178 -0
  51. package/dist/runtime.js.map +1 -0
  52. package/dist/state.d.ts +72 -0
  53. package/dist/state.d.ts.map +1 -0
  54. package/dist/state.js +366 -0
  55. package/dist/state.js.map +1 -0
  56. package/dist/storage-utils.d.ts +8 -0
  57. package/dist/storage-utils.d.ts.map +1 -0
  58. package/dist/storage-utils.js +67 -0
  59. package/dist/storage-utils.js.map +1 -0
  60. package/dist/storage.d.ts +61 -0
  61. package/dist/storage.d.ts.map +1 -0
  62. package/dist/storage.js +718 -0
  63. package/dist/storage.js.map +1 -0
  64. package/dist/sync.d.ts +58 -0
  65. package/dist/sync.d.ts.map +1 -0
  66. package/dist/sync.js +216 -0
  67. package/dist/sync.js.map +1 -0
  68. package/package.json +40 -0
@@ -0,0 +1,23 @@
1
+ import type { PsLiteRuntime } from "./runtime.js";
2
+ export interface PsLiteBridgeRequest {
3
+ requestId: string;
4
+ method: string;
5
+ path: string;
6
+ query: string;
7
+ headers: Record<string, string>;
8
+ /** Base64-encoded request body, matching the browser-local relay PoC. */
9
+ body: string;
10
+ }
11
+ export interface PsLiteBridgeResponse {
12
+ requestId: string;
13
+ status: number;
14
+ headers: Record<string, string>;
15
+ /** Base64-encoded response body for relay transport. */
16
+ body: string;
17
+ /** Decoded response body for same-context consumers and tests. */
18
+ textBody: string;
19
+ }
20
+ export declare function handlePsLiteBridgeRequest(runtime: PsLiteRuntime, bridgeRequest: PsLiteBridgeRequest, options?: {
21
+ origin?: string;
22
+ }): Promise<PsLiteBridgeResponse>;
23
+ //# sourceMappingURL=bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.d.ts","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,yEAAyE;IACzE,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wDAAwD;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkDD,wBAAsB,yBAAyB,CAC7C,OAAO,EAAE,aAAa,EACtB,aAAa,EAAE,mBAAmB,EAClC,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,OAAO,CAAC,oBAAoB,CAAC,CAe/B"}
package/dist/bridge.js ADDED
@@ -0,0 +1,53 @@
1
+ function decodeBase64(input) {
2
+ if (!input)
3
+ return new Uint8Array();
4
+ const binary = typeof globalThis.atob === "function"
5
+ ? globalThis.atob(input)
6
+ : Buffer.from(input, "base64").toString("binary");
7
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
8
+ }
9
+ function encodeBase64(bytes) {
10
+ let binary = "";
11
+ for (const byte of bytes) {
12
+ binary += String.fromCharCode(byte);
13
+ }
14
+ return typeof globalThis.btoa === "function"
15
+ ? globalThis.btoa(binary)
16
+ : Buffer.from(binary, "binary").toString("base64");
17
+ }
18
+ function headersToRecord(headers) {
19
+ const result = {};
20
+ headers.forEach((value, key) => {
21
+ result[key] = value;
22
+ });
23
+ return result;
24
+ }
25
+ function buildRequest(origin, bridgeRequest) {
26
+ const query = bridgeRequest.query
27
+ ? `?${bridgeRequest.query.replace(/^\?/, "")}`
28
+ : "";
29
+ const url = `${origin.replace(/\/+$/, "")}${bridgeRequest.path}${query}`;
30
+ const method = bridgeRequest.method.toUpperCase();
31
+ const hasBody = method !== "GET" && method !== "HEAD";
32
+ const body = hasBody
33
+ ? decodeBase64(bridgeRequest.body).slice().buffer
34
+ : undefined;
35
+ return new Request(url, {
36
+ method,
37
+ headers: bridgeRequest.headers,
38
+ body,
39
+ });
40
+ }
41
+ export async function handlePsLiteBridgeRequest(runtime, bridgeRequest, options = {}) {
42
+ const request = buildRequest(options.origin ?? "https://ps-lite.local", bridgeRequest);
43
+ const response = await runtime.fetch(request);
44
+ const bytes = new Uint8Array(await response.arrayBuffer());
45
+ return {
46
+ requestId: bridgeRequest.requestId,
47
+ status: response.status,
48
+ headers: headersToRecord(response.headers),
49
+ body: encodeBase64(bytes),
50
+ textBody: new TextDecoder().decode(bytes),
51
+ };
52
+ }
53
+ //# sourceMappingURL=bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bridge.js","sourceRoot":"","sources":["../src/bridge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
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 { InferenceProvider } from "@opendatalabs/personal-server-ts-core/derivatives";
4
+ import type { AccessLogReader } from "@opendatalabs/personal-server-ts-core/logging/access-reader";
5
+ import type { AccessLogWriter } from "@opendatalabs/personal-server-ts-core/logging/access-log";
6
+ import type { DataPointFeedPort, DataStoragePort } from "@opendatalabs/personal-server-ts-core/ports";
7
+ import { type PsLiteDataFileStore } from "./storage.js";
8
+ import { type PsLiteStateStore, type PsLiteUnlockedServerIdentity } from "./state.js";
9
+ import { type PsLiteRuntime, type PsLiteRuntimeOptions } from "./runtime.js";
10
+ import { type PsLiteOwnerSyncSigner } from "./sync.js";
11
+ import { type PsLitePersistenceBundle } from "./persistence.js";
12
+ export interface IndexedDbPsLiteRuntimeOptions extends Omit<PsLiteRuntimeOptions, "accessLogReader" | "accessLogWriter" | "config" | "identity" | "saveConfig" | "stateCapabilities" | "storage" | "tokenStore"> {
13
+ ownerAddress?: `0x${string}`;
14
+ /**
15
+ * Inference provider for the derivative compute layer. Defaults to the
16
+ * OpenAI-compatible fetch client on `config.inference`; tests inject a
17
+ * fake. Pass `derivatives` (the runtime option) to bypass this wiring.
18
+ */
19
+ inferenceProvider?: InferenceProvider;
20
+ ownerSignature: `0x${string}`;
21
+ ownerSyncSigner?: PsLiteOwnerSyncSigner;
22
+ dbName?: string;
23
+ stateStoreName?: string;
24
+ storageDbName?: string;
25
+ storageStoreName?: string;
26
+ storageKey?: string;
27
+ runtimeOrigin?: string;
28
+ configDefaults?: Partial<ServerConfig>;
29
+ dataFileStore?: PsLiteDataFileStore;
30
+ logger?: Logger;
31
+ /**
32
+ * Deletion-aware gateway feed for the sync workers. Defaults to a REST
33
+ * feed on the configured gateway URL; inject with a mock `gateway` in tests.
34
+ */
35
+ dataPointFeed?: DataPointFeedPort;
36
+ /**
37
+ * Inject host-owned persistence ports (Mobile native SQLite/filesystem) in
38
+ * place of the browser IndexedDB defaults, without giving up this factory's
39
+ * identity/config/sync/auth/signer composition. This is all-or-nothing:
40
+ * either omit it for the default Web IndexedDB/OPFS path, or provide every
41
+ * port for a host-owned persistence implementation.
42
+ */
43
+ persistence?: PsLitePersistenceBundle;
44
+ }
45
+ export interface IndexedDbPsLiteRuntime {
46
+ runtime: PsLiteRuntime;
47
+ config: ServerConfig;
48
+ identity: PsLiteUnlockedServerIdentity;
49
+ stateStore: PsLiteStateStore;
50
+ storage: DataStoragePort;
51
+ tokenStore: PsLiteRuntimeOptions["tokenStore"];
52
+ accessLogStore: AccessLogReader & AccessLogWriter;
53
+ syncManager: PsLiteRuntimeOptions["syncManager"];
54
+ /** The compute layer; hosts call `scheduler.stop()` on teardown. */
55
+ derivatives: PsLiteRuntimeOptions["derivatives"];
56
+ }
57
+ export declare function createIndexedDbPsLiteRuntime(options: IndexedDbPsLiteRuntimeOptions): Promise<IndexedDbPsLiteRuntime>;
58
+ //# sourceMappingURL=browser-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runtime.d.ts","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,8CAA8C,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mDAAmD,CAAC;AAM3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6DAA6D,CAAC;AACnG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0DAA0D,CAAC;AAChG,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,cAAc,CAAC;AACtB,OAAO,EAOL,KAAK,gBAAgB,EACrB,KAAK,4BAA4B,EAClC,MAAM,YAAY,CAAC;AACpB,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,oBAAoB,EAC1B,MAAM,cAAc,CAAC;AACtB,OAAO,EAA2B,KAAK,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAQhF,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,WAAW,6BAA8B,SAAQ,IAAI,CACzD,oBAAoB,EAClB,iBAAiB,GACjB,iBAAiB,GACjB,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,mBAAmB,GACnB,SAAS,GACT,YAAY,CACf;IACC,YAAY,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,cAAc,EAAE,KAAK,MAAM,EAAE,CAAC;IAC9B,eAAe,CAAC,EAAE,qBAAqB,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACvC,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAClC;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,uBAAuB,CAAC;CACvC;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,4BAA4B,CAAC;IACvC,UAAU,EAAE,gBAAgB,CAAC;IAC7B,OAAO,EAAE,eAAe,CAAC;IACzB,UAAU,EAAE,oBAAoB,CAAC,YAAY,CAAC,CAAC;IAC/C,cAAc,EAAE,eAAe,GAAG,eAAe,CAAC;IAClD,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IACjD,oEAAoE;IACpE,WAAW,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;CAClD;AAED,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,6BAA6B,GACrC,OAAO,CAAC,sBAAsB,CAAC,CA8NjC"}
@@ -0,0 +1,214 @@
1
+ import { createRequestSigner, createServerSigner, } from "@opendatalabs/personal-server-ts-core/signing";
2
+ import { createGatewayLineageClient } from "@opendatalabs/personal-server-ts-core/lineage";
3
+ import { createGatewayClient } from "@opendatalabs/vana-sdk/browser";
4
+ import { createInMemoryWriteProofReplayStore, createInMemoryWriteSessionStore, } from "@opendatalabs/personal-server-ts-core/write";
5
+ import { createIndexedDbPsLitePersistence, createPersistentPsLiteStorage, } from "./storage.js";
6
+ import { createIndexedDbPsLiteAccessLogStore, createIndexedDbPsLiteStateStore, createIndexedDbPsLiteTokenStore, loadOrCreatePsLiteConfig, loadOrCreatePsLiteServerIdentity, savePsLiteConfig, } from "./state.js";
7
+ import { createWeb3SignedPsLiteAuth, createPsLiteRuntime, } from "./runtime.js";
8
+ import { createPsLiteSyncManager } from "./sync.js";
9
+ import { createPsLiteDerivativeCompute, createPsLiteQuestionStore, psLiteInferenceConfigured, } from "./derivatives.js";
10
+ import { resolvePsLiteOwner } from "./owner-binding.js";
11
+ import { DiagnosticsRecorder } from "./diagnostics.js";
12
+ import { assertCompletePsLitePersistenceBundle, } from "./persistence.js";
13
+ export async function createIndexedDbPsLiteRuntime(options) {
14
+ const dbName = options.dbName ?? "personal-server-lite";
15
+ const injected = options.persistence;
16
+ if (injected !== undefined)
17
+ assertCompletePsLitePersistenceBundle(injected);
18
+ // No bundle preserves the Web IndexedDB/OPFS path. A supplied bundle has
19
+ // already been validated as complete, so hosts never silently mix native and
20
+ // browser persistence. Config, identity, and sync remain generic over state.
21
+ const stateStore = injected?.state ??
22
+ createIndexedDbPsLiteStateStore({
23
+ dbName,
24
+ storeName: options.stateStoreName ?? "state",
25
+ });
26
+ const config = await loadOrCreatePsLiteConfig(stateStore, options.configDefaults);
27
+ const identity = await loadOrCreatePsLiteServerIdentity({
28
+ store: stateStore,
29
+ ownerSignature: options.ownerSignature,
30
+ });
31
+ const tokenStore = injected?.tokens ??
32
+ createIndexedDbPsLiteTokenStore({
33
+ dbName,
34
+ storeName: "tokens",
35
+ });
36
+ const accessLogStore = injected?.accessLog ??
37
+ createIndexedDbPsLiteAccessLogStore({
38
+ dbName,
39
+ storeName: "accessLogs",
40
+ });
41
+ const storage = injected?.storage ??
42
+ (await createPersistentPsLiteStorage({ kind: "indexeddb" }, createIndexedDbPsLitePersistence({
43
+ dbName: options.storageDbName ?? `${dbName}-storage`,
44
+ storeName: options.storageStoreName ?? "state",
45
+ key: options.storageKey ?? "data-storage-v1",
46
+ }), options.dataFileStore));
47
+ const gateway = options.gateway ?? createGatewayClient(config.gateway.url);
48
+ const serverOwner = await resolvePsLiteOwner({
49
+ ownerAddress: options.ownerAddress,
50
+ ownerSignature: options.ownerSignature,
51
+ });
52
+ const serverSigner = options.serverSigner ??
53
+ createServerSigner(identity.account, {
54
+ chainId: config.gateway.chainId,
55
+ contracts: config.gateway.contracts,
56
+ });
57
+ // Create (or reuse) a shared diagnostics recorder before the sync manager so
58
+ // both share the same recorder instance and events appear in /v1/diagnostics.
59
+ const diagnostics = options.diagnostics ?? new DiagnosticsRecorder();
60
+ // The one browser request signer: the identity key that registered this
61
+ // server with the gateway signs the lineage reads and the inference relay
62
+ // calls with the same Web3Signed scheme.
63
+ const requestSigner = createRequestSigner(identity.account);
64
+ // Derivative data: lineage reads are signed with the server key and
65
+ // derivatives are registered with their lineage (see core/lineage).
66
+ const lineageGateway = createGatewayLineageClient({
67
+ gatewayUrl: config.gateway.url,
68
+ requestSigner,
69
+ });
70
+ let syncManager = options.syncManager ?? null;
71
+ let scopeDeletions = options.scopeDeletions;
72
+ let runtimeRef = null;
73
+ // Derivative compute: built before sync so downloads can mark questions
74
+ // stale; it reaches the sync manager lazily to upload its results.
75
+ // Without a relay URL (or an injected provider) the layer stays off and
76
+ // /v1/derivatives answers 503: the browser never calls a provider
77
+ // directly with no key.
78
+ let derivatives = options.derivatives ?? null;
79
+ if (derivatives === null &&
80
+ options.derivatives === undefined &&
81
+ (options.inferenceProvider || psLiteInferenceConfigured(config))) {
82
+ derivatives = createPsLiteDerivativeCompute({
83
+ config,
84
+ storage,
85
+ store: await createPsLiteQuestionStore(stateStore),
86
+ serverOwner,
87
+ syncManager: () => syncManager,
88
+ scopeDeletions: () => scopeDeletions,
89
+ writePolicyPorts: {
90
+ authSessionVerifier: gateway,
91
+ grantVerifier: gateway,
92
+ },
93
+ runtimeAvailability: {
94
+ isAvailable: () => runtimeRef?.isAvailable() ?? Boolean(options.active),
95
+ },
96
+ provider: options.inferenceProvider,
97
+ // The relay forwards only requests signed as the owner's server.
98
+ requestSigner,
99
+ logger: options.logger,
100
+ });
101
+ }
102
+ else if (derivatives === null && options.derivatives === undefined) {
103
+ options.logger?.warn({ baseUrl: config.inference.baseUrl }, "Derivative compute disabled: inference.baseUrl is the direct-provider default; point it at the Vana inference relay");
104
+ }
105
+ if (!syncManager && config.sync.enabled) {
106
+ const sync = await createPsLiteSyncManager({
107
+ config,
108
+ stateStore,
109
+ storage,
110
+ ownerSignature: options.ownerSignature,
111
+ ownerAddress: options.ownerAddress,
112
+ ownerSyncSigner: options.ownerSyncSigner,
113
+ serverAccount: identity.account,
114
+ gateway,
115
+ dataPointFeed: options.dataPointFeed,
116
+ scopeDeletions,
117
+ diagnostics,
118
+ logger: options.logger,
119
+ lineageGateway,
120
+ onDataPointIndexed: (event) => derivatives?.scheduler.markSourceChanged(event.scope, {
121
+ lineageSources: event.lineageSources,
122
+ }),
123
+ });
124
+ syncManager = sync.syncManager;
125
+ scopeDeletions = sync.scopeDeletions;
126
+ }
127
+ const runtimeAvailability = {
128
+ isAvailable: () => runtimeRef?.isAvailable() ?? Boolean(options.active),
129
+ };
130
+ // Delegated builder writes. One session store is wired into the handshake
131
+ // route AND the auth adapter (the route mints what the adapter redeems),
132
+ // and one replay guard covers the handshake proof and every per-write
133
+ // proof — the same single-store discipline as createApp in the Node build.
134
+ // A caller that brings its OWN auth adapter owns this wiring, so we do not
135
+ // mount a handshake for a store that adapter has never heard of.
136
+ const writeProofReplayStore = options.writeProofReplayStore ?? createInMemoryWriteProofReplayStore();
137
+ const writeSessionStore = options.writeSessionStore ??
138
+ (options.auth ? undefined : createInMemoryWriteSessionStore());
139
+ // One audience for the whole delegated-write flow: the handshake proof and
140
+ // every per-write proof are verified against the same origin.
141
+ const serverOrigin = options.serverOrigin ??
142
+ (() => options.runtimeOrigin ?? config.server.origin);
143
+ const auth = options.auth ??
144
+ createWeb3SignedPsLiteAuth({
145
+ origin: serverOrigin,
146
+ ownerAddress: serverOwner,
147
+ accessToken: options.accessToken,
148
+ tokenStore,
149
+ dataReadPolicyPorts: {
150
+ authSessionVerifier: gateway,
151
+ grantVerifier: gateway,
152
+ runtimeAvailability,
153
+ },
154
+ ...(writeSessionStore
155
+ ? {
156
+ writeSessions: {
157
+ store: writeSessionStore,
158
+ replayStore: writeProofReplayStore,
159
+ policyPorts: {
160
+ authSessionVerifier: gateway,
161
+ grantVerifier: gateway,
162
+ runtimeAvailability,
163
+ },
164
+ },
165
+ }
166
+ : {}),
167
+ });
168
+ const runtime = createPsLiteRuntime({
169
+ ...options,
170
+ auth,
171
+ serverOrigin,
172
+ writeSessionStore,
173
+ writeProofReplayStore,
174
+ storage,
175
+ config,
176
+ identity: {
177
+ address: identity.account.address,
178
+ publicKey: identity.account.publicKey,
179
+ },
180
+ gateway,
181
+ serverOwner,
182
+ serverSigner,
183
+ syncManager,
184
+ scopeDeletions,
185
+ diagnostics,
186
+ lineageGateway,
187
+ derivatives,
188
+ saveConfig: async (nextConfig) => {
189
+ const saved = await savePsLiteConfig(stateStore, nextConfig);
190
+ Object.assign(config, saved);
191
+ },
192
+ stateCapabilities: { config: injected?.state ? "custom" : "indexeddb" },
193
+ tokenStore,
194
+ accessLogReader: accessLogStore,
195
+ accessLogWriter: accessLogStore,
196
+ // A complete host bundle owns both MCP records too. Direct options remain
197
+ // available only on the default Web path for backwards compatibility.
198
+ mcpConnectionStore: injected?.mcpConnections ?? options.mcpConnectionStore,
199
+ mcpOAuthAuthorizationStore: injected?.mcpOAuthAuthorizations ?? options.mcpOAuthAuthorizationStore,
200
+ });
201
+ runtimeRef = runtime;
202
+ return {
203
+ runtime,
204
+ config,
205
+ identity,
206
+ stateStore,
207
+ storage,
208
+ tokenStore,
209
+ accessLogStore,
210
+ syncManager,
211
+ derivatives,
212
+ };
213
+ }
214
+ //# sourceMappingURL=browser-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-runtime.js","sourceRoot":"","sources":["../src/browser-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ /* tslint:disable */
2
+ /* eslint-disable */
3
+
4
+ export class TlsServer {
5
+ free(): void;
6
+ [Symbol.dispose](): void;
7
+ constructor(cert_pem: string, key_pem: string);
8
+ process_tls(input: Uint8Array): any;
9
+ write_plaintext(plaintext: Uint8Array, close: boolean): any;
10
+ }
11
+
12
+ export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
13
+
14
+ export interface InitOutput {
15
+ readonly memory: WebAssembly.Memory;
16
+ readonly __wbg_tlsserver_free: (a: number, b: number) => void;
17
+ readonly tlsserver_new: (a: number, b: number, c: number, d: number) => [number, number, number];
18
+ readonly tlsserver_process_tls: (a: number, b: number, c: number) => [number, number, number];
19
+ readonly tlsserver_write_plaintext: (a: number, b: number, c: number, d: number) => [number, number, number];
20
+ readonly __wbindgen_exn_store: (a: number) => void;
21
+ readonly __externref_table_alloc: () => number;
22
+ readonly __wbindgen_externrefs: WebAssembly.Table;
23
+ readonly __wbindgen_malloc: (a: number, b: number) => number;
24
+ readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number;
25
+ readonly __externref_table_dealloc: (a: number) => void;
26
+ readonly __wbindgen_start: () => void;
27
+ }
28
+
29
+ export type SyncInitInput = BufferSource | WebAssembly.Module;
30
+
31
+ /**
32
+ * Instantiates the given `module`, which can either be bytes or
33
+ * a precompiled `WebAssembly.Module`.
34
+ *
35
+ * @param {{ module: SyncInitInput }} module - Passing `SyncInitInput` directly is deprecated.
36
+ *
37
+ * @returns {InitOutput}
38
+ */
39
+ export function initSync(module: { module: SyncInitInput } | SyncInitInput): InitOutput;
40
+
41
+ /**
42
+ * If `module_or_path` is {RequestInfo} or {URL}, makes a request and
43
+ * for everything else, calls `WebAssembly.instantiate` directly.
44
+ *
45
+ * @param {{ module_or_path: InitInput | Promise<InitInput> }} module_or_path - Passing `InitInput` directly is deprecated.
46
+ *
47
+ * @returns {Promise<InitOutput>}
48
+ */
49
+ export default function __wbg_init (module_or_path?: { module_or_path: InitInput | Promise<InitInput> } | InitInput | Promise<InitInput>): Promise<InitOutput>;