@livestore/cli 0.0.0-snapshot-f32dde17378384e071007a6d0baf04b92066d7d5 → 0.0.0-snapshot-0f27d343553b9bb260543bf20de36d216f53c5d8

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 (50) hide show
  1. package/dist/__tests__/fixtures/mock-config.d.ts +56 -0
  2. package/dist/__tests__/fixtures/mock-config.d.ts.map +1 -0
  3. package/dist/__tests__/fixtures/mock-config.js +88 -0
  4. package/dist/__tests__/fixtures/mock-config.js.map +1 -0
  5. package/dist/__tests__/sync-operations.test.d.ts +2 -0
  6. package/dist/__tests__/sync-operations.test.d.ts.map +1 -0
  7. package/dist/__tests__/sync-operations.test.js +167 -0
  8. package/dist/__tests__/sync-operations.test.js.map +1 -0
  9. package/dist/cli.d.ts +15 -1
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +2 -1
  12. package/dist/cli.js.map +1 -1
  13. package/dist/commands/import-export.d.ts +34 -0
  14. package/dist/commands/import-export.d.ts.map +1 -0
  15. package/dist/commands/import-export.js +133 -0
  16. package/dist/commands/import-export.js.map +1 -0
  17. package/dist/commands/mcp-coach.d.ts +2 -2
  18. package/dist/commands/mcp-coach.d.ts.map +1 -1
  19. package/dist/commands/mcp-tool-handlers.d.ts +5 -1
  20. package/dist/commands/mcp-tool-handlers.d.ts.map +1 -1
  21. package/dist/commands/mcp-tool-handlers.js +42 -4
  22. package/dist/commands/mcp-tool-handlers.js.map +1 -1
  23. package/dist/commands/mcp-tools-defs.d.ts +31 -1
  24. package/dist/commands/mcp-tools-defs.d.ts.map +1 -1
  25. package/dist/commands/mcp-tools-defs.js +87 -5
  26. package/dist/commands/mcp-tools-defs.js.map +1 -1
  27. package/dist/commands/new-project.d.ts +1 -1
  28. package/dist/mcp-runtime/runtime.d.ts +4 -3
  29. package/dist/mcp-runtime/runtime.d.ts.map +1 -1
  30. package/dist/mcp-runtime/runtime.js +20 -53
  31. package/dist/mcp-runtime/runtime.js.map +1 -1
  32. package/dist/module-loader.d.ts +22 -0
  33. package/dist/module-loader.d.ts.map +1 -0
  34. package/dist/module-loader.js +75 -0
  35. package/dist/module-loader.js.map +1 -0
  36. package/dist/sync-operations.d.ts +121 -0
  37. package/dist/sync-operations.d.ts.map +1 -0
  38. package/dist/sync-operations.js +180 -0
  39. package/dist/sync-operations.js.map +1 -0
  40. package/dist/tsconfig.tsbuildinfo +1 -1
  41. package/package.json +15 -8
  42. package/src/__tests__/fixtures/mock-config.ts +104 -0
  43. package/src/__tests__/sync-operations.test.ts +230 -0
  44. package/src/cli.ts +2 -1
  45. package/src/commands/import-export.ts +278 -0
  46. package/src/commands/mcp-tool-handlers.ts +50 -5
  47. package/src/commands/mcp-tools-defs.ts +92 -4
  48. package/src/mcp-runtime/runtime.ts +32 -65
  49. package/src/module-loader.ts +93 -0
  50. package/src/sync-operations.ts +360 -0
@@ -1,12 +1,15 @@
1
- import { Effect } from '@livestore/utils/effect';
1
+ import { Effect, FetchHttpClient, Layer } from '@livestore/utils/effect';
2
+ import { PlatformNode } from '@livestore/utils/node';
2
3
  import { blogSchemaContent } from "../mcp-content/schemas/blog.js";
3
4
  import { ecommerceSchemaContent } from "../mcp-content/schemas/ecommerce.js";
4
5
  import { socialSchemaContent } from "../mcp-content/schemas/social.js";
5
6
  import { todoSchemaContent } from "../mcp-content/schemas/todo.js";
6
7
  import * as Runtime from "../mcp-runtime/runtime.js";
8
+ import * as SyncOps from "../sync-operations.js";
7
9
  import { coachToolHandler } from "./mcp-coach.js";
8
10
  import { livestoreToolkit } from "./mcp-tools-defs.js";
9
- // Tool handlers using Tim Smart's pattern
11
+ /** Layer providing FileSystem and HttpClient for sync operations */
12
+ const SyncOpsLayer = Layer.mergeAll(PlatformNode.NodeFileSystem.layer, FetchHttpClient.layer);
10
13
  export const toolHandlers = livestoreToolkit.of({
11
14
  livestore_coach: coachToolHandler,
12
15
  livestore_generate_schema: Effect.fnUntraced(function* ({ schemaType, customDescription }) {
@@ -110,8 +113,13 @@ export const schema = Schema.create({
110
113
  return { schemaCode, description };
111
114
  }),
112
115
  // Connect the single in-process LiveStore instance from user module
113
- livestore_instance_connect: Effect.fnUntraced(function* ({ storePath, storeId, clientId, sessionId }) {
114
- const store = yield* Runtime.init({ storePath, storeId, clientId, sessionId }).pipe(Effect.orDie);
116
+ livestore_instance_connect: Effect.fnUntraced(function* ({ configPath, storeId, clientId, sessionId }) {
117
+ const store = yield* Runtime.init({
118
+ configPath,
119
+ storeId,
120
+ ...(clientId !== undefined ? { clientId } : {}),
121
+ ...(sessionId !== undefined ? { sessionId } : {}),
122
+ }).pipe(Effect.orDie);
115
123
  const eventNames = Array.from(store.schema.eventsDefsMap.keys());
116
124
  const tableNames = Array.from(store.schema.state.sqlite.tables.keys());
117
125
  return {
@@ -140,5 +148,35 @@ export const schema = Schema.create({
140
148
  livestore_instance_disconnect: Effect.fnUntraced(function* () {
141
149
  return yield* Runtime.disconnect;
142
150
  }),
151
+ // Sync export - pull all events from sync backend
152
+ livestore_sync_export: Effect.fnUntraced(function* ({ configPath, storeId, clientId }) {
153
+ const result = yield* SyncOps.pullEventsFromSyncBackend({
154
+ configPath,
155
+ storeId,
156
+ clientId: clientId ?? 'mcp-export',
157
+ }).pipe(Effect.scoped, Effect.provide(SyncOpsLayer), Effect.orDie);
158
+ return {
159
+ storeId: result.storeId,
160
+ eventCount: result.eventCount,
161
+ exportedAt: result.exportedAt,
162
+ data: result.data,
163
+ };
164
+ }),
165
+ // Sync import - push events to sync backend
166
+ livestore_sync_import: Effect.fnUntraced(function* ({ configPath, storeId, clientId, data, force, dryRun }) {
167
+ const result = yield* SyncOps.pushEventsToSyncBackend({
168
+ configPath,
169
+ storeId,
170
+ clientId: clientId ?? 'mcp-import',
171
+ data,
172
+ force: force ?? false,
173
+ dryRun: dryRun ?? false,
174
+ }).pipe(Effect.scoped, Effect.provide(SyncOpsLayer), Effect.orDie);
175
+ return {
176
+ storeId: result.storeId,
177
+ eventCount: result.eventCount,
178
+ dryRun: result.dryRun,
179
+ };
180
+ }),
143
181
  });
144
182
  //# sourceMappingURL=mcp-tool-handlers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-handlers.js","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tool-handlers.js","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export declare const livestoreToolkit: Toolkit.Toolkit<{
35
35
  }, never>;
36
36
  readonly livestore_instance_connect: Tool.Tool<"livestore_instance_connect", {
37
37
  readonly parameters: Schema.Struct<{
38
- storePath: Schema.SchemaClass<string, string, never>;
38
+ configPath: Schema.SchemaClass<string, string, never>;
39
39
  storeId: Schema.SchemaClass<string, string, never>;
40
40
  clientId: Schema.optional<Schema.SchemaClass<string, string, never>>;
41
41
  sessionId: Schema.optional<Schema.SchemaClass<string, string, never>>;
@@ -89,5 +89,35 @@ export declare const livestoreToolkit: Toolkit.Toolkit<{
89
89
  readonly success: Schema.TaggedStruct<"disconnected", {}>;
90
90
  readonly failure: typeof Schema.Never;
91
91
  }, never>;
92
+ readonly livestore_sync_export: Tool.Tool<"livestore_sync_export", {
93
+ readonly parameters: Schema.Struct<{
94
+ configPath: Schema.SchemaClass<string, string, never>;
95
+ storeId: Schema.SchemaClass<string, string, never>;
96
+ clientId: Schema.optional<Schema.SchemaClass<string, string, never>>;
97
+ }>;
98
+ readonly success: Schema.Struct<{
99
+ storeId: typeof Schema.String;
100
+ eventCount: typeof Schema.Number;
101
+ exportedAt: typeof Schema.String;
102
+ data: Schema.Schema<Schema.JsonValue, Schema.JsonValue, never>;
103
+ }>;
104
+ readonly failure: typeof Schema.Never;
105
+ }, never>;
106
+ readonly livestore_sync_import: Tool.Tool<"livestore_sync_import", {
107
+ readonly parameters: Schema.Struct<{
108
+ configPath: Schema.SchemaClass<string, string, never>;
109
+ storeId: Schema.SchemaClass<string, string, never>;
110
+ clientId: Schema.optional<Schema.SchemaClass<string, string, never>>;
111
+ data: Schema.Schema<Schema.JsonValue, Schema.JsonValue, never>;
112
+ force: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
113
+ dryRun: Schema.optional<Schema.SchemaClass<boolean, boolean, never>>;
114
+ }>;
115
+ readonly success: Schema.Struct<{
116
+ storeId: typeof Schema.String;
117
+ eventCount: typeof Schema.Number;
118
+ dryRun: typeof Schema.Boolean;
119
+ }>;
120
+ readonly failure: typeof Schema.Never;
121
+ }, never>;
92
122
  }>;
93
123
  //# sourceMappingURL=mcp-tools-defs.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools-defs.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAG/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiO5B,CAAA"}
1
+ {"version":3,"file":"mcp-tools-defs.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAA;AAG/D,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyT5B,CAAA"}
@@ -30,7 +30,7 @@ export const livestoreToolkit = Toolkit.make(coachTool, Tool.make('livestore_gen
30
30
  Notes:
31
31
  - Only one instance can be active at a time; calling connect again shuts down and replaces the previous instance.
32
32
  - Reconnecting creates a fresh, in-memory client database. The state visible to queries is populated by your backend's initial sync behavior; depending on configuration, you may briefly observe empty or partial data until sync completes.
33
- - \`storePath\` is resolved relative to the current working directory.
33
+ - \`configPath\` is resolved relative to the current working directory.
34
34
  - \`syncBackend\` must be a function (factory) that returns a backend; \`syncPayload\` must be JSON-serializable.
35
35
 
36
36
  Module contract (generic example):
@@ -50,13 +50,13 @@ export const syncPayload = { authToken: process.env.LIVESTORE_SYNC_AUTH_TOKEN ??
50
50
 
51
51
  Connect parameters:
52
52
  {
53
- "storePath": "<path-to-your-mcp-module>.ts",
53
+ "configPath": "livestore-cli.config.ts",
54
54
  "storeId": "<store-id>"
55
55
  }
56
56
 
57
57
  Optional identifiers to group client state on the server:
58
58
  {
59
- "storePath": "<path-to-your-mcp-module>.ts",
59
+ "configPath": "livestore-cli.config.ts",
60
60
  "storeId": "<store-id>",
61
61
  "clientId": "<client-id>",
62
62
  "sessionId": "<session-id>"
@@ -73,7 +73,7 @@ Returns on success:
73
73
  }
74
74
  }`,
75
75
  parameters: {
76
- storePath: Schema.String.annotations({
76
+ configPath: Schema.String.annotations({
77
77
  description: 'Path to a module that exports named variables: schema and syncBackend',
78
78
  }),
79
79
  storeId: Schema.String.annotations({ description: 'Required store id for the LiveStore instance.' }),
@@ -192,5 +192,87 @@ Example success:
192
192
  { "_tag": "disconnected" }`,
193
193
  parameters: {},
194
194
  success: Schema.TaggedStruct('disconnected', {}),
195
- }));
195
+ }), Tool.make('livestore_sync_export', {
196
+ description: `Export all events from a sync backend to JSON data.
197
+
198
+ This tool connects directly to the sync backend (without creating a full LiveStore instance) and pulls all events. Useful for backup, migration, and debugging.
199
+
200
+ Module contract (same as livestore_instance_connect):
201
+ \`\`\`ts
202
+ export { schema } from './src/livestore/schema.ts'
203
+ export const syncBackend = makeWsSync({ url: process.env.LIVESTORE_SYNC_URL ?? 'ws://localhost:8787' })
204
+ export const syncPayload = { authToken: process.env.LIVESTORE_SYNC_AUTH_TOKEN }
205
+ \`\`\`
206
+
207
+ Example parameters:
208
+ {
209
+ "configPath": "livestore-cli.config.ts",
210
+ "storeId": "my-store"
211
+ }
212
+
213
+ Returns on success:
214
+ {
215
+ "storeId": "my-store",
216
+ "eventCount": 127,
217
+ "exportedAt": "2024-01-15T10:30:00.000Z",
218
+ "data": { "version": 1, "storeId": "my-store", ... }
219
+ }`,
220
+ parameters: {
221
+ configPath: Schema.String.annotations({
222
+ description: 'Path to a module that exports schema and syncBackend',
223
+ }),
224
+ storeId: Schema.String.annotations({ description: 'Store identifier' }),
225
+ clientId: Schema.optional(Schema.String.annotations({ description: 'Client identifier (default: mcp-export)' })),
226
+ },
227
+ success: Schema.Struct({
228
+ storeId: Schema.String,
229
+ eventCount: Schema.Number,
230
+ exportedAt: Schema.String,
231
+ data: Schema.JsonValue.annotations({ description: 'The export file data (can be saved or passed to import)' }),
232
+ }),
233
+ }).annotate(Tool.Readonly, true), Tool.make('livestore_sync_import', {
234
+ description: `Import events from export data to a sync backend.
235
+
236
+ This tool connects directly to the sync backend and pushes events. The sync backend must be empty.
237
+
238
+ Example parameters:
239
+ {
240
+ "configPath": "livestore-cli.config.ts",
241
+ "storeId": "my-store",
242
+ "data": { "version": 1, "storeId": "my-store", "events": [...] }
243
+ }
244
+
245
+ With options:
246
+ {
247
+ "configPath": "livestore-cli.config.ts",
248
+ "storeId": "my-store",
249
+ "data": { ... },
250
+ "force": true, // Import even if store ID doesn't match
251
+ "dryRun": true // Validate without importing
252
+ }
253
+
254
+ Returns on success:
255
+ {
256
+ "storeId": "my-store",
257
+ "eventCount": 127,
258
+ "dryRun": false
259
+ }`,
260
+ parameters: {
261
+ configPath: Schema.String.annotations({
262
+ description: 'Path to a module that exports schema and syncBackend',
263
+ }),
264
+ storeId: Schema.String.annotations({ description: 'Store identifier' }),
265
+ clientId: Schema.optional(Schema.String.annotations({ description: 'Client identifier (default: mcp-import)' })),
266
+ data: Schema.JsonValue.annotations({
267
+ description: 'The export data to import (from livestore_sync_export or a file)',
268
+ }),
269
+ force: Schema.optional(Schema.Boolean.annotations({ description: 'Force import even if store ID does not match' })),
270
+ dryRun: Schema.optional(Schema.Boolean.annotations({ description: 'Validate without actually importing' })),
271
+ },
272
+ success: Schema.Struct({
273
+ storeId: Schema.String,
274
+ eventCount: Schema.Number,
275
+ dryRun: Schema.Boolean,
276
+ }),
277
+ }).annotate(Tool.Destructive, true));
196
278
  //# sourceMappingURL=mcp-tools-defs.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tools-defs.js","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-tools-defs.js","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"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"}
@@ -25,7 +25,7 @@ declare const DirectoryExistsError_base: Schema.TaggedErrorClass<DirectoryExists
25
25
  }>;
26
26
  export declare class DirectoryExistsError extends DirectoryExistsError_base {
27
27
  }
28
- export declare const createCommand: Cli.Command.Command<"create", HttpClient.HttpClient | Cli.Prompt.Prompt.Environment | import("@effect/platform/CommandExecutor").CommandExecutor, Error | import("@effect/platform/HttpClientError").ResponseError | import("@effect/platform/Error").PlatformError, {
28
+ export declare const createCommand: Cli.Command.Command<"create", HttpClient.HttpClient | Cli.Prompt.Prompt.Environment | import("@effect/platform/CommandExecutor").CommandExecutor, Error | import("@effect/platform/Error").PlatformError | import("@effect/platform/HttpClientError").ResponseError, {
29
29
  readonly example: Option.Option<string>;
30
30
  readonly ref: string;
31
31
  readonly path: Option.Option<string>;
@@ -1,15 +1,16 @@
1
+ import { UnknownError } from '@livestore/common';
1
2
  import type { Store } from '@livestore/livestore';
2
3
  import { Effect, Option, Schema } from '@livestore/utils/effect';
3
4
  /**
4
5
  * Dynamically imports a module that exports a `makeStore({ storeId }): Promise<Store>` function,
5
6
  * calls it with the provided storeId, and caches the Store instance for subsequent tool calls.
6
7
  */
7
- export declare const init: ({ storePath, storeId, clientId, sessionId, }: {
8
- storePath: string;
8
+ export declare const init: ({ configPath, storeId, clientId, sessionId, }: {
9
+ configPath: string;
9
10
  storeId: string;
10
11
  clientId?: string;
11
12
  sessionId?: string;
12
- }) => Effect.Effect<Store<any, {}>, never, never>;
13
+ }) => Effect.Effect<Store<any>, UnknownError>;
13
14
  export declare const getStore: Effect.Effect<Option.Option<Store<any, {}>>, never, never>;
14
15
  export declare const status: Effect.Effect<{
15
16
  _tag: "disconnected";
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mcp-runtime/runtime.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAGjD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAKhE;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,8CAKlB;IACD,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,gDAgFG,CAAA;AAEJ,eAAO,MAAM,QAAQ,4DAAgD,CAAA;AAErE,eAAO,MAAM,MAAM;;;;;;;;;;;;gBAyB2B,CAAA;AAE9C,eAAO,MAAM,KAAK,GAAI,qBAAqB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;;;;;gBAWlE,CAAA;AAE/C,eAAO,MAAM,MAAM,GAAI,YAAY;IAAE,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE;;gBAWtD,CAAA;AAEhD,eAAO,MAAM,UAAU;;gBAQ2B,CAAA"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/mcp-runtime/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAEhD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAA;AAEjD,OAAO,EAAE,MAAM,EAA0B,MAAM,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAWxF;;;GAGG;AACH,eAAO,MAAM,IAAI,GAAI,+CAKlB;IACD,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,KAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,YAAY,CA2CuC,CAAA;AAEjF,eAAO,MAAM,QAAQ,4DAAgD,CAAA;AAErE,eAAO,MAAM,MAAM;;;;;;;;;;;;gBAyB2B,CAAA;AAE9C,eAAO,MAAM,KAAK,GAAI,qBAAqB;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE;;;;;gBAWlE,CAAA;AAE/C,eAAO,MAAM,MAAM,GAAI,YAAY;IAAE,MAAM,EAAE,aAAa,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAA;KAAE,CAAC,CAAA;CAAE;;gBAWtD,CAAA;AAEhD,eAAO,MAAM,UAAU;;gBAQ2B,CAAA"}
@@ -1,88 +1,55 @@
1
- var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
- if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
- return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
- return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
- });
6
- }
7
- return path;
8
- };
9
- import path from 'node:path';
10
- import { pathToFileURL } from 'node:url';
11
1
  import { makeAdapter as makeNodeAdapter } from '@livestore/adapter-node';
12
- import { isLiveStoreSchema, LiveStoreEvent, SystemTables } from '@livestore/common/schema';
2
+ import { UnknownError } from '@livestore/common';
3
+ import { LiveStoreEvent, SystemTables } from '@livestore/common/schema';
13
4
  import { createStorePromise } from '@livestore/livestore';
14
- import { shouldNeverHappen } from '@livestore/utils';
15
- import { Effect, Option, Schema } from '@livestore/utils/effect';
5
+ import { Effect, FetchHttpClient, Layer, Option, Schema } from '@livestore/utils/effect';
6
+ import { PlatformNode } from '@livestore/utils/node';
7
+ import { loadModuleConfig } from "../module-loader.js";
16
8
  /** Currently connected store */
17
9
  let store;
10
+ /** Layer providing FileSystem and HttpClient for module loading */
11
+ const ModuleLoaderLayer = Layer.mergeAll(PlatformNode.NodeFileSystem.layer, FetchHttpClient.layer);
18
12
  /**
19
13
  * Dynamically imports a module that exports a `makeStore({ storeId }): Promise<Store>` function,
20
14
  * calls it with the provided storeId, and caches the Store instance for subsequent tool calls.
21
15
  */
22
- export const init = ({ storePath, storeId, clientId, sessionId, }) => Effect.promise(async () => {
16
+ export const init = ({ configPath, storeId, clientId, sessionId, }) => Effect.gen(function* () {
23
17
  if (!storeId || typeof storeId !== 'string') {
24
- throw new Error('Invalid storeId: expected a non-empty string');
25
- }
26
- // Resolve to absolute path and import as file URL
27
- const abs = path.isAbsolute(storePath) ? storePath : path.resolve(process.cwd(), storePath);
28
- const mod = await import(__rewriteRelativeImportExtension(pathToFileURL(abs).href));
29
- // Validate required exports
30
- const schema = mod?.schema;
31
- if (!isLiveStoreSchema(schema)) {
32
- throw new Error(`Module at ${abs} must export a valid LiveStore 'schema'. Ex: export { schema } from './src/livestore/schema.ts'`);
33
- }
34
- const syncBackend = mod?.syncBackend;
35
- if (typeof syncBackend !== 'function') {
36
- throw new Error(`Module at ${abs} must export a 'syncBackend' constructor (e.g., makeWsSync({ url })). Ex: export const syncBackend = makeWsSync({ url })`);
18
+ return yield* UnknownError.make({ cause: new Error('Invalid storeId: expected a non-empty string') });
37
19
  }
38
- // Optional: syncPayload for authenticated backends
39
- const syncPayloadSchemaExport = mod?.syncPayloadSchema;
40
- const syncPayloadSchema = syncPayloadSchemaExport === undefined
41
- ? Schema.JsonValue
42
- : Schema.isSchema(syncPayloadSchemaExport)
43
- ? syncPayloadSchemaExport
44
- : shouldNeverHappen(`Exported 'syncPayloadSchema' from ${abs} must be an Effect Schema (received ${typeof syncPayloadSchemaExport}).`);
45
- const syncPayloadExport = mod?.syncPayload;
46
- const syncPayload = syncPayloadExport === undefined
47
- ? undefined
48
- : (() => {
49
- try {
50
- return Schema.decodeSync(syncPayloadSchema)(syncPayloadExport);
51
- }
52
- catch (error) {
53
- throw new Error(`Failed to decode 'syncPayload' from ${abs} using the provided schema: ${error.message}`);
54
- }
55
- })();
20
+ const { schema, syncBackendConstructor, syncPayloadSchema, syncPayload } = yield* loadModuleConfig({ configPath });
56
21
  // Build Node adapter internally
57
22
  const adapter = makeNodeAdapter({
58
23
  storage: { type: 'in-memory' },
59
24
  ...(clientId ? { clientId } : {}),
60
25
  ...(sessionId ? { sessionId } : {}),
61
26
  sync: {
62
- backend: syncBackend,
27
+ backend: syncBackendConstructor,
63
28
  initialSyncOptions: { _tag: 'Blocking', timeout: 5000 },
64
29
  onSyncError: 'shutdown',
65
30
  },
66
31
  });
67
32
  // Create the store
68
- const s = await createStorePromise({
33
+ const s = yield* Effect.promise(() => createStorePromise({
69
34
  schema,
70
35
  storeId,
71
36
  adapter,
72
37
  disableDevtools: true,
73
38
  syncPayload,
74
39
  syncPayloadSchema,
75
- });
40
+ }));
76
41
  // Replace existing store if any
77
42
  if (store) {
78
- try {
79
- await store.shutdownPromise();
80
- }
81
- catch { }
43
+ yield* Effect.promise(async () => {
44
+ try {
45
+ await store.shutdownPromise();
46
+ }
47
+ catch { }
48
+ });
82
49
  }
83
50
  store = s;
84
51
  return store;
85
- });
52
+ }).pipe(Effect.provide(ModuleLoaderLayer), Effect.withSpan('mcp-runtime:init'));
86
53
  export const getStore = Effect.sync(() => Option.fromNullable(store));
87
54
  export const status = Effect.gen(function* () {
88
55
  const opt = yield* getStore;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/mcp-runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/mcp-runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { SyncBackend } from '@livestore/common';
2
+ import { UnknownError } from '@livestore/common';
3
+ import { type LiveStoreSchema } from '@livestore/common/schema';
4
+ import { Effect, FileSystem, Schema } from '@livestore/utils/effect';
5
+ export interface ModuleConfig {
6
+ schema: LiveStoreSchema;
7
+ syncBackendConstructor: SyncBackend.SyncBackendConstructor;
8
+ syncPayloadSchema: Schema.Schema<any>;
9
+ syncPayload: unknown;
10
+ }
11
+ /**
12
+ * Loads and validates a user config module.
13
+ * The module must export:
14
+ * - `schema`: A valid LiveStore schema
15
+ * - `syncBackend`: A sync backend constructor function
16
+ * - `syncPayloadSchema` (optional): Schema for validating syncPayload
17
+ * - `syncPayload` (optional): Payload data for the sync backend
18
+ */
19
+ export declare const loadModuleConfig: ({ configPath, }: {
20
+ configPath: string;
21
+ }) => Effect.Effect<ModuleConfig, UnknownError, FileSystem.FileSystem>;
22
+ //# sourceMappingURL=module-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.d.ts","sourceRoot":"","sources":["../src/module-loader.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAElF,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAEpE,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,sBAAsB,EAAE,WAAW,CAAC,sBAAsB,CAAA;IAC1D,iBAAiB,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACrC,WAAW,EAAE,OAAO,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,GAAI,iBAE9B;IACD,UAAU,EAAE,MAAM,CAAA;CACnB,KAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,YAAY,EAAE,UAAU,CAAC,UAAU,CA6DP,CAAA"}
@@ -0,0 +1,75 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ /**
10
+ * Shared module loading utility for CLI and MCP.
11
+ * Loads and validates user config modules that export schema, syncBackend, and optional syncPayload.
12
+ */
13
+ import path from 'node:path';
14
+ import { pathToFileURL } from 'node:url';
15
+ import { UnknownError } from '@livestore/common';
16
+ import { isLiveStoreSchema } from '@livestore/common/schema';
17
+ import { shouldNeverHappen } from '@livestore/utils';
18
+ import { Effect, FileSystem, Schema } from '@livestore/utils/effect';
19
+ /**
20
+ * Loads and validates a user config module.
21
+ * The module must export:
22
+ * - `schema`: A valid LiveStore schema
23
+ * - `syncBackend`: A sync backend constructor function
24
+ * - `syncPayloadSchema` (optional): Schema for validating syncPayload
25
+ * - `syncPayload` (optional): Payload data for the sync backend
26
+ */
27
+ export const loadModuleConfig = ({ configPath, }) => Effect.gen(function* () {
28
+ const abs = path.isAbsolute(configPath) ? configPath : path.resolve(process.cwd(), configPath);
29
+ const fs = yield* FileSystem.FileSystem;
30
+ const exists = yield* fs.exists(abs).pipe(UnknownError.mapToUnknownError);
31
+ if (!exists) {
32
+ return yield* UnknownError.make({
33
+ cause: `Store module not found at ${abs}`,
34
+ note: 'Make sure the path points to a valid LiveStore module',
35
+ });
36
+ }
37
+ const mod = yield* Effect.tryPromise({
38
+ try: () => import(__rewriteRelativeImportExtension(pathToFileURL(abs).href)),
39
+ catch: (cause) => UnknownError.make({
40
+ cause,
41
+ note: `Failed to import module at ${abs}`,
42
+ }),
43
+ });
44
+ const schema = mod?.schema;
45
+ if (!isLiveStoreSchema(schema)) {
46
+ return yield* UnknownError.make({
47
+ cause: `Module at ${abs} must export a valid LiveStore 'schema'`,
48
+ note: `Ex: export { schema } from './src/livestore/schema.ts'`,
49
+ });
50
+ }
51
+ const syncBackendConstructor = mod?.syncBackend;
52
+ if (typeof syncBackendConstructor !== 'function') {
53
+ return yield* UnknownError.make({
54
+ cause: `Module at ${abs} must export a 'syncBackend' constructor`,
55
+ note: `Ex: export const syncBackend = makeWsSync({ url })`,
56
+ });
57
+ }
58
+ const syncPayloadSchemaExport = mod?.syncPayloadSchema;
59
+ const syncPayloadSchema = syncPayloadSchemaExport === undefined
60
+ ? Schema.JsonValue
61
+ : Schema.isSchema(syncPayloadSchemaExport)
62
+ ? syncPayloadSchemaExport
63
+ : shouldNeverHappen(`Exported 'syncPayloadSchema' from ${abs} must be an Effect Schema (received ${typeof syncPayloadSchemaExport}).`);
64
+ const syncPayloadExport = mod?.syncPayload;
65
+ const syncPayload = yield* (syncPayloadExport === undefined
66
+ ? Effect.succeed(undefined)
67
+ : Schema.decodeUnknown(syncPayloadSchema)(syncPayloadExport)).pipe(UnknownError.mapToUnknownError);
68
+ return {
69
+ schema,
70
+ syncBackendConstructor,
71
+ syncPayloadSchema,
72
+ syncPayload,
73
+ };
74
+ }).pipe(Effect.withSpan('module-loader:loadModuleConfig'));
75
+ //# sourceMappingURL=module-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module-loader.js","sourceRoot":"","sources":["../src/module-loader.ts"],"names":[],"mappings":"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"}