@livestore/cli 0.4.0 → 0.5.0-dev.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/__tests__/fixtures/mock-config.d.ts +8 -9
- package/dist/__tests__/fixtures/mock-config.d.ts.map +1 -1
- package/dist/__tests__/fixtures/mock-config.js +18 -8
- package/dist/__tests__/fixtures/mock-config.js.map +1 -1
- package/dist/__tests__/sync-operations.test.js +32 -22
- package/dist/__tests__/sync-operations.test.js.map +1 -1
- package/dist/bin.js +7 -6
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +2 -23
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/dist/commands/__fixtures__/mcp-protocol-server.d.ts +2 -0
- package/dist/commands/__fixtures__/mcp-protocol-server.d.ts.map +1 -0
- package/dist/commands/__fixtures__/mcp-protocol-server.js +10 -0
- package/dist/commands/__fixtures__/mcp-protocol-server.js.map +1 -0
- package/dist/commands/import-export.d.ts +5 -19
- package/dist/commands/import-export.d.ts.map +1 -1
- package/dist/commands/import-export.js +13 -13
- package/dist/commands/import-export.js.map +1 -1
- package/dist/commands/mcp-coach.d.ts +8 -7
- package/dist/commands/mcp-coach.d.ts.map +1 -1
- package/dist/commands/mcp-coach.js +11 -11
- package/dist/commands/mcp-coach.js.map +1 -1
- package/dist/commands/mcp-protocols.d.ts +7 -0
- package/dist/commands/mcp-protocols.d.ts.map +1 -0
- package/dist/commands/mcp-protocols.js +12 -0
- package/dist/commands/mcp-protocols.js.map +1 -0
- package/dist/commands/mcp-protocols.test.d.ts +2 -0
- package/dist/commands/mcp-protocols.test.d.ts.map +1 -0
- package/dist/commands/mcp-protocols.test.js +60 -0
- package/dist/commands/mcp-protocols.test.js.map +1 -0
- package/dist/commands/mcp-stdio.test.d.ts +2 -0
- package/dist/commands/mcp-stdio.test.d.ts.map +1 -0
- package/dist/commands/mcp-stdio.test.js +79 -0
- package/dist/commands/mcp-stdio.test.js.map +1 -0
- package/dist/commands/mcp-tool-handlers.d.ts +1 -1
- package/dist/commands/mcp-tool-handlers.d.ts.map +1 -1
- package/dist/commands/mcp-tool-handlers.js +9 -8
- package/dist/commands/mcp-tool-handlers.js.map +1 -1
- package/dist/commands/mcp-tools-defs.d.ts +74 -73
- package/dist/commands/mcp-tools-defs.d.ts.map +1 -1
- package/dist/commands/mcp-tools-defs.js +64 -57
- package/dist/commands/mcp-tools-defs.js.map +1 -1
- package/dist/commands/mcp-tools-defs.test.d.ts +2 -0
- package/dist/commands/mcp-tools-defs.test.d.ts.map +1 -0
- package/dist/commands/mcp-tools-defs.test.js +11 -0
- package/dist/commands/mcp-tools-defs.test.js.map +1 -0
- package/dist/commands/mcp.d.ts +1 -3
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +15 -14
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/new-project.d.ts +19 -27
- package/dist/commands/new-project.d.ts.map +1 -1
- package/dist/commands/new-project.js +19 -18
- package/dist/commands/new-project.js.map +1 -1
- package/dist/mcp-content/architecture.d.ts +1 -1
- package/dist/mcp-content/architecture.d.ts.map +1 -1
- package/dist/mcp-content/architecture.js +3 -3
- package/dist/mcp-content/features.d.ts +1 -1
- package/dist/mcp-content/features.d.ts.map +1 -1
- package/dist/mcp-content/features.js +1 -1
- package/dist/mcp-content/getting-started.d.ts +1 -1
- package/dist/mcp-content/getting-started.d.ts.map +1 -1
- package/dist/mcp-content/getting-started.js +37 -37
- package/dist/mcp-content/overview.d.ts +1 -1
- package/dist/mcp-content/overview.d.ts.map +1 -1
- package/dist/mcp-content/overview.js +6 -6
- package/dist/mcp-content/schemas/blog.d.ts +1 -1
- package/dist/mcp-content/schemas/blog.d.ts.map +1 -1
- package/dist/mcp-content/schemas/blog.js +25 -25
- package/dist/mcp-content/schemas/ecommerce.d.ts +1 -1
- package/dist/mcp-content/schemas/ecommerce.d.ts.map +1 -1
- package/dist/mcp-content/schemas/ecommerce.js +67 -67
- package/dist/mcp-content/schemas/social.d.ts +1 -1
- package/dist/mcp-content/schemas/social.d.ts.map +1 -1
- package/dist/mcp-content/schemas/social.js +48 -48
- package/dist/mcp-content/schemas/todo.d.ts +1 -1
- package/dist/mcp-content/schemas/todo.d.ts.map +1 -1
- package/dist/mcp-content/schemas/todo.js +35 -35
- package/dist/mcp-runtime/runtime.d.ts +5 -5
- package/dist/mcp-runtime/runtime.d.ts.map +1 -1
- package/dist/mcp-runtime/runtime.js +5 -5
- package/dist/mcp-runtime/runtime.js.map +1 -1
- package/dist/mod.js +1 -1
- package/dist/module-loader.d.ts +2 -2
- package/dist/module-loader.d.ts.map +1 -1
- package/dist/module-loader.js +8 -8
- package/dist/module-loader.js.map +1 -1
- package/dist/package-manager.d.ts +3 -3
- package/dist/package-manager.d.ts.map +1 -1
- package/dist/package-manager.test.js +1 -1
- package/dist/sync-operations.d.ts +24 -30
- package/dist/sync-operations.d.ts.map +1 -1
- package/dist/sync-operations.js +15 -15
- package/dist/sync-operations.js.map +1 -1
- package/package.json +45 -59
- package/src/__tests__/fixtures/.gitignore +1 -0
- package/src/__tests__/fixtures/mock-config.ts +21 -10
- package/src/__tests__/sync-operations.test.ts +36 -35
- package/src/bin.ts +7 -6
- package/src/cli.ts +1 -1
- package/src/commands/__fixtures__/mcp-protocol-server.ts +12 -0
- package/src/commands/import-export.ts +29 -29
- package/src/commands/mcp-coach.ts +13 -12
- package/src/commands/mcp-protocols.test.ts +76 -0
- package/src/commands/mcp-protocols.ts +12 -0
- package/src/commands/mcp-stdio.test.ts +93 -0
- package/src/commands/mcp-tool-handlers.ts +11 -8
- package/src/commands/mcp-tools-defs.test.ts +13 -0
- package/src/commands/mcp-tools-defs.ts +57 -55
- package/src/commands/mcp.ts +9 -4
- package/src/commands/new-project.ts +50 -37
- package/src/mcp-content/architecture.ts +3 -3
- package/src/mcp-content/features.ts +1 -1
- package/src/mcp-content/getting-started.ts +37 -37
- package/src/mcp-content/overview.ts +6 -6
- package/src/mcp-content/schemas/blog.ts +25 -25
- package/src/mcp-content/schemas/ecommerce.ts +67 -67
- package/src/mcp-content/schemas/social.ts +48 -48
- package/src/mcp-content/schemas/todo.ts +35 -35
- package/src/mcp-runtime/runtime.ts +7 -7
- package/src/module-loader.ts +11 -12
- package/src/sync-operations.ts +26 -19
|
@@ -1,34 +1,34 @@
|
|
|
1
|
-
import { LanguageModel } from '
|
|
1
|
+
import { AiError, LanguageModel, Prompt, Tool } from 'effect/ai';
|
|
2
2
|
import { OpenAiClient, OpenAiLanguageModel } from '@effect/ai-openai';
|
|
3
|
-
import {
|
|
3
|
+
import { Config, Effect, FetchHttpClient, Layer, Schema } from '@livestore/utils/effect';
|
|
4
4
|
// Define the coach tool that analyzes LiveStore usage
|
|
5
5
|
export const coachTool = Tool.make('livestore_coach', {
|
|
6
6
|
description: 'Analyze LiveStore code (schemas, queries, mutations, etc.) and provide AI-powered feedback on best practices, performance, and improvements.',
|
|
7
|
-
parameters: {
|
|
8
|
-
code: Schema.String.
|
|
7
|
+
parameters: Schema.Struct({
|
|
8
|
+
code: Schema.String.annotate({
|
|
9
9
|
description: 'The LiveStore code to analyze (TypeScript/JavaScript)',
|
|
10
10
|
}),
|
|
11
|
-
codeType: Schema.optional(Schema.String.
|
|
11
|
+
codeType: Schema.optional(Schema.String.annotate({
|
|
12
12
|
description: "Type of code being analyzed: 'schema', 'query', 'mutation', 'component', or 'general'",
|
|
13
13
|
})),
|
|
14
|
-
},
|
|
14
|
+
}),
|
|
15
15
|
success: Schema.Struct({
|
|
16
|
-
feedback: Schema.String.
|
|
16
|
+
feedback: Schema.String.annotate({
|
|
17
17
|
description: 'AI-generated feedback and recommendations for the code',
|
|
18
18
|
}),
|
|
19
|
-
score: Schema.optional(Schema.
|
|
19
|
+
score: Schema.optional(Schema.Finite.annotate({
|
|
20
20
|
description: 'Code quality score from 1-10 (optional)',
|
|
21
21
|
})),
|
|
22
|
-
suggestions: Schema.Array(Schema.String.
|
|
22
|
+
suggestions: Schema.Array(Schema.String.annotate({
|
|
23
23
|
description: 'Specific actionable suggestions for improvement',
|
|
24
|
-
})).
|
|
24
|
+
})).annotate({
|
|
25
25
|
description: 'List of specific improvement suggestions',
|
|
26
26
|
}),
|
|
27
27
|
}),
|
|
28
28
|
failure: AiError.AiError,
|
|
29
29
|
});
|
|
30
30
|
/** Composed layer: HttpClient → OpenAiClient → LanguageModel */
|
|
31
|
-
const LanguageModelLayer = OpenAiLanguageModel.layer({ model: 'gpt-4o-mini' }).pipe(Layer.provide(OpenAiClient.layerConfig({ apiKey: Config.
|
|
31
|
+
const LanguageModelLayer = OpenAiLanguageModel.layer({ model: 'gpt-4o-mini' }).pipe(Layer.provide(OpenAiClient.layerConfig({ apiKey: Config.Redacted('OPENAI_API_KEY') })), Layer.provide(FetchHttpClient.layer));
|
|
32
32
|
/** Coach tool handler that uses OpenAI for analysis */
|
|
33
33
|
export const coachToolHandler = Effect.fn('mcp-coach-handler')(({ code, codeType }) => {
|
|
34
34
|
const effect = Effect.gen(function* () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-coach.js","sourceRoot":"","sources":["../../src/commands/mcp-coach.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp-coach.js","sourceRoot":"","sources":["../../src/commands/mcp-coach.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { McpProtocol } from 'effect/ai';
|
|
2
|
+
/**
|
|
3
|
+
* MCP stdio selects an exact offered version when available and otherwise
|
|
4
|
+
* falls back to the first adapter, so keep every supported adapter newest-first.
|
|
5
|
+
*/
|
|
6
|
+
export declare const supportedMcpProtocols: readonly [McpProtocol.ProtocolAdapter<"2025-11-25", McpProtocol.StatefulRuntimeDescriptor>, McpProtocol.ProtocolAdapter<"2025-06-18", McpProtocol.StatefulRuntimeDescriptor>, McpProtocol.ProtocolAdapter<"2025-03-26", McpProtocol.StatefulRuntimeDescriptor>, McpProtocol.ProtocolAdapter<"2024-11-05", McpProtocol.StatefulRuntimeDescriptor>];
|
|
7
|
+
//# sourceMappingURL=mcp-protocols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocols.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC;;;GAGG;AACH,eAAO,MAAM,qBAAqB,mVAKxB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { McpProtocol } from 'effect/ai';
|
|
2
|
+
/**
|
|
3
|
+
* MCP stdio selects an exact offered version when available and otherwise
|
|
4
|
+
* falls back to the first adapter, so keep every supported adapter newest-first.
|
|
5
|
+
*/
|
|
6
|
+
export const supportedMcpProtocols = [
|
|
7
|
+
McpProtocol.v2025_11_25,
|
|
8
|
+
McpProtocol.v2025_06_18,
|
|
9
|
+
McpProtocol.v2025_03_26,
|
|
10
|
+
McpProtocol.v2024_11_05,
|
|
11
|
+
];
|
|
12
|
+
//# sourceMappingURL=mcp-protocols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocols.js","sourceRoot":"","sources":["../../src/commands/mcp-protocols.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAEvC;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,WAAW,CAAC,WAAW;IACvB,WAAW,CAAC,WAAW;IACvB,WAAW,CAAC,WAAW;IACvB,WAAW,CAAC,WAAW;CACf,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocols.test.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-protocols.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
3
|
+
import { supportedMcpProtocols } from './mcp-protocols.js';
|
|
4
|
+
const protocolVersions = ['2025-11-25', '2025-06-18', '2025-03-26', '2024-11-05'];
|
|
5
|
+
Vitest.describe('supportedMcpProtocols', () => {
|
|
6
|
+
Vitest.it('keeps the fallback protocol newest-first', () => {
|
|
7
|
+
Vitest.expect(supportedMcpProtocols.map((protocol) => protocol.protocolVersion)).toEqual(protocolVersions);
|
|
8
|
+
});
|
|
9
|
+
Vitest.it.each(protocolVersions)('negotiates an exact %s stdio initialize offer', async (protocolVersion) => {
|
|
10
|
+
const response = await initialize(protocolVersion);
|
|
11
|
+
Vitest.expect(response.result?.protocolVersion).toBe(protocolVersion);
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
const initialize = (protocolVersion) => new Promise((resolve, reject) => {
|
|
15
|
+
const child = spawn('bun', [new URL('./__fixtures__/mcp-protocol-server.ts', import.meta.url).pathname], {
|
|
16
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
17
|
+
});
|
|
18
|
+
let stdout = '';
|
|
19
|
+
let stderr = '';
|
|
20
|
+
const timeout = setTimeout(() => {
|
|
21
|
+
child.kill('SIGTERM');
|
|
22
|
+
reject(new Error(`MCP initialize timed out. stdout=${stdout} stderr=${stderr}`));
|
|
23
|
+
}, 5_000);
|
|
24
|
+
child.stdout.setEncoding('utf8');
|
|
25
|
+
child.stderr.setEncoding('utf8');
|
|
26
|
+
child.stdout.on('data', (chunk) => {
|
|
27
|
+
stdout += chunk;
|
|
28
|
+
if (stdout.endsWith('\n') === false)
|
|
29
|
+
return;
|
|
30
|
+
try {
|
|
31
|
+
const response = JSON.parse(stdout.trim());
|
|
32
|
+
clearTimeout(timeout);
|
|
33
|
+
child.kill('SIGTERM');
|
|
34
|
+
resolve(response);
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
clearTimeout(timeout);
|
|
38
|
+
child.kill('SIGTERM');
|
|
39
|
+
reject(error);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
child.stderr.on('data', (chunk) => {
|
|
43
|
+
stderr += chunk;
|
|
44
|
+
});
|
|
45
|
+
child.on('error', (error) => {
|
|
46
|
+
clearTimeout(timeout);
|
|
47
|
+
reject(error);
|
|
48
|
+
});
|
|
49
|
+
child.stdin.write(`${JSON.stringify({
|
|
50
|
+
jsonrpc: '2.0',
|
|
51
|
+
id: 1,
|
|
52
|
+
method: 'initialize',
|
|
53
|
+
params: {
|
|
54
|
+
protocolVersion,
|
|
55
|
+
capabilities: {},
|
|
56
|
+
clientInfo: { name: 'livestore-mcp-protocol-test', version: '0.0.0' },
|
|
57
|
+
},
|
|
58
|
+
})}\n`);
|
|
59
|
+
});
|
|
60
|
+
//# sourceMappingURL=mcp-protocols.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-protocols.test.js","sourceRoot":"","sources":["../../src/commands/mcp-protocols.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio.test.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-stdio.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { Vitest } from '@livestore/utils-dev/node-vitest';
|
|
3
|
+
Vitest.describe('mcp server stdio', () => {
|
|
4
|
+
Vitest.it('reserves stdout for JSON-RPC messages', async () => {
|
|
5
|
+
const response = await initialize();
|
|
6
|
+
Vitest.expect(response.result?.protocolVersion).toBe('2025-06-18');
|
|
7
|
+
});
|
|
8
|
+
});
|
|
9
|
+
/** Exercises the real CLI entrypoint so root-level warnings and logs cannot corrupt MCP framing. */
|
|
10
|
+
const initialize = () => new Promise((resolve, reject) => {
|
|
11
|
+
const child = spawn('bun', [new URL('../bin.ts', import.meta.url).pathname, 'mcp', 'server'], {
|
|
12
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
13
|
+
});
|
|
14
|
+
let stdoutBuffer = '';
|
|
15
|
+
let stderr = '';
|
|
16
|
+
let settled = false;
|
|
17
|
+
const finish = (result) => {
|
|
18
|
+
if (settled === true)
|
|
19
|
+
return;
|
|
20
|
+
settled = true;
|
|
21
|
+
clearTimeout(timeout);
|
|
22
|
+
child.kill('SIGTERM');
|
|
23
|
+
if ('error' in result)
|
|
24
|
+
reject(result.error);
|
|
25
|
+
else
|
|
26
|
+
resolve(result.response);
|
|
27
|
+
};
|
|
28
|
+
const timeout = setTimeout(() => {
|
|
29
|
+
finish({ error: new Error(`MCP initialize timed out. stdout=${stdoutBuffer} stderr=${stderr}`) });
|
|
30
|
+
}, 5_000);
|
|
31
|
+
child.stdout.setEncoding('utf8');
|
|
32
|
+
child.stderr.setEncoding('utf8');
|
|
33
|
+
child.stdout.on('data', (chunk) => {
|
|
34
|
+
stdoutBuffer += chunk;
|
|
35
|
+
const lines = stdoutBuffer.split('\n');
|
|
36
|
+
stdoutBuffer = lines.pop() ?? '';
|
|
37
|
+
for (const line of lines) {
|
|
38
|
+
if (line.length === 0)
|
|
39
|
+
continue;
|
|
40
|
+
try {
|
|
41
|
+
const message = JSON.parse(line);
|
|
42
|
+
if (message.jsonrpc !== '2.0') {
|
|
43
|
+
finish({ error: new Error(`MCP stdout contained a non-JSON-RPC message: ${line}`) });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (message.id === 1) {
|
|
47
|
+
finish({ response: message });
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
finish({ error: new Error(`MCP stdout contained invalid JSON: ${line}`, { cause: error }) });
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
child.stderr.on('data', (chunk) => {
|
|
58
|
+
stderr += chunk;
|
|
59
|
+
});
|
|
60
|
+
child.on('error', (error) => {
|
|
61
|
+
finish({ error });
|
|
62
|
+
});
|
|
63
|
+
child.on('exit', (code) => {
|
|
64
|
+
if (settled === false) {
|
|
65
|
+
finish({ error: new Error(`MCP server exited before initialize completed (code ${code}). stderr=${stderr}`) });
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
child.stdin.write(`${JSON.stringify({
|
|
69
|
+
jsonrpc: '2.0',
|
|
70
|
+
id: 1,
|
|
71
|
+
method: 'initialize',
|
|
72
|
+
params: {
|
|
73
|
+
protocolVersion: '2025-06-18',
|
|
74
|
+
capabilities: {},
|
|
75
|
+
clientInfo: { name: 'livestore-mcp-stdio-test', version: '0.0.0' },
|
|
76
|
+
},
|
|
77
|
+
})}\n`);
|
|
78
|
+
});
|
|
79
|
+
//# sourceMappingURL=mcp-stdio.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-stdio.test.js","sourceRoot":"","sources":["../../src/commands/mcp-stdio.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type Toolkit } from '
|
|
1
|
+
import { type Toolkit } from 'effect/ai';
|
|
2
2
|
import { livestoreToolkit } from './mcp-tools-defs.ts';
|
|
3
3
|
type LivestoreToolHandlers = Toolkit.HandlersFrom<Toolkit.Tools<typeof livestoreToolkit>>;
|
|
4
4
|
export declare const toolHandlers: LivestoreToolHandlers;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-handlers.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"mcp-tool-handlers.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAA;AAYxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAKtD,KAAK,qBAAqB,GAAG,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC,CAAA;AAEzF,eAAO,MAAM,YAAY,EAAE,qBA4LzB,CAAA"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
import {} from 'effect/ai';
|
|
1
2
|
import { Effect, FetchHttpClient, Layer } from '@livestore/utils/effect';
|
|
2
3
|
import { PlatformNode } from '@livestore/utils/node';
|
|
3
|
-
import { blogSchemaContent } from
|
|
4
|
-
import { ecommerceSchemaContent } from
|
|
5
|
-
import { socialSchemaContent } from
|
|
6
|
-
import { todoSchemaContent } from
|
|
7
|
-
import * as Runtime from
|
|
8
|
-
import * as SyncOps from
|
|
9
|
-
import { coachToolHandler } from
|
|
10
|
-
import { livestoreToolkit } from
|
|
4
|
+
import { blogSchemaContent } from '../mcp-content/schemas/blog.js';
|
|
5
|
+
import { ecommerceSchemaContent } from '../mcp-content/schemas/ecommerce.js';
|
|
6
|
+
import { socialSchemaContent } from '../mcp-content/schemas/social.js';
|
|
7
|
+
import { todoSchemaContent } from '../mcp-content/schemas/todo.js';
|
|
8
|
+
import * as Runtime from '../mcp-runtime/runtime.js';
|
|
9
|
+
import * as SyncOps from '../sync-operations.js';
|
|
10
|
+
import { coachToolHandler } from './mcp-coach.js';
|
|
11
|
+
import { livestoreToolkit } from './mcp-tools-defs.js';
|
|
11
12
|
/** Layer providing FileSystem and HttpClient for sync operations */
|
|
12
13
|
const SyncOpsLayer = Layer.mergeAll(PlatformNode.NodeFileSystem.layer, FetchHttpClient.layer);
|
|
13
14
|
export const toolHandlers = livestoreToolkit.of({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tool-handlers.js","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"mcp-tool-handlers.js","sourceRoot":"","sources":["../../src/commands/mcp-tool-handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,132 +1,133 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Tool, Toolkit } from 'effect/ai';
|
|
2
|
+
import { Schema } from '@livestore/utils/effect';
|
|
2
3
|
export declare const livestoreToolkit: Toolkit.Toolkit<{
|
|
3
4
|
readonly livestore_coach: Tool.Tool<"livestore_coach", {
|
|
4
5
|
readonly parameters: Schema.Struct<{
|
|
5
|
-
code: Schema.
|
|
6
|
-
codeType: Schema.optional<Schema.
|
|
6
|
+
readonly code: Schema.String;
|
|
7
|
+
readonly codeType: Schema.optional<Schema.String>;
|
|
7
8
|
}>;
|
|
8
9
|
readonly success: Schema.Struct<{
|
|
9
|
-
feedback: Schema.
|
|
10
|
-
score: Schema.optional<Schema.
|
|
11
|
-
suggestions: Schema
|
|
10
|
+
readonly feedback: Schema.String;
|
|
11
|
+
readonly score: Schema.optional<Schema.Finite>;
|
|
12
|
+
readonly suggestions: Schema.$Array<Schema.String>;
|
|
12
13
|
}>;
|
|
13
|
-
readonly failure:
|
|
14
|
+
readonly failure: typeof import("effect/ai/AiError").AiError;
|
|
14
15
|
readonly failureMode: "error";
|
|
15
16
|
}, never>;
|
|
16
17
|
readonly livestore_generate_schema: Tool.Tool<"livestore_generate_schema", {
|
|
17
18
|
readonly parameters: Schema.Struct<{
|
|
18
|
-
schemaType: Schema.
|
|
19
|
-
customDescription: Schema.optional<Schema.
|
|
19
|
+
readonly schemaType: Schema.String;
|
|
20
|
+
readonly customDescription: Schema.optional<Schema.String>;
|
|
20
21
|
}>;
|
|
21
22
|
readonly success: Schema.Struct<{
|
|
22
|
-
schemaCode: Schema.
|
|
23
|
-
explanation: Schema.
|
|
23
|
+
readonly schemaCode: Schema.String;
|
|
24
|
+
readonly explanation: Schema.String;
|
|
24
25
|
}>;
|
|
25
|
-
readonly failure:
|
|
26
|
+
readonly failure: Schema.Never;
|
|
26
27
|
readonly failureMode: "error";
|
|
27
28
|
}, never>;
|
|
28
29
|
readonly livestore_get_example_schema: Tool.Tool<"livestore_get_example_schema", {
|
|
29
30
|
readonly parameters: Schema.Struct<{
|
|
30
|
-
type: Schema.
|
|
31
|
+
readonly type: Schema.String;
|
|
31
32
|
}>;
|
|
32
33
|
readonly success: Schema.Struct<{
|
|
33
|
-
schemaCode: Schema.
|
|
34
|
-
description: Schema.
|
|
34
|
+
readonly schemaCode: Schema.String;
|
|
35
|
+
readonly description: Schema.String;
|
|
35
36
|
}>;
|
|
36
|
-
readonly failure:
|
|
37
|
+
readonly failure: Schema.Never;
|
|
37
38
|
readonly failureMode: "error";
|
|
38
39
|
}, never>;
|
|
39
|
-
readonly
|
|
40
|
+
readonly livestore_instance_commit_events: Tool.Tool<"livestore_instance_commit_events", {
|
|
40
41
|
readonly parameters: Schema.Struct<{
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
readonly events: Schema.$Array<Schema.Struct<{
|
|
43
|
+
readonly name: Schema.String;
|
|
44
|
+
readonly args: Schema.Codec<Schema.Json, Schema.Json, never, never>;
|
|
45
|
+
}>>;
|
|
45
46
|
}>;
|
|
46
47
|
readonly success: Schema.Struct<{
|
|
47
|
-
|
|
48
|
-
clientId: typeof Schema.String;
|
|
49
|
-
sessionId: typeof Schema.String;
|
|
50
|
-
schemaInfo: Schema.Struct<{
|
|
51
|
-
tableNames: Schema.Array$<typeof Schema.String>;
|
|
52
|
-
eventNames: Schema.Array$<typeof Schema.String>;
|
|
53
|
-
}>;
|
|
48
|
+
readonly committed: Schema.Finite;
|
|
54
49
|
}>;
|
|
55
|
-
readonly failure:
|
|
50
|
+
readonly failure: Schema.Never;
|
|
56
51
|
readonly failureMode: "error";
|
|
57
52
|
}, never>;
|
|
58
|
-
readonly
|
|
53
|
+
readonly livestore_instance_connect: Tool.Tool<"livestore_instance_connect", {
|
|
59
54
|
readonly parameters: Schema.Struct<{
|
|
60
|
-
|
|
61
|
-
|
|
55
|
+
readonly configPath: Schema.String;
|
|
56
|
+
readonly storeId: Schema.String;
|
|
57
|
+
readonly clientId: Schema.optional<Schema.String>;
|
|
58
|
+
readonly sessionId: Schema.optional<Schema.String>;
|
|
62
59
|
}>;
|
|
63
60
|
readonly success: Schema.Struct<{
|
|
64
|
-
|
|
65
|
-
|
|
61
|
+
readonly storeId: Schema.String;
|
|
62
|
+
readonly clientId: Schema.String;
|
|
63
|
+
readonly sessionId: Schema.String;
|
|
64
|
+
readonly schemaInfo: Schema.Struct<{
|
|
65
|
+
readonly tableNames: Schema.$Array<Schema.String>;
|
|
66
|
+
readonly eventNames: Schema.$Array<Schema.String>;
|
|
67
|
+
}>;
|
|
66
68
|
}>;
|
|
67
|
-
readonly failure:
|
|
69
|
+
readonly failure: Schema.Never;
|
|
68
70
|
readonly failureMode: "error";
|
|
69
71
|
}, never>;
|
|
70
|
-
readonly
|
|
72
|
+
readonly livestore_instance_disconnect: Tool.Tool<"livestore_instance_disconnect", {
|
|
73
|
+
readonly parameters: Tool.EmptyParams;
|
|
74
|
+
readonly success: Schema.TaggedStruct<"disconnected", {}>;
|
|
75
|
+
readonly failure: Schema.Never;
|
|
76
|
+
readonly failureMode: "error";
|
|
77
|
+
}, never>;
|
|
78
|
+
readonly livestore_instance_query: Tool.Tool<"livestore_instance_query", {
|
|
71
79
|
readonly parameters: Schema.Struct<{
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
args: Schema.Schema<Schema.JsonValue, Schema.JsonValue, never>;
|
|
75
|
-
}>>;
|
|
80
|
+
readonly sql: Schema.String;
|
|
81
|
+
readonly bindValues: Schema.Union<readonly [Schema.$Array<Schema.Codec<Schema.Json, Schema.Json, never, never>>, Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>]>;
|
|
76
82
|
}>;
|
|
77
83
|
readonly success: Schema.Struct<{
|
|
78
|
-
|
|
84
|
+
readonly rows: Schema.$Array<Schema.$Record<Schema.String, Schema.Codec<Schema.Json, Schema.Json, never, never>>>;
|
|
85
|
+
readonly rowCount: Schema.Finite;
|
|
79
86
|
}>;
|
|
80
|
-
readonly failure:
|
|
87
|
+
readonly failure: Schema.Never;
|
|
81
88
|
readonly failureMode: "error";
|
|
82
89
|
}, never>;
|
|
83
90
|
readonly livestore_instance_status: Tool.Tool<"livestore_instance_status", {
|
|
84
|
-
readonly parameters:
|
|
85
|
-
readonly success: Schema.Union<[Schema.TaggedStruct<"connected", {
|
|
86
|
-
storeId:
|
|
87
|
-
clientId:
|
|
88
|
-
sessionId:
|
|
89
|
-
tableCounts: Schema
|
|
91
|
+
readonly parameters: Tool.EmptyParams;
|
|
92
|
+
readonly success: Schema.Union<readonly [Schema.TaggedStruct<"connected", {
|
|
93
|
+
readonly storeId: Schema.String;
|
|
94
|
+
readonly clientId: Schema.String;
|
|
95
|
+
readonly sessionId: Schema.String;
|
|
96
|
+
readonly tableCounts: Schema.$Record<Schema.String, Schema.Finite>;
|
|
90
97
|
}>, Schema.TaggedStruct<"disconnected", {}>]>;
|
|
91
|
-
readonly failure:
|
|
92
|
-
readonly failureMode: "error";
|
|
93
|
-
}, never>;
|
|
94
|
-
readonly livestore_instance_disconnect: Tool.Tool<"livestore_instance_disconnect", {
|
|
95
|
-
readonly parameters: Schema.Struct<{}>;
|
|
96
|
-
readonly success: Schema.TaggedStruct<"disconnected", {}>;
|
|
97
|
-
readonly failure: typeof Schema.Never;
|
|
98
|
+
readonly failure: Schema.Never;
|
|
98
99
|
readonly failureMode: "error";
|
|
99
100
|
}, never>;
|
|
100
101
|
readonly livestore_sync_export: Tool.Tool<"livestore_sync_export", {
|
|
101
102
|
readonly parameters: Schema.Struct<{
|
|
102
|
-
configPath: Schema.
|
|
103
|
-
storeId: Schema.
|
|
104
|
-
clientId: Schema.optional<Schema.
|
|
103
|
+
readonly configPath: Schema.String;
|
|
104
|
+
readonly storeId: Schema.String;
|
|
105
|
+
readonly clientId: Schema.optional<Schema.String>;
|
|
105
106
|
}>;
|
|
106
107
|
readonly success: Schema.Struct<{
|
|
107
|
-
storeId:
|
|
108
|
-
eventCount:
|
|
109
|
-
exportedAt:
|
|
110
|
-
data: Schema.
|
|
108
|
+
readonly storeId: Schema.String;
|
|
109
|
+
readonly eventCount: Schema.Finite;
|
|
110
|
+
readonly exportedAt: Schema.String;
|
|
111
|
+
readonly data: Schema.Codec<Schema.Json, Schema.Json, never, never>;
|
|
111
112
|
}>;
|
|
112
|
-
readonly failure:
|
|
113
|
+
readonly failure: Schema.Never;
|
|
113
114
|
readonly failureMode: "error";
|
|
114
115
|
}, never>;
|
|
115
116
|
readonly livestore_sync_import: Tool.Tool<"livestore_sync_import", {
|
|
116
117
|
readonly parameters: Schema.Struct<{
|
|
117
|
-
configPath: Schema.
|
|
118
|
-
storeId: Schema.
|
|
119
|
-
clientId: Schema.optional<Schema.
|
|
120
|
-
data: Schema.
|
|
121
|
-
force: Schema.optional<Schema.
|
|
122
|
-
dryRun: Schema.optional<Schema.
|
|
118
|
+
readonly configPath: Schema.String;
|
|
119
|
+
readonly storeId: Schema.String;
|
|
120
|
+
readonly clientId: Schema.optional<Schema.String>;
|
|
121
|
+
readonly data: Schema.Codec<Schema.Json, Schema.Json, never, never>;
|
|
122
|
+
readonly force: Schema.optional<Schema.Boolean>;
|
|
123
|
+
readonly dryRun: Schema.optional<Schema.Boolean>;
|
|
123
124
|
}>;
|
|
124
125
|
readonly success: Schema.Struct<{
|
|
125
|
-
storeId:
|
|
126
|
-
eventCount:
|
|
127
|
-
dryRun:
|
|
126
|
+
readonly storeId: Schema.String;
|
|
127
|
+
readonly eventCount: Schema.Finite;
|
|
128
|
+
readonly dryRun: Schema.Boolean;
|
|
128
129
|
}>;
|
|
129
|
-
readonly failure:
|
|
130
|
+
readonly failure: Schema.Never;
|
|
130
131
|
readonly failureMode: "error";
|
|
131
132
|
}, never>;
|
|
132
133
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-tools-defs.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp-tools-defs.d.ts","sourceRoot":"","sources":["../../src/commands/mcp-tools-defs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAIhD,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyT5B,CAAA"}
|