@intlayer/mcp 9.7.0 → 9.7.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/esm/client/client.mjs +2 -3
- package/dist/esm/client/sse.mjs +1 -2
- package/dist/esm/server/server.mjs +5 -6
- package/dist/esm/server/sse.mjs +1 -2
- package/dist/esm/server/stdio.mjs +1 -2
- package/dist/esm/tools/api.mjs +2 -3
- package/dist/esm/tools/cli.mjs +2 -4
- package/dist/esm/tools/cli.mjs.map +1 -1
- package/dist/esm/tools/docs.mjs +2 -3
- package/dist/esm/tools/index.mjs +2 -2
- package/dist/esm/tools/installLSP.mjs +1 -2
- package/dist/esm/tools/installSkills.mjs +1 -2
- package/dist/types/client/client.d.ts +0 -2
- package/dist/types/client/client.d.ts.map +1 -1
- package/dist/types/server/server.d.ts +1 -2
- package/dist/types/server/server.d.ts.map +1 -1
- package/dist/types/tools/api.d.ts +1 -2
- package/dist/types/tools/api.d.ts.map +1 -1
- package/dist/types/tools/cli.d.ts +1 -2
- package/dist/types/tools/cli.d.ts.map +1 -1
- package/dist/types/tools/docs.d.ts +1 -2
- package/dist/types/tools/docs.d.ts.map +1 -1
- package/dist/types/tools/index.d.ts +1 -1
- package/dist/types/tools/installLSP.d.ts +0 -2
- package/dist/types/tools/installLSP.d.ts.map +1 -1
- package/dist/types/tools/installSkills.d.ts +0 -2
- package/dist/types/tools/installSkills.d.ts.map +1 -1
- package/package.json +16 -16
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { dirname as dirname$1 } from "node:path";
|
|
2
2
|
import { fileURLToPath } from "node:url";
|
|
3
|
-
import { createMCPClient } from "@ai-sdk/mcp";
|
|
4
3
|
import { isESModule } from "@intlayer/config/utils";
|
|
4
|
+
import { createMCPClient } from "@ai-sdk/mcp";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/client/client.ts
|
|
7
7
|
const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
|
|
8
8
|
const loadMCPTools = async (serverURL) => {
|
|
9
9
|
const client = await createMCPClient({ transport: {
|
|
@@ -16,6 +16,5 @@ const loadMCPTools = async (serverURL) => {
|
|
|
16
16
|
};
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
//#endregion
|
|
20
19
|
export { dirname, loadMCPTools };
|
|
21
20
|
//# sourceMappingURL=client.mjs.map
|
package/dist/esm/client/sse.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createMCPClient } from "@ai-sdk/mcp";
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
// src/client/sse.ts
|
|
4
4
|
const main = async () => {
|
|
5
5
|
const mcpServerURL = process.env.MCP_SERVER_URL ?? "http://localhost:3000/";
|
|
6
6
|
console.info(`Connecting to server - ${mcpServerURL}`);
|
|
@@ -25,5 +25,4 @@ const main = async () => {
|
|
|
25
25
|
};
|
|
26
26
|
main();
|
|
27
27
|
|
|
28
|
-
//#endregion
|
|
29
28
|
//# sourceMappingURL=sse.mjs.map
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { loadDocsTools } from "../tools/docs.mjs";
|
|
2
|
-
import { loadCLITools } from "../tools/cli.mjs";
|
|
3
1
|
import { loadAPITools } from "../tools/api.mjs";
|
|
2
|
+
import { loadCLITools } from "../tools/cli.mjs";
|
|
3
|
+
import { loadDocsTools } from "../tools/docs.mjs";
|
|
4
4
|
import { loadInstallLSPTool } from "../tools/installLSP.mjs";
|
|
5
5
|
import { loadInstallSkillsTool } from "../tools/installSkills.mjs";
|
|
6
|
-
import {
|
|
6
|
+
import { readFileSync } from "node:fs";
|
|
7
7
|
import { dirname as dirname$1, resolve } from "node:path";
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
9
|
import { isESModule } from "@intlayer/config/utils";
|
|
10
|
-
import {
|
|
10
|
+
import { z } from "zod/mini";
|
|
11
11
|
|
|
12
|
-
|
|
12
|
+
// src/server/server.ts
|
|
13
13
|
const dirname = isESModule ? dirname$1(fileURLToPath(import.meta.url)) : __dirname;
|
|
14
14
|
const packageJson = JSON.parse(readFileSync(resolve(dirname, "../../../package.json"), "utf8"));
|
|
15
15
|
var McpServer = class {
|
|
@@ -142,6 +142,5 @@ const loadServer = ({ isLocal }) => {
|
|
|
142
142
|
return server;
|
|
143
143
|
};
|
|
144
144
|
|
|
145
|
-
//#endregion
|
|
146
145
|
export { McpServer, dirname, loadServer };
|
|
147
146
|
//# sourceMappingURL=server.mjs.map
|
package/dist/esm/server/sse.mjs
CHANGED
|
@@ -6,7 +6,7 @@ import fastifyHelmet from "@fastify/helmet";
|
|
|
6
6
|
import dotenv from "dotenv";
|
|
7
7
|
import Fastify from "fastify";
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
// src/server/sse.ts
|
|
10
10
|
const startServer = async () => {
|
|
11
11
|
const app = Fastify();
|
|
12
12
|
const env = process.env.NODE_ENV || "development";
|
|
@@ -83,5 +83,4 @@ const startServer = async () => {
|
|
|
83
83
|
};
|
|
84
84
|
startServer();
|
|
85
85
|
|
|
86
|
-
//#endregion
|
|
87
86
|
//# sourceMappingURL=sse.mjs.map
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { loadServer } from "./server.mjs";
|
|
3
3
|
import * as readline from "node:readline";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/server/stdio.ts
|
|
6
6
|
var StdioTransport = class {
|
|
7
7
|
async start(server) {
|
|
8
8
|
const rl = readline.createInterface({
|
|
@@ -46,5 +46,4 @@ main().catch((error) => {
|
|
|
46
46
|
process.exit(1);
|
|
47
47
|
});
|
|
48
48
|
|
|
49
|
-
//#endregion
|
|
50
49
|
//# sourceMappingURL=stdio.mjs.map
|
package/dist/esm/tools/api.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { getIntlayerAPI } from "@intlayer/api";
|
|
2
1
|
import { z } from "zod/mini";
|
|
2
|
+
import { getIntlayerAPI } from "@intlayer/api";
|
|
3
3
|
import { editor } from "@intlayer/config/built";
|
|
4
4
|
import { getEditorClientSecret } from "@intlayer/config/secrets";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/api.ts
|
|
7
7
|
const authSchema = {
|
|
8
8
|
clientId: z.optional(z.string()).register(z.globalRegistry, { description: "Intlayer OAuth2 client ID (access key). Falls back to INTLAYER_CLIENT_ID env var." }),
|
|
9
9
|
clientSecret: z.optional(z.string()).register(z.globalRegistry, { description: "Intlayer OAuth2 client secret. Falls back to INTLAYER_CLIENT_SECRET env var." })
|
|
@@ -448,6 +448,5 @@ const loadAPITools = (server) => {
|
|
|
448
448
|
});
|
|
449
449
|
};
|
|
450
450
|
|
|
451
|
-
//#endregion
|
|
452
451
|
export { loadAPITools };
|
|
453
452
|
//# sourceMappingURL=api.mjs.map
|
package/dist/esm/tools/cli.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { z } from "zod/mini";
|
|
2
1
|
import { relative } from "node:path";
|
|
2
|
+
import { z } from "zod/mini";
|
|
3
3
|
import { build, extract, fill, init, listContentDeclarationRows, listMissingTranslations, pull, push } from "@intlayer/cli";
|
|
4
4
|
import { listProjects } from "@intlayer/engine/cli";
|
|
5
5
|
import { scanWebsite } from "@intlayer/engine/scan";
|
|
6
6
|
import { ALL_LOCALES } from "@intlayer/types/allLocales";
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
// src/tools/cli.ts
|
|
9
9
|
const configOptionsSchema = z.optional(z.object({
|
|
10
10
|
baseDir: z.optional(z.string()).register(z.globalRegistry, { description: "Base directory for the project" }),
|
|
11
11
|
env: z.optional(z.string()).register(z.globalRegistry, { description: "Environment name" }),
|
|
@@ -266,7 +266,6 @@ const loadCLITools = async (server) => {
|
|
|
266
266
|
description: "Extract strings from an existing component to be placed in a .content file close to the component. Trigger this action to make an existing component multilingual. If the component does not exist, create a normal component including text in JSX, and then trigger this tool to extract it.",
|
|
267
267
|
inputSchema: {
|
|
268
268
|
file: z.optional(z.union([z.string(), z.array(z.string())])).register(z.globalRegistry, { description: "List of files to extract" }),
|
|
269
|
-
outputContentDeclarations: z.optional(z.string()).register(z.globalRegistry, { description: "Path to output content declaration files" }),
|
|
270
269
|
configOptions: configOptionsSchema
|
|
271
270
|
},
|
|
272
271
|
annotations: { destructiveHint: true }
|
|
@@ -346,6 +345,5 @@ const loadCLITools = async (server) => {
|
|
|
346
345
|
});
|
|
347
346
|
};
|
|
348
347
|
|
|
349
|
-
//#endregion
|
|
350
348
|
export { loadCLITools };
|
|
351
349
|
//# sourceMappingURL=cli.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.mjs","names":[],"sources":["../../../src/tools/cli.ts"],"sourcesContent":["import { relative } from 'node:path';\nimport {\n build,\n extract,\n fill,\n init,\n listContentDeclarationRows,\n listMissingTranslations,\n pull,\n push,\n} from '@intlayer/cli';\nimport { listProjects } from '@intlayer/engine/cli';\nimport { scanWebsite } from '@intlayer/engine/scan';\nimport { ALL_LOCALES } from '@intlayer/types/allLocales';\nimport { z } from 'zod/mini';\nimport type { McpServer } from './docs';\n\nconst configOptionsSchema = z\n .optional(\n z.object({\n baseDir: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Base directory for the project',\n }),\n env: z\n .optional(z.string())\n .register(z.globalRegistry, { description: 'Environment name' }),\n envFile: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Path to the environment file',\n }),\n override: z\n .optional(\n z.object({\n editor: z.optional(\n z.object({\n clientId: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Intlayer CMS client ID',\n }),\n clientSecret: z\n .optional(z.string())\n .register(z.globalRegistry, {\n description: 'Intlayer CMS client secret',\n }),\n backendURL: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Intlayer CMS backend URL',\n }),\n })\n ),\n internationalization: z.optional(\n z.object({\n locales: z\n .optional(z.array(z.enum(ALL_LOCALES)))\n .register(z.globalRegistry, {\n description: 'Available locales',\n }),\n defaultLocale: z\n .optional(z.enum(ALL_LOCALES))\n .register(z.globalRegistry, {\n description: 'Default locale',\n }),\n })\n ),\n log: z.optional(\n z.object({\n mode: z\n .optional(z.enum(['default', 'verbose', 'disabled']))\n .register(z.globalRegistry, { description: 'Log mode' }),\n prefix: z\n .optional(z.string())\n .register(z.globalRegistry, { description: 'Log prefix' }),\n })\n ),\n })\n )\n .register(z.globalRegistry, {\n description:\n 'Config override - use when running remotely or without a local config file',\n }),\n })\n )\n .register(z.globalRegistry, {\n description:\n 'Configuration options. Required when running remotely or when no intlayer config file is present',\n });\n\ntype LoadCLITools = (server: McpServer) => Promise<void>;\n\nexport const loadCLITools: LoadCLITools = async (server) => {\n server.registerTool(\n 'intlayer-init',\n {\n title: 'Initialize Intlayer',\n description:\n 'Initialize Intlayer in the project: install the Intlayer packages and set up the framework (config, bundler plugin, middleware, providers). Other setup steps run through the `intlayer init <step>` CLI commands (github-actions, skills, mcp, vscode-extension, lsp, eslint)',\n inputSchema: {\n projectRoot: z.string().register(z.globalRegistry, {\n description: 'Project root directory',\n }),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ projectRoot }) => {\n try {\n await init(projectRoot);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Initialization successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Initialization failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-build',\n {\n title: 'Build Dictionaries',\n description:\n 'Build the dictionaries. List all content declarations files `.content.{ts,tsx,js,json,...}` to update the content callable using the `useIntlayer` hook.',\n inputSchema: {\n watch: z\n .optional(z.boolean())\n .register(z.globalRegistry, { description: 'Watch for changes' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ watch, configOptions }) => {\n try {\n await build({ watch, configOptions });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-fill',\n {\n title: 'Fill Translations',\n description:\n 'Fill the dictionaries with missing translations / review translations using Intlayer servers',\n inputSchema: {\n sourceLocale: z\n .optional(z.enum(ALL_LOCALES))\n .register(z.globalRegistry, { description: 'Source locale' }),\n outputLocales: z\n .optional(\n z.union([z.enum(ALL_LOCALES), z.array(z.enum(ALL_LOCALES))])\n )\n .register(z.globalRegistry, { description: 'Output locales' }),\n file: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'File path' }),\n mode: z\n .optional(z.enum(['complete', 'review']))\n .register(z.globalRegistry, { description: 'Fill mode' }),\n keys: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Keys to include' }),\n excludedKeys: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Keys to exclude' }),\n pathFilter: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Path filter' }),\n gitOptions: z\n .optional(\n z.object({\n gitDiff: z.optional(z.boolean()),\n gitDiffBase: z.optional(z.string()),\n gitDiffCurrent: z.optional(z.string()),\n uncommitted: z.optional(z.boolean()),\n unpushed: z.optional(z.boolean()),\n untracked: z.optional(z.boolean()),\n })\n )\n .register(z.globalRegistry, { description: 'Git options' }),\n aiOptions: z\n .optional(\n z.object({\n provider: z.optional(z.string()),\n temperature: z.optional(z.number()),\n model: z.optional(z.string()),\n apiKey: z.optional(z.string()),\n customPrompt: z.optional(z.string()),\n applicationContext: z.optional(z.string()),\n })\n )\n .register(z.globalRegistry, { description: 'AI options' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const fillOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n fillOptions.gitOptions = { ...restGit, mode };\n }\n\n const fillResult = await fill(fillOptions);\n\n if (fillResult.status !== 'completed') {\n return {\n content: [\n {\n type: 'text',\n text:\n fillResult.status === 'no-ai-access'\n ? `Fill skipped: no AI access. ${fillResult.error ?? 'Run \"intlayer login\" or configure an AI API key.'}`\n : 'Fill skipped: no dictionary matched the filters.',\n },\n ],\n isError: true,\n };\n }\n\n const failedCount = fillResult.taskCount - fillResult.writtenCount;\n\n return {\n content: [\n {\n type: 'text',\n text: `Fill completed for ${fillResult.dictionaryKeys.join(', ')}: ${fillResult.writtenCount}/${fillResult.taskCount} translation(s) written${failedCount > 0 ? `, ${failedCount} failed` : ''}.`,\n },\n ],\n isError: failedCount > 0,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Fill failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-push',\n {\n title: 'Push Dictionaries',\n description: 'Push local dictionaries to the server',\n inputSchema: {\n deleteLocaleDictionary: z\n .optional(z.boolean())\n .register(z.globalRegistry, {\n description: 'Delete local dictionary after push',\n }),\n keepLocaleDictionary: z\n .optional(z.boolean())\n .register(z.globalRegistry, {\n description: 'Keep local dictionary after push',\n }),\n dictionaries: z\n .optional(z.array(z.string()))\n .register(z.globalRegistry, {\n description: 'List of dictionaries to push',\n }),\n gitOptions: z\n .optional(\n z.object({\n gitDiff: z.optional(z.boolean()),\n gitDiffBase: z.optional(z.string()),\n gitDiffCurrent: z.optional(z.string()),\n uncommitted: z.optional(z.boolean()),\n unpushed: z.optional(z.boolean()),\n untracked: z.optional(z.boolean()),\n })\n )\n .register(z.globalRegistry, { description: 'Git options' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const pushOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n pushOptions.gitOptions = { ...restGit, mode };\n }\n\n await push(pushOptions);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Push successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Push failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-pull',\n {\n title: 'Pull Dictionaries',\n description: 'Pull dictionaries from the CMS',\n inputSchema: {\n dictionaries: z\n .optional(z.array(z.string()))\n .register(z.globalRegistry, {\n description: 'List of dictionaries to pull',\n }),\n newDictionariesPath: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Path to save new dictionaries',\n }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n await pull(props);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Pull successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Pull failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-content-list',\n {\n title: 'List Content Declarations',\n description:\n 'List the content declaration (.content.{ts,tsx,js,json,...}) files present in the project. That files contain the multilingual content of the application and are used to build the dictionaries.',\n inputSchema: {\n configOptions: configOptionsSchema,\n absolute: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Output the results as absolute paths instead of relative paths',\n }),\n json: z.optional(z.boolean()).register(z.globalRegistry, {\n description: 'Output the results as JSON instead of formatted text',\n }),\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const rows = listContentDeclarationRows(props);\n return {\n content: [\n {\n type: 'text',\n text: props.json\n ? JSON.stringify(rows)\n : JSON.stringify(rows, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content list failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-content-test',\n {\n title: 'Test Translations',\n description:\n 'Test if there are missing translations in the content declaration files. That files contain the multilingual content of the application and are used to build the dictionaries.',\n inputSchema: {\n configOptions: configOptionsSchema,\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const missingTranslations = listMissingTranslations(\n props?.configOptions\n );\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(missingTranslations, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content test failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-extract',\n {\n title: 'Extract strings from Component',\n description:\n 'Extract strings from an existing component to be placed in a .content file close to the component. Trigger this action to make an existing component multilingual. If the component does not exist, create a normal component including text in JSX, and then trigger this tool to extract it.',\n inputSchema: {\n file: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, {\n description: 'List of files to extract',\n }),\n outputContentDeclarations: z\n .optional(z.string())\n .register(z.globalRegistry, {\n description: 'Path to output content declaration files',\n }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n await extract({\n files: Array.isArray(props.file)\n ? props.file\n : props.file\n ? [props.file]\n : undefined,\n configOptions: props.configOptions,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Extract successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Extract failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-scan',\n {\n title: 'Scan Website',\n description:\n 'Scan a website to measure its page size and audit its i18n / SEO health (html lang/dir, canonical, hreflang, x-default, localized internal links, robots.txt, sitemap.xml, and unused bundle locale content). Returns a 0-100 score and per-check results.',\n inputSchema: {\n url: z.string().register(z.globalRegistry, {\n description: 'Absolute URL of the website to scan',\n }),\n deep: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Attempt a deeper render-based scan using a locally installed puppeteer. Falls back to a basic fetch scan when puppeteer is not installed.',\n }),\n },\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n async ({ url, deep }) => {\n try {\n const result = await scanWebsite(url, { deep });\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Scan failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-projects-list',\n {\n title: 'List Projects',\n description:\n 'List all Intlayer projects in the directory. Search for configuration files to find all Intlayer projects.',\n inputSchema: {\n baseDir: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Base directory to search from',\n }),\n gitRoot: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Search from the git root directory instead of the base directory',\n }),\n absolute: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Output the results as absolute paths instead of relative paths',\n }),\n json: z.optional(z.boolean()).register(z.globalRegistry, {\n description: 'Output the results as JSON instead of formatted text',\n }),\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const { searchDir, projectsPath } = await listProjects({\n baseDir: props.baseDir,\n gitRoot: props.gitRoot,\n });\n\n const projectsRelativePath = projectsPath\n .map((projectPath) =>\n props.absolute ? projectPath : relative(searchDir, projectPath)\n )\n .map((projectPath) => (projectPath === '' ? '.' : projectPath));\n\n const outputPaths = props.absolute\n ? projectsPath\n : projectsRelativePath;\n\n return {\n content: [\n {\n type: 'text',\n text: props.json\n ? JSON.stringify(outputPaths)\n : JSON.stringify(\n { searchDir, projectsPath: outputPaths },\n null,\n 2\n ),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Projects list failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.mjs","names":[],"sources":["../../../src/tools/cli.ts"],"sourcesContent":["import { relative } from 'node:path';\nimport {\n build,\n extract,\n fill,\n init,\n listContentDeclarationRows,\n listMissingTranslations,\n pull,\n push,\n} from '@intlayer/cli';\nimport { listProjects } from '@intlayer/engine/cli';\nimport { scanWebsite } from '@intlayer/engine/scan';\nimport { ALL_LOCALES } from '@intlayer/types/allLocales';\nimport { z } from 'zod/mini';\nimport type { McpServer } from './docs';\n\nconst configOptionsSchema = z\n .optional(\n z.object({\n baseDir: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Base directory for the project',\n }),\n env: z\n .optional(z.string())\n .register(z.globalRegistry, { description: 'Environment name' }),\n envFile: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Path to the environment file',\n }),\n override: z\n .optional(\n z.object({\n editor: z.optional(\n z.object({\n clientId: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Intlayer CMS client ID',\n }),\n clientSecret: z\n .optional(z.string())\n .register(z.globalRegistry, {\n description: 'Intlayer CMS client secret',\n }),\n backendURL: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Intlayer CMS backend URL',\n }),\n })\n ),\n internationalization: z.optional(\n z.object({\n locales: z\n .optional(z.array(z.enum(ALL_LOCALES)))\n .register(z.globalRegistry, {\n description: 'Available locales',\n }),\n defaultLocale: z\n .optional(z.enum(ALL_LOCALES))\n .register(z.globalRegistry, {\n description: 'Default locale',\n }),\n })\n ),\n log: z.optional(\n z.object({\n mode: z\n .optional(z.enum(['default', 'verbose', 'disabled']))\n .register(z.globalRegistry, { description: 'Log mode' }),\n prefix: z\n .optional(z.string())\n .register(z.globalRegistry, { description: 'Log prefix' }),\n })\n ),\n })\n )\n .register(z.globalRegistry, {\n description:\n 'Config override - use when running remotely or without a local config file',\n }),\n })\n )\n .register(z.globalRegistry, {\n description:\n 'Configuration options. Required when running remotely or when no intlayer config file is present',\n });\n\ntype LoadCLITools = (server: McpServer) => Promise<void>;\n\nexport const loadCLITools: LoadCLITools = async (server) => {\n server.registerTool(\n 'intlayer-init',\n {\n title: 'Initialize Intlayer',\n description:\n 'Initialize Intlayer in the project: install the Intlayer packages and set up the framework (config, bundler plugin, middleware, providers). Other setup steps run through the `intlayer init <step>` CLI commands (github-actions, skills, mcp, vscode-extension, lsp, eslint)',\n inputSchema: {\n projectRoot: z.string().register(z.globalRegistry, {\n description: 'Project root directory',\n }),\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ projectRoot }) => {\n try {\n await init(projectRoot);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Initialization successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Initialization failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-build',\n {\n title: 'Build Dictionaries',\n description:\n 'Build the dictionaries. List all content declarations files `.content.{ts,tsx,js,json,...}` to update the content callable using the `useIntlayer` hook.',\n inputSchema: {\n watch: z\n .optional(z.boolean())\n .register(z.globalRegistry, { description: 'Watch for changes' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async ({ watch, configOptions }) => {\n try {\n await build({ watch, configOptions });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Build successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Build failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-fill',\n {\n title: 'Fill Translations',\n description:\n 'Fill the dictionaries with missing translations / review translations using Intlayer servers',\n inputSchema: {\n sourceLocale: z\n .optional(z.enum(ALL_LOCALES))\n .register(z.globalRegistry, { description: 'Source locale' }),\n outputLocales: z\n .optional(\n z.union([z.enum(ALL_LOCALES), z.array(z.enum(ALL_LOCALES))])\n )\n .register(z.globalRegistry, { description: 'Output locales' }),\n file: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'File path' }),\n mode: z\n .optional(z.enum(['complete', 'review']))\n .register(z.globalRegistry, { description: 'Fill mode' }),\n keys: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Keys to include' }),\n excludedKeys: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Keys to exclude' }),\n pathFilter: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, { description: 'Path filter' }),\n gitOptions: z\n .optional(\n z.object({\n gitDiff: z.optional(z.boolean()),\n gitDiffBase: z.optional(z.string()),\n gitDiffCurrent: z.optional(z.string()),\n uncommitted: z.optional(z.boolean()),\n unpushed: z.optional(z.boolean()),\n untracked: z.optional(z.boolean()),\n })\n )\n .register(z.globalRegistry, { description: 'Git options' }),\n aiOptions: z\n .optional(\n z.object({\n provider: z.optional(z.string()),\n temperature: z.optional(z.number()),\n model: z.optional(z.string()),\n apiKey: z.optional(z.string()),\n customPrompt: z.optional(z.string()),\n applicationContext: z.optional(z.string()),\n })\n )\n .register(z.globalRegistry, { description: 'AI options' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const fillOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n fillOptions.gitOptions = { ...restGit, mode };\n }\n\n const fillResult = await fill(fillOptions);\n\n if (fillResult.status !== 'completed') {\n return {\n content: [\n {\n type: 'text',\n text:\n fillResult.status === 'no-ai-access'\n ? `Fill skipped: no AI access. ${fillResult.error ?? 'Run \"intlayer login\" or configure an AI API key.'}`\n : 'Fill skipped: no dictionary matched the filters.',\n },\n ],\n isError: true,\n };\n }\n\n const failedCount = fillResult.taskCount - fillResult.writtenCount;\n\n return {\n content: [\n {\n type: 'text',\n text: `Fill completed for ${fillResult.dictionaryKeys.join(', ')}: ${fillResult.writtenCount}/${fillResult.taskCount} translation(s) written${failedCount > 0 ? `, ${failedCount} failed` : ''}.`,\n },\n ],\n isError: failedCount > 0,\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Fill failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-push',\n {\n title: 'Push Dictionaries',\n description: 'Push local dictionaries to the server',\n inputSchema: {\n deleteLocaleDictionary: z\n .optional(z.boolean())\n .register(z.globalRegistry, {\n description: 'Delete local dictionary after push',\n }),\n keepLocaleDictionary: z\n .optional(z.boolean())\n .register(z.globalRegistry, {\n description: 'Keep local dictionary after push',\n }),\n dictionaries: z\n .optional(z.array(z.string()))\n .register(z.globalRegistry, {\n description: 'List of dictionaries to push',\n }),\n gitOptions: z\n .optional(\n z.object({\n gitDiff: z.optional(z.boolean()),\n gitDiffBase: z.optional(z.string()),\n gitDiffCurrent: z.optional(z.string()),\n uncommitted: z.optional(z.boolean()),\n unpushed: z.optional(z.boolean()),\n untracked: z.optional(z.boolean()),\n })\n )\n .register(z.globalRegistry, { description: 'Git options' }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n const { gitOptions, ...rest } = props;\n const pushOptions: any = { ...rest, gitOptions: undefined };\n\n if (gitOptions) {\n const { gitDiff, uncommitted, unpushed, untracked, ...restGit } =\n gitOptions;\n const mode = [];\n if (gitDiff) mode.push('gitDiff');\n if (uncommitted) mode.push('uncommitted');\n if (unpushed) mode.push('unpushed');\n if (untracked) mode.push('untracked');\n\n pushOptions.gitOptions = { ...restGit, mode };\n }\n\n await push(pushOptions);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Push successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Push failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-pull',\n {\n title: 'Pull Dictionaries',\n description: 'Pull dictionaries from the CMS',\n inputSchema: {\n dictionaries: z\n .optional(z.array(z.string()))\n .register(z.globalRegistry, {\n description: 'List of dictionaries to pull',\n }),\n newDictionariesPath: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Path to save new dictionaries',\n }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n await pull(props);\n\n return {\n content: [\n {\n type: 'text',\n text: 'Pull successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Pull failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-content-list',\n {\n title: 'List Content Declarations',\n description:\n 'List the content declaration (.content.{ts,tsx,js,json,...}) files present in the project. That files contain the multilingual content of the application and are used to build the dictionaries.',\n inputSchema: {\n configOptions: configOptionsSchema,\n absolute: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Output the results as absolute paths instead of relative paths',\n }),\n json: z.optional(z.boolean()).register(z.globalRegistry, {\n description: 'Output the results as JSON instead of formatted text',\n }),\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const rows = listContentDeclarationRows(props);\n return {\n content: [\n {\n type: 'text',\n text: props.json\n ? JSON.stringify(rows)\n : JSON.stringify(rows, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content list failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-content-test',\n {\n title: 'Test Translations',\n description:\n 'Test if there are missing translations in the content declaration files. That files contain the multilingual content of the application and are used to build the dictionaries.',\n inputSchema: {\n configOptions: configOptionsSchema,\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const missingTranslations = listMissingTranslations(\n props?.configOptions\n );\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(missingTranslations, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Content test failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-extract',\n {\n title: 'Extract strings from Component',\n description:\n 'Extract strings from an existing component to be placed in a .content file close to the component. Trigger this action to make an existing component multilingual. If the component does not exist, create a normal component including text in JSX, and then trigger this tool to extract it.',\n inputSchema: {\n file: z\n .optional(z.union([z.string(), z.array(z.string())]))\n .register(z.globalRegistry, {\n description: 'List of files to extract',\n }),\n configOptions: configOptionsSchema,\n },\n annotations: {\n destructiveHint: true,\n },\n },\n async (props) => {\n try {\n await extract({\n files: Array.isArray(props.file)\n ? props.file\n : props.file\n ? [props.file]\n : undefined,\n configOptions: props.configOptions,\n });\n\n return {\n content: [\n {\n type: 'text',\n text: 'Extract successful.',\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Extract failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-scan',\n {\n title: 'Scan Website',\n description:\n 'Scan a website to measure its page size and audit its i18n / SEO health (html lang/dir, canonical, hreflang, x-default, localized internal links, robots.txt, sitemap.xml, and unused bundle locale content). Returns a 0-100 score and per-check results.',\n inputSchema: {\n url: z.string().register(z.globalRegistry, {\n description: 'Absolute URL of the website to scan',\n }),\n deep: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Attempt a deeper render-based scan using a locally installed puppeteer. Falls back to a basic fetch scan when puppeteer is not installed.',\n }),\n },\n annotations: {\n readOnlyHint: true,\n openWorldHint: true,\n },\n },\n async ({ url, deep }) => {\n try {\n const result = await scanWebsite(url, { deep });\n return {\n content: [\n {\n type: 'text',\n text: JSON.stringify(result, null, 2),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Scan failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n\n server.registerTool(\n 'intlayer-projects-list',\n {\n title: 'List Projects',\n description:\n 'List all Intlayer projects in the directory. Search for configuration files to find all Intlayer projects.',\n inputSchema: {\n baseDir: z.optional(z.string()).register(z.globalRegistry, {\n description: 'Base directory to search from',\n }),\n gitRoot: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Search from the git root directory instead of the base directory',\n }),\n absolute: z.optional(z.boolean()).register(z.globalRegistry, {\n description:\n 'Output the results as absolute paths instead of relative paths',\n }),\n json: z.optional(z.boolean()).register(z.globalRegistry, {\n description: 'Output the results as JSON instead of formatted text',\n }),\n },\n annotations: {\n readOnlyHint: true,\n },\n },\n async (props) => {\n try {\n const { searchDir, projectsPath } = await listProjects({\n baseDir: props.baseDir,\n gitRoot: props.gitRoot,\n });\n\n const projectsRelativePath = projectsPath\n .map((projectPath) =>\n props.absolute ? projectPath : relative(searchDir, projectPath)\n )\n .map((projectPath) => (projectPath === '' ? '.' : projectPath));\n\n const outputPaths = props.absolute\n ? projectsPath\n : projectsRelativePath;\n\n return {\n content: [\n {\n type: 'text',\n text: props.json\n ? JSON.stringify(outputPaths)\n : JSON.stringify(\n { searchDir, projectsPath: outputPaths },\n null,\n 2\n ),\n },\n ],\n };\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : 'An unknown error occurred';\n return {\n content: [\n {\n type: 'text',\n text: `Projects list failed: ${errorMessage}`,\n },\n ],\n };\n }\n }\n );\n};\n"],"mappings":"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"}
|
package/dist/esm/tools/docs.mjs
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
+
import { z } from "zod/mini";
|
|
1
2
|
import { getSearchAPI } from "@intlayer/api";
|
|
2
3
|
import { getDoc, getDocMetadataBySlug, getDocMetadataRecord, getDocsKeys } from "@intlayer/docs";
|
|
3
4
|
import { buildReviewReport, formatReviewReport } from "@intlayer/engine/docReview";
|
|
4
|
-
import { z } from "zod/mini";
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
// src/tools/docs.ts
|
|
7
7
|
/** Priority assumed for a doc without `priority` front matter. */
|
|
8
8
|
const DEFAULT_DOC_PRIORITY = 5;
|
|
9
9
|
/**
|
|
@@ -152,6 +152,5 @@ const loadDocsTools = async (server) => {
|
|
|
152
152
|
});
|
|
153
153
|
};
|
|
154
154
|
|
|
155
|
-
//#endregion
|
|
156
155
|
export { loadDocsTools };
|
|
157
156
|
//# sourceMappingURL=docs.mjs.map
|
package/dist/esm/tools/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { loadDocsTools } from "./docs.mjs";
|
|
2
|
-
import { loadCLITools } from "./cli.mjs";
|
|
3
1
|
import { loadAPITools } from "./api.mjs";
|
|
2
|
+
import { loadCLITools } from "./cli.mjs";
|
|
3
|
+
import { loadDocsTools } from "./docs.mjs";
|
|
4
4
|
import { loadInstallLSPTool } from "./installLSP.mjs";
|
|
5
5
|
import { loadInstallSkillsTool } from "./installSkills.mjs";
|
|
6
6
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from "zod/mini";
|
|
2
2
|
import { installLSP } from "@intlayer/engine/cli";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
// src/tools/installLSP.ts
|
|
5
5
|
const loadInstallLSPTool = (server) => {
|
|
6
6
|
server.registerTool("intlayer-install-lsp", {
|
|
7
7
|
title: "Install Intlayer LSP",
|
|
@@ -27,6 +27,5 @@ const loadInstallLSPTool = (server) => {
|
|
|
27
27
|
});
|
|
28
28
|
};
|
|
29
29
|
|
|
30
|
-
//#endregion
|
|
31
30
|
export { loadInstallLSPTool };
|
|
32
31
|
//# sourceMappingURL=installLSP.mjs.map
|
|
@@ -2,7 +2,7 @@ import { z } from "zod/mini";
|
|
|
2
2
|
import { PLATFORMS, SKILLS, installSkills } from "@intlayer/engine/cli";
|
|
3
3
|
import * as readline from "node:readline";
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
// src/tools/installSkills.ts
|
|
6
6
|
const loadInstallSkillsTool = (server) => {
|
|
7
7
|
server.registerTool("intlayer-install-skills", {
|
|
8
8
|
title: "Install Intlayer Skills",
|
|
@@ -65,6 +65,5 @@ const runInstallSkillsCLI = async () => {
|
|
|
65
65
|
}
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
//#endregion
|
|
69
68
|
export { loadInstallSkillsTool, runInstallSkillsCLI };
|
|
70
69
|
//# sourceMappingURL=installSkills.mjs.map
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { MCPClient } from "@ai-sdk/mcp";
|
|
2
|
-
//#region src/client/client.d.ts
|
|
3
2
|
export declare const dirname: string;
|
|
4
3
|
export declare const loadMCPTools: (serverURL: string) => Promise<{
|
|
5
4
|
client: MCPClient;
|
|
6
5
|
tools: Record<string, any>;
|
|
7
6
|
}>;
|
|
8
|
-
//#endregion
|
|
9
7
|
export type { MCPClient };
|
|
10
8
|
//# sourceMappingURL=client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/client/client.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"client.d.ts","names":[],"sources":["../../../src/client/client.ts"],"mappings":";qBAOa;qBAIA,eACX,sBACC;EAAU,QAAQ;EAAW,OAAO"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/server/server.d.ts
|
|
2
1
|
export declare const dirname: string;
|
|
3
2
|
type ToolResult = {
|
|
4
3
|
content: {
|
|
@@ -30,5 +29,5 @@ type LoadServer = (options: {
|
|
|
30
29
|
isLocal: boolean;
|
|
31
30
|
}) => McpServer;
|
|
32
31
|
export declare const loadServer: LoadServer;
|
|
33
|
-
|
|
32
|
+
export {};
|
|
34
33
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","names":[],"sources":["../../../src/server/server.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","names":[],"sources":["../../../src/server/server.ts"],"mappings":"A,qBAWa;KAQR;EACH;IAAW;IAAc;;EACzB;;iBAWe;EACf,MAAM,QAAQ,YAAY;;qBAGf;mBACM;mBACA;EAEjB,YAAY;IAAQ;IAAc;;EAIlC,aACE,cACA;IACE;IACA;IACA,cAAc;IACd,cAAc;KAEhB,UAAU,gBAAgB,QAAQ;EAkBpC,cAAoB,eAAe;EAwEnC,QAAc,WAAW,eAAe;;KAKrC,cAAc;EAAW;MAAuB;qBAExC,YAAY"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","names":[],"sources":["../../../src/tools/api.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.d.ts","names":[],"sources":["../../../src/tools/api.ts"],"mappings":";KAOK,gBAAgB,QAAQ;qBA8DhB,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","names":[],"sources":["../../../src/tools/cli.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","names":[],"sources":["../../../src/tools/cli.ts"],"mappings":";KAoFK,gBAAgB,QAAQ,cAAc;qBAE9B,cAAc"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
//#region src/tools/docs.d.ts
|
|
2
1
|
export type ToolResult = {
|
|
3
2
|
content: {
|
|
4
3
|
type: string;
|
|
@@ -11,5 +10,5 @@ export type McpServer = {
|
|
|
11
10
|
};
|
|
12
11
|
type LoadDocsTools = (server: McpServer) => Promise<void>;
|
|
13
12
|
export declare const loadDocsTools: LoadDocsTools;
|
|
14
|
-
|
|
13
|
+
export {};
|
|
15
14
|
//# sourceMappingURL=docs.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.d.ts","names":[],"sources":["../../../src/tools/docs.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"docs.d.ts","names":[],"sources":["../../../src/tools/docs.ts"],"mappings":"A,YAcY;EACV;IAAW;IAAc;;EACzB;;YAEU;EACV,aACE,cACA,aACA,UAAU,gBAAgB,QAAQ;;KAIjC,iBAAiB,QAAQ,cAAc;qBA6B/B,eAAe"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { loadDocsTools } from "./docs.js";
|
|
2
1
|
import { loadAPITools } from "./api.js";
|
|
3
2
|
import { loadCLITools } from "./cli.js";
|
|
3
|
+
import { loadDocsTools } from "./docs.js";
|
|
4
4
|
import { loadInstallLSPTool } from "./installLSP.js";
|
|
5
5
|
import { loadInstallSkillsTool } from "./installSkills.js";
|
|
6
6
|
export { loadAPITools, loadCLITools, loadDocsTools, loadInstallLSPTool, loadInstallSkillsTool };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installLSP.d.ts","names":[],"sources":["../../../src/tools/installLSP.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"installLSP.d.ts","names":[],"sources":["../../../src/tools/installLSP.ts"],"mappings":";qBAIa,qBAAsB,QAAQ"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
import { McpServer } from "./docs.js";
|
|
2
|
-
//#region src/tools/installSkills.d.ts
|
|
3
2
|
export declare const loadInstallSkillsTool: (server: McpServer) => void;
|
|
4
3
|
export declare const runInstallSkillsCLI: () => Promise<void>;
|
|
5
|
-
//#endregion
|
|
6
4
|
//# sourceMappingURL=installSkills.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installSkills.d.ts","names":[],"sources":["../../../src/tools/installSkills.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"installSkills.d.ts","names":[],"sources":["../../../src/tools/installSkills.ts"],"mappings":";qBAUa,wBAAyB,QAAQ;qBAiDjC,2BAAgC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@intlayer/mcp",
|
|
3
|
-
"version": "9.7.
|
|
3
|
+
"version": "9.7.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Intlayer MCP server. Handle MCP to help IDE to use Intlayer. It build, fill, pull, push, dictionaries",
|
|
6
6
|
"keywords": [
|
|
@@ -112,29 +112,29 @@
|
|
|
112
112
|
"typecheck": "tsc --noEmit --project tsconfig.types.json"
|
|
113
113
|
},
|
|
114
114
|
"dependencies": {
|
|
115
|
-
"@ai-sdk/mcp": "2.0.
|
|
116
|
-
"@fastify/cors": "11.
|
|
117
|
-
"@fastify/helmet": "13.
|
|
118
|
-
"@intlayer/api": "9.7.
|
|
119
|
-
"@intlayer/cli": "9.
|
|
120
|
-
"@intlayer/config": "9.
|
|
121
|
-
"@intlayer/docs": "9.7.
|
|
122
|
-
"@intlayer/engine": "9.7.
|
|
123
|
-
"@intlayer/types": "9.7.
|
|
124
|
-
"dotenv": "18.0.
|
|
125
|
-
"fastify": "5.12.
|
|
126
|
-
"zod": "4.6.
|
|
115
|
+
"@ai-sdk/mcp": "2.0.89",
|
|
116
|
+
"@fastify/cors": "11.4.0",
|
|
117
|
+
"@fastify/helmet": "13.2.0",
|
|
118
|
+
"@intlayer/api": "9.7.1",
|
|
119
|
+
"@intlayer/cli": "9.7.1",
|
|
120
|
+
"@intlayer/config": "9.7.1",
|
|
121
|
+
"@intlayer/docs": "9.7.1",
|
|
122
|
+
"@intlayer/engine": "9.7.1",
|
|
123
|
+
"@intlayer/types": "9.7.1",
|
|
124
|
+
"dotenv": "18.0.9",
|
|
125
|
+
"fastify": "5.12.8",
|
|
126
|
+
"zod": "4.6.7"
|
|
127
127
|
},
|
|
128
128
|
"devDependencies": {
|
|
129
|
-
"@intlayer/types": "9.7.
|
|
129
|
+
"@intlayer/types": "9.7.1",
|
|
130
130
|
"@types/node": "^26",
|
|
131
131
|
"@utils/ts-config": "1.0.4",
|
|
132
132
|
"@utils/ts-config-types": "1.0.4",
|
|
133
133
|
"@utils/tsdown-config": "1.0.4",
|
|
134
134
|
"rimraf": "6.1.3",
|
|
135
|
-
"tsdown": "0.23.
|
|
135
|
+
"tsdown": "0.23.4",
|
|
136
136
|
"typescript": "7.0.2",
|
|
137
|
-
"vitest": "5.0
|
|
137
|
+
"vitest": "5.1.0"
|
|
138
138
|
},
|
|
139
139
|
"engines": {
|
|
140
140
|
"node": ">=14.18"
|