@aws/nx-plugin 0.34.0 → 0.36.0
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/README.md +3 -62
- package/generators.json +6 -0
- package/package.json +1 -1
- package/sdk/ts.d.ts +4 -0
- package/sdk/ts.js +15 -9
- package/sdk/ts.js.map +1 -1
- package/src/mcp-server/tools/create-workspace-command.js +1 -8
- package/src/mcp-server/tools/create-workspace-command.js.map +1 -1
- package/src/mcp-server/tools/generator-guide.js +1 -1
- package/src/mcp-server/tools/generator-guide.js.map +1 -1
- package/src/preset/__snapshots__/generator.spec.ts.snap +2 -0
- package/src/trpc/backend/__snapshots__/generator.spec.ts.snap +1 -1
- package/src/trpc/backend/files/src/schema/echo.ts.template +1 -1
- package/src/trpc/backend/generator.js +0 -3
- package/src/trpc/backend/generator.js.map +1 -1
- package/src/ts/mcp-server/__snapshots__/generator.spec.ts.snap +41 -314
- package/src/ts/mcp-server/files/index.ts.template +17 -0
- package/src/ts/mcp-server/files/resources/sample-guidance.ts.template +9 -0
- package/src/ts/mcp-server/files/server.ts.template +18 -0
- package/src/ts/mcp-server/files/tools/add.ts.template +11 -0
- package/src/ts/mcp-server/generator.js +42 -31
- package/src/ts/mcp-server/generator.js.map +1 -1
- package/src/ts/mcp-server/schema.d.ts +4 -2
- package/src/ts/mcp-server/schema.json +9 -16
- package/src/ts/nx-generator/__snapshots__/generator.spec.ts.snap +2 -2
- package/src/ts/nx-generator/files/common/schema.json.template +1 -1
- package/src/ts/nx-generator/files/local/README.md.template +5 -0
- package/src/ts/nx-generator/generator.js +5 -41
- package/src/ts/nx-generator/generator.js.map +1 -1
- package/src/ts/nx-generator/schema.d.ts +1 -1
- package/src/ts/nx-generator/schema.json +3 -3
- package/src/ts/nx-plugin/__snapshots__/generator.spec.ts.snap +375 -0
- package/src/ts/nx-plugin/files/mcp-server/resources/GENERAL_GUIDANCE.md.template +49 -0
- package/src/ts/nx-plugin/files/mcp-server/schema.ts.template +4 -0
- package/src/ts/nx-plugin/files/mcp-server/server.ts.template +41 -0
- package/src/ts/nx-plugin/files/mcp-server/tools/create-workspace-command.ts.template +36 -0
- package/src/ts/nx-plugin/files/mcp-server/tools/general-guidance.ts.template +24 -0
- package/src/ts/nx-plugin/files/mcp-server/tools/generator-guide.ts.template +45 -0
- package/src/ts/nx-plugin/files/mcp-server/tools/list-generators.ts.template +27 -0
- package/src/ts/nx-plugin/files/mcp-server/utils.ts.template +97 -0
- package/src/ts/nx-plugin/generator.d.ts +10 -0
- package/src/ts/nx-plugin/generator.js +88 -0
- package/src/ts/nx-plugin/generator.js.map +1 -0
- package/src/ts/nx-plugin/schema.d.ts +11 -0
- package/src/ts/nx-plugin/schema.json +32 -0
- package/src/ts/nx-plugin/utils.d.ts +9 -0
- package/src/ts/nx-plugin/utils.js +65 -0
- package/src/ts/nx-plugin/utils.js.map +1 -0
- package/src/utils/ast.js +3 -1
- package/src/utils/ast.js.map +1 -1
- package/src/ts/mcp-server/files/README.md.template +0 -108
- package/src/ts/mcp-server/files/src/global.d.ts.template +0 -4
- package/src/ts/mcp-server/files/src/index.ts.template +0 -6
- package/src/ts/mcp-server/files/src/resources/example-context.md +0 -3
- package/src/ts/mcp-server/files/src/server.ts.template +0 -28
- package/src/utils/zod.d.ts +0 -9
- package/src/utils/zod.js +0 -19
- package/src/utils/zod.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { renderGeneratorInfo, listGenerators } from '../utils';
|
|
4
|
+
import { PackageManagerSchema } from '../schema';
|
|
5
|
+
import * as fs from 'fs';
|
|
6
|
+
import * as path from 'path';
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Registers a tool which provides a detailed guide for an individual generator
|
|
10
|
+
*/
|
|
11
|
+
export const registerGeneratorGuideTool = (
|
|
12
|
+
server: McpServer,
|
|
13
|
+
) => {
|
|
14
|
+
server.tool(
|
|
15
|
+
'generator-guide',
|
|
16
|
+
'Tool to retrieve detailed information about a specific generator.',
|
|
17
|
+
{
|
|
18
|
+
packageManager: PackageManagerSchema,
|
|
19
|
+
generator: z.string(),
|
|
20
|
+
},
|
|
21
|
+
async ({ packageManager, generator: generatorId }) => {
|
|
22
|
+
const generators = listGenerators();
|
|
23
|
+
const generator = generators.find((g) => g.id === generatorId);
|
|
24
|
+
if (!generator) {
|
|
25
|
+
throw new Error(
|
|
26
|
+
`No generator found with id ${generatorId}. Available generators: ${generators.map((g) => g.id).join(' ,')}`,
|
|
27
|
+
);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
return {
|
|
31
|
+
content: [
|
|
32
|
+
{
|
|
33
|
+
type: 'text',
|
|
34
|
+
text: `## ${renderGeneratorInfo(packageManager, generator)}
|
|
35
|
+
|
|
36
|
+
# Guide
|
|
37
|
+
|
|
38
|
+
${fs.readFileSync(path.join(generator.resolvedPath, 'README.md'))}
|
|
39
|
+
`,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
};
|
|
43
|
+
},
|
|
44
|
+
);
|
|
45
|
+
};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { PackageManagerSchema } from '../schema';
|
|
3
|
+
import { renderGeneratorInfo, listGenerators } from '../utils';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Registers a tool which lists details about the available generators
|
|
7
|
+
*/
|
|
8
|
+
export const registerListGeneratorsTool = (
|
|
9
|
+
server: McpServer,
|
|
10
|
+
) => {
|
|
11
|
+
server.tool(
|
|
12
|
+
'list-generators',
|
|
13
|
+
'Tool to discover the available generators and how to run them.',
|
|
14
|
+
{ packageManager: PackageManagerSchema },
|
|
15
|
+
({ packageManager }) => ({
|
|
16
|
+
content: [
|
|
17
|
+
{
|
|
18
|
+
type: 'text',
|
|
19
|
+
text: `## Available Generators
|
|
20
|
+
|
|
21
|
+
${listGenerators().map((g) => `### ${renderGeneratorInfo(packageManager, g)}`).join('\n\n')}
|
|
22
|
+
`,
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
}),
|
|
26
|
+
);
|
|
27
|
+
};
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import * as path from 'path';
|
|
3
|
+
|
|
4
|
+
export interface NxGeneratorInfo {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly resolvedPath: string;
|
|
7
|
+
readonly description?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const getPackageName = (): string =>
|
|
11
|
+
JSON.parse(
|
|
12
|
+
fs.readFileSync(path.resolve(__dirname, '../../package.json'), 'utf-8'),
|
|
13
|
+
).name;
|
|
14
|
+
|
|
15
|
+
export const listGenerators = (): NxGeneratorInfo[] =>
|
|
16
|
+
Object.entries(
|
|
17
|
+
JSON.parse(
|
|
18
|
+
fs.readFileSync(
|
|
19
|
+
path.resolve(__dirname, '../../generators.json'),
|
|
20
|
+
'utf-8',
|
|
21
|
+
),
|
|
22
|
+
).generators,
|
|
23
|
+
).map(([id, info]: any) => ({
|
|
24
|
+
id,
|
|
25
|
+
resolvedPath: path.resolve(__dirname, '..', '..', info.factory, '..'),
|
|
26
|
+
description: info.description,
|
|
27
|
+
}));
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Build a command to run nx
|
|
31
|
+
*/
|
|
32
|
+
export const buildNxCommand = (command: string, pm?: string) =>
|
|
33
|
+
`${
|
|
34
|
+
pm
|
|
35
|
+
? `${
|
|
36
|
+
{
|
|
37
|
+
npm: 'npx',
|
|
38
|
+
bun: 'bunx',
|
|
39
|
+
}[pm] ?? pm
|
|
40
|
+
} `
|
|
41
|
+
: ''
|
|
42
|
+
}nx ${command}`;
|
|
43
|
+
|
|
44
|
+
export const buildInstallCommand = (pm: string, pkg: string) =>
|
|
45
|
+
({
|
|
46
|
+
pnpm: `pnpm add -Dw ${pkg}`,
|
|
47
|
+
yarn: `yarn add -D ${pkg}`,
|
|
48
|
+
npm: `npm install --legacy-peer-deps -D ${pkg}`,
|
|
49
|
+
bun: `bun install -D ${pkg}`,
|
|
50
|
+
})[pm];
|
|
51
|
+
|
|
52
|
+
const renderSchema = (schema: any) =>
|
|
53
|
+
Object.entries(schema.properties)
|
|
54
|
+
.map(
|
|
55
|
+
([parameter, parameterSchema]: [string, any]) =>
|
|
56
|
+
`- ${parameter} [type: ${parameterSchema.type}]${(schema.required ?? []).includes(parameter) ? ` (required)` : ''} ${parameterSchema.description}`,
|
|
57
|
+
)
|
|
58
|
+
.join('\n');
|
|
59
|
+
|
|
60
|
+
const renderGeneratorCommand = (
|
|
61
|
+
generatorId: string,
|
|
62
|
+
schema: any,
|
|
63
|
+
packageManager?: string,
|
|
64
|
+
) => `\`\`\`bash
|
|
65
|
+
${buildNxCommand(
|
|
66
|
+
`g ${getPackageName()}:${generatorId} --no-interactive ${Object.entries(
|
|
67
|
+
schema.properties,
|
|
68
|
+
)
|
|
69
|
+
.filter(([parameter]) => (schema.required ?? []).includes(parameter))
|
|
70
|
+
.map(([parameter]: [string, any]) => `--${parameter}=<${parameter}>`)
|
|
71
|
+
.join(' ')}`,
|
|
72
|
+
packageManager,
|
|
73
|
+
)}
|
|
74
|
+
\`\`\``;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Render summary information about a generator
|
|
78
|
+
*/
|
|
79
|
+
export const renderGeneratorInfo = (
|
|
80
|
+
packageManager: string,
|
|
81
|
+
info: NxGeneratorInfo,
|
|
82
|
+
): string => {
|
|
83
|
+
const schema = JSON.parse(
|
|
84
|
+
fs.readFileSync(path.join(info.resolvedPath, 'schema.json'), 'utf-8'),
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
return `${info.id}
|
|
88
|
+
|
|
89
|
+
Description: ${info.description}
|
|
90
|
+
|
|
91
|
+
Available Parameters:
|
|
92
|
+
${renderSchema(schema)}
|
|
93
|
+
|
|
94
|
+
Command:
|
|
95
|
+
${renderGeneratorCommand(info.id, schema, packageManager)}
|
|
96
|
+
`;
|
|
97
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { GeneratorCallback, Tree } from '@nx/devkit';
|
|
6
|
+
import { TsNxPluginGeneratorSchema } from './schema';
|
|
7
|
+
import { NxGeneratorInfo } from '../../utils/nx';
|
|
8
|
+
export declare const TS_NX_PLUGIN_GENERATOR_INFO: NxGeneratorInfo;
|
|
9
|
+
export declare const tsNxPluginGenerator: (tree: Tree, options: TsNxPluginGeneratorSchema) => Promise<GeneratorCallback>;
|
|
10
|
+
export default tsNxPluginGenerator;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tsNxPluginGenerator = exports.TS_NX_PLUGIN_GENERATOR_INFO = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const devkit_1 = require("@nx/devkit");
|
|
10
|
+
const nx_1 = require("../../utils/nx");
|
|
11
|
+
const metrics_1 = require("../../utils/metrics");
|
|
12
|
+
const format_1 = require("../../utils/format");
|
|
13
|
+
const generator_1 = tslib_1.__importStar(require("../lib/generator"));
|
|
14
|
+
const utils_1 = require("./utils");
|
|
15
|
+
const generator_2 = tslib_1.__importDefault(require("../mcp-server/generator"));
|
|
16
|
+
exports.TS_NX_PLUGIN_GENERATOR_INFO = (0, nx_1.getGeneratorInfo)(__filename);
|
|
17
|
+
const tsNxPluginGenerator = (tree, options) => tslib_1.__awaiter(void 0, void 0, void 0, function* () {
|
|
18
|
+
var _a, _b, _c;
|
|
19
|
+
// Generate a TypeScript project as the base
|
|
20
|
+
const { fullyQualifiedName, dir } = (0, generator_1.getTsLibDetails)(tree, options);
|
|
21
|
+
yield (0, generator_1.default)(tree, options);
|
|
22
|
+
// Configure the typescript project as an Nx Plugin
|
|
23
|
+
(0, utils_1.configureTsProjectAsNxPlugin)(tree, fullyQualifiedName);
|
|
24
|
+
// Add a "package" target which creates a package which can be published to NPM
|
|
25
|
+
const project = (0, nx_1.readProjectConfigurationUnqualified)(tree, fullyQualifiedName);
|
|
26
|
+
project.targets = Object.assign(Object.assign({}, project.targets), { package: {
|
|
27
|
+
executor: '@nx/js:tsc',
|
|
28
|
+
outputs: ['{options.outputPath}'],
|
|
29
|
+
options: {
|
|
30
|
+
outputPath: `dist/${dir}/package`,
|
|
31
|
+
main: `${dir}/src/index.ts`,
|
|
32
|
+
tsConfig: `${dir}/tsconfig.lib.json`,
|
|
33
|
+
assets: [
|
|
34
|
+
`${dir}/*.md`,
|
|
35
|
+
`${dir}/LICENSE*`,
|
|
36
|
+
`${dir}/NOTICE`,
|
|
37
|
+
{
|
|
38
|
+
input: `./${dir}/src`,
|
|
39
|
+
glob: '**/!(*.ts)',
|
|
40
|
+
output: './src',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
input: `./${dir}/src`,
|
|
44
|
+
glob: '**/*.d.ts',
|
|
45
|
+
output: './src',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
input: `./${dir}`,
|
|
49
|
+
glob: 'generators.json',
|
|
50
|
+
output: '.',
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
input: `./${dir}`,
|
|
54
|
+
glob: 'executors.json',
|
|
55
|
+
output: '.',
|
|
56
|
+
},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
}, build: {
|
|
60
|
+
dependsOn: [
|
|
61
|
+
...((_c = (_b = (_a = project.targets) === null || _a === void 0 ? void 0 : _a.build) === null || _b === void 0 ? void 0 : _b.dependsOn) !== null && _c !== void 0 ? _c : []).filter((d) => typeof d !== 'string' || d !== 'package'),
|
|
62
|
+
'package',
|
|
63
|
+
],
|
|
64
|
+
} });
|
|
65
|
+
(0, devkit_1.updateProjectConfiguration)(tree, fullyQualifiedName, project);
|
|
66
|
+
// Remove the hello world example from index.ts
|
|
67
|
+
tree.write((0, devkit_1.joinPathFragments)(project.sourceRoot, 'index.ts'), '');
|
|
68
|
+
// Add an MCP Server
|
|
69
|
+
yield (0, generator_2.default)(tree, { project: fullyQualifiedName });
|
|
70
|
+
const mcpPath = (0, devkit_1.joinPathFragments)(project.sourceRoot, 'mcp-server');
|
|
71
|
+
const mcpServerPath = (0, devkit_1.joinPathFragments)(mcpPath, 'server.ts');
|
|
72
|
+
// Remove the sample server and tools
|
|
73
|
+
tree.delete(mcpServerPath);
|
|
74
|
+
tree.delete((0, devkit_1.joinPathFragments)(mcpPath, 'tools', 'add.ts'));
|
|
75
|
+
tree.delete((0, devkit_1.joinPathFragments)(mcpPath, 'resources', 'sample-guidance.ts'));
|
|
76
|
+
// Add generator MCP server
|
|
77
|
+
(0, devkit_1.generateFiles)(tree, (0, devkit_1.joinPathFragments)(__dirname, 'files', 'mcp-server'), mcpPath, {
|
|
78
|
+
name: fullyQualifiedName,
|
|
79
|
+
}, { overwriteStrategy: devkit_1.OverwriteStrategy.KeepExisting });
|
|
80
|
+
yield (0, metrics_1.addGeneratorMetricsIfApplicable)(tree, [exports.TS_NX_PLUGIN_GENERATOR_INFO]);
|
|
81
|
+
yield (0, format_1.formatFilesInSubtree)(tree);
|
|
82
|
+
return () => {
|
|
83
|
+
(0, devkit_1.installPackagesTask)(tree);
|
|
84
|
+
};
|
|
85
|
+
});
|
|
86
|
+
exports.tsNxPluginGenerator = tsNxPluginGenerator;
|
|
87
|
+
exports.default = exports.tsNxPluginGenerator;
|
|
88
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-plugin/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { TsProjectGeneratorSchema } from '../lib/schema';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* TypeScript types for options defined in schema.json
|
|
9
|
+
* Update this to match schema.json if you make changes.
|
|
10
|
+
*/
|
|
11
|
+
export type TsNxPluginGeneratorSchema = TsProjectGeneratorSchema;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://json-schema.org/schema",
|
|
3
|
+
"$id": "ts#nx-plugin",
|
|
4
|
+
"title": "ts#nx-plugin",
|
|
5
|
+
"description": "<Describe your generator here!>",
|
|
6
|
+
"type": "object",
|
|
7
|
+
"properties": {
|
|
8
|
+
"name": {
|
|
9
|
+
"type": "string",
|
|
10
|
+
"description": "TypeScript project name",
|
|
11
|
+
"$default": {
|
|
12
|
+
"$source": "argv",
|
|
13
|
+
"index": 0
|
|
14
|
+
},
|
|
15
|
+
"x-priority": "important",
|
|
16
|
+
"x-prompt": "What would you like to call your TypeScript project?"
|
|
17
|
+
},
|
|
18
|
+
"directory": {
|
|
19
|
+
"type": "string",
|
|
20
|
+
"description": "Parent directory where the library is placed.",
|
|
21
|
+
"default": "packages",
|
|
22
|
+
"x-prompt": "Which directory do you want to create the library in?",
|
|
23
|
+
"x-priority": "important"
|
|
24
|
+
},
|
|
25
|
+
"subDirectory": {
|
|
26
|
+
"type": "string",
|
|
27
|
+
"description": "The sub directory the lib is placed in. By default this is the library name.",
|
|
28
|
+
"x-prompt": "Which sub directory do you want to create the library in? (By default this is the library name)"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"required": ["name"]
|
|
32
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { Tree } from '@nx/devkit';
|
|
6
|
+
/**
|
|
7
|
+
* Configures a TypeScript project as an Nx Plugin
|
|
8
|
+
*/
|
|
9
|
+
export declare const configureTsProjectAsNxPlugin: (tree: Tree, projectName: string) => void;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureTsProjectAsNxPlugin = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
/**
|
|
6
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
7
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
8
|
+
*/
|
|
9
|
+
const devkit_1 = require("@nx/devkit");
|
|
10
|
+
const nx_1 = require("../../utils/nx");
|
|
11
|
+
const versions_1 = require("../../utils/versions");
|
|
12
|
+
const package_json_1 = tslib_1.__importDefault(require("../../../package.json"));
|
|
13
|
+
/**
|
|
14
|
+
* Configures a TypeScript project as an Nx Plugin
|
|
15
|
+
*/
|
|
16
|
+
const configureTsProjectAsNxPlugin = (tree, projectName) => {
|
|
17
|
+
const project = (0, nx_1.readProjectConfigurationUnqualified)(tree, projectName);
|
|
18
|
+
const tsConfigPath = (0, devkit_1.joinPathFragments)(project.root, 'tsconfig.json');
|
|
19
|
+
if (!tree.exists(tsConfigPath)) {
|
|
20
|
+
throw new Error(`Selected plugin project ${projectName} is not a TypeScript project`);
|
|
21
|
+
}
|
|
22
|
+
// Nx Plugins must use commonjs as a limitation of nx
|
|
23
|
+
// https://github.com/nrwl/nx/issues/15682
|
|
24
|
+
(0, devkit_1.updateJson)(tree, tsConfigPath, (tsConfig) => {
|
|
25
|
+
var _a, _b;
|
|
26
|
+
var _c;
|
|
27
|
+
(_a = tsConfig.compilerOptions) !== null && _a !== void 0 ? _a : (tsConfig.compilerOptions = {});
|
|
28
|
+
(_b = (_c = tsConfig.compilerOptions).module) !== null && _b !== void 0 ? _b : (_c.module = 'commonjs');
|
|
29
|
+
return tsConfig;
|
|
30
|
+
});
|
|
31
|
+
// Create an empty generators.json if one dosn't exist
|
|
32
|
+
const generatorsJsonPath = (0, devkit_1.joinPathFragments)(project.root, 'generators.json');
|
|
33
|
+
if (!tree.exists(generatorsJsonPath)) {
|
|
34
|
+
(0, devkit_1.writeJson)(tree, generatorsJsonPath, {
|
|
35
|
+
generators: {},
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
// Create a package.json if one doesn't exist, and configure "main" and "generators"
|
|
39
|
+
const pluginPackageJsonPath = (0, devkit_1.joinPathFragments)(project.root, 'package.json');
|
|
40
|
+
if (!tree.exists(pluginPackageJsonPath)) {
|
|
41
|
+
(0, devkit_1.writeJson)(tree, pluginPackageJsonPath, {
|
|
42
|
+
name: project.name,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
(0, devkit_1.updateJson)(tree, pluginPackageJsonPath, (pkg) => {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
(_a = pkg.main) !== null && _a !== void 0 ? _a : (pkg.main = './src/index.js');
|
|
48
|
+
(_b = pkg.generators) !== null && _b !== void 0 ? _b : (pkg.generators = './generators.json');
|
|
49
|
+
return pkg;
|
|
50
|
+
});
|
|
51
|
+
const rootPackageJson = tree.exists('package.json')
|
|
52
|
+
? (0, devkit_1.readJson)(tree, 'package.json')
|
|
53
|
+
: undefined;
|
|
54
|
+
const isNxPluginForAws = (rootPackageJson === null || rootPackageJson === void 0 ? void 0 : rootPackageJson.name) === '@aws/nx-plugin-source';
|
|
55
|
+
if (!isNxPluginForAws) {
|
|
56
|
+
// Add the required dependencies to the root package.json, and project's package.json
|
|
57
|
+
const deps = Object.assign(Object.assign({}, (0, versions_1.withVersions)(['@nx/devkit'])), {
|
|
58
|
+
// Include dependency on @aws/nx-plugin
|
|
59
|
+
[package_json_1.default.name]: `^${package_json_1.default.version}` });
|
|
60
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, {}, deps);
|
|
61
|
+
(0, devkit_1.addDependenciesToPackageJson)(tree, deps, {}, pluginPackageJsonPath);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
exports.configureTsProjectAsNxPlugin = configureTsProjectAsNxPlugin;
|
|
65
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../../packages/nx-plugin/src/ts/nx-plugin/utils.ts"],"names":[],"mappings":";;;;AAAA;;;GAGG;AACH,uCAOoB;AACpB,uCAAqE;AACrE,mDAAoD;AACpD,iFAAgD;AAEhD;;GAEG;AACI,MAAM,4BAA4B,GAAG,CAC1C,IAAU,EACV,WAAmB,EACnB,EAAE;IACF,MAAM,OAAO,GAAG,IAAA,wCAAmC,EAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAEvE,MAAM,YAAY,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC;IACtE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CACb,2BAA2B,WAAW,8BAA8B,CACrE,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,0CAA0C;IAC1C,IAAA,mBAAU,EAAC,IAAI,EAAE,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE;;;QAC1C,MAAA,QAAQ,CAAC,eAAe,oCAAxB,QAAQ,CAAC,eAAe,GAAK,EAAE,EAAC;QAChC,YAAA,QAAQ,CAAC,eAAe,EAAC,MAAM,uCAAN,MAAM,GAAK,UAAU,EAAC;QAC/C,OAAO,QAAQ,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,sDAAsD;IACtD,MAAM,kBAAkB,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC;QACrC,IAAA,kBAAS,EAAC,IAAI,EAAE,kBAAkB,EAAE;YAClC,UAAU,EAAE,EAAE;SACf,CAAC,CAAC;IACL,CAAC;IAED,oFAAoF;IACpF,MAAM,qBAAqB,GAAG,IAAA,0BAAiB,EAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IAC9E,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACxC,IAAA,kBAAS,EAAC,IAAI,EAAE,qBAAqB,EAAE;YACrC,IAAI,EAAE,OAAO,CAAC,IAAI;SACnB,CAAC,CAAC;IACL,CAAC;IACD,IAAA,mBAAU,EAAC,IAAI,EAAE,qBAAqB,EAAE,CAAC,GAAG,EAAE,EAAE;;QAC9C,MAAA,GAAG,CAAC,IAAI,oCAAR,GAAG,CAAC,IAAI,GAAK,gBAAgB,EAAC;QAC9B,MAAA,GAAG,CAAC,UAAU,oCAAd,GAAG,CAAC,UAAU,GAAK,mBAAmB,EAAC;QACvC,OAAO,GAAG,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,MAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;QACjD,CAAC,CAAC,IAAA,iBAAQ,EAAC,IAAI,EAAE,cAAc,CAAC;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,gBAAgB,GAAG,CAAA,eAAe,aAAf,eAAe,uBAAf,eAAe,CAAE,IAAI,MAAK,uBAAuB,CAAC;IAE3E,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,qFAAqF;QACrF,MAAM,IAAI,mCACL,IAAA,uBAAY,EAAC,CAAC,YAAY,CAAC,CAAC;YAC/B,uCAAuC;YACvC,CAAC,sBAAW,CAAC,IAAI,CAAC,EAAE,IAAI,sBAAW,CAAC,OAAO,EAAE,GAC9C,CAAC;QACF,IAAA,qCAA4B,EAAC,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAA,qCAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACtE,CAAC;AACH,CAAC,CAAC;AAzDW,QAAA,4BAA4B,gCAyDvC"}
|
package/src/utils/ast.js
CHANGED
|
@@ -113,7 +113,9 @@ exports.replaceIfExists = replaceIfExists;
|
|
|
113
113
|
const applyTransform = (code, selector, transformer) => {
|
|
114
114
|
const sourceFile = (0, tsquery_1.ast)(code);
|
|
115
115
|
const transforms = [];
|
|
116
|
-
const printer = typescript_1.default.createPrinter(
|
|
116
|
+
const printer = typescript_1.default.createPrinter({
|
|
117
|
+
removeComments: true,
|
|
118
|
+
});
|
|
117
119
|
tsquery_1.tsquery.map(sourceFile, selector, (node) => {
|
|
118
120
|
const newNode = transformer(node);
|
|
119
121
|
if (newNode !== node && newNode) {
|
package/src/utils/ast.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/ast.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ast.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/ast.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
# <%- name %>
|
|
2
|
-
|
|
3
|
-
This package defines a Model Context Protocol (MCP) Server in TypeScript.
|
|
4
|
-
|
|
5
|
-
## What is MCP?
|
|
6
|
-
|
|
7
|
-
The Model Context Protocol (MCP) is a standardized protocol for providing context to Large Language Models (LLMs). It allows AI assistants to access external tools and resources through a consistent interface.
|
|
8
|
-
|
|
9
|
-
## Documentation
|
|
10
|
-
|
|
11
|
-
- [Model Context Protocol Documentation](https://modelcontextprotocol.io/)
|
|
12
|
-
- [MCP TypeScript SDK Documentation](https://github.com/modelcontextprotocol/sdk-typescript)
|
|
13
|
-
|
|
14
|
-
## Developer Guide
|
|
15
|
-
|
|
16
|
-
### Getting Started
|
|
17
|
-
|
|
18
|
-
This MCP server is built using the MCP TypeScript SDK. Here's how to work with it:
|
|
19
|
-
|
|
20
|
-
1. **Server Structure**: The main server code is in `src/server.ts`. This file defines the server, its tools, and resources.
|
|
21
|
-
|
|
22
|
-
2. **Adding Tools**: Tools are functions that the LLM can call to perform actions. Add new tools using the `server.tool()` method:
|
|
23
|
-
|
|
24
|
-
```typescript
|
|
25
|
-
server.tool("toolName",
|
|
26
|
-
{ param1: z.string(), param2: z.number() }, // Input schema using Zod
|
|
27
|
-
async ({ param1, param2 }) => {
|
|
28
|
-
// Tool implementation
|
|
29
|
-
return {
|
|
30
|
-
content: [{ type: "text", text: "Result" }]
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
);
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
3. **Adding Resources**: Resources provide context to the LLM. You can add static resources from files or dynamic resources:
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
// Static resource from a file
|
|
40
|
-
import resourceContent from './resources/my-resource.md';
|
|
41
|
-
|
|
42
|
-
server.resource('resource-name', 'example://resource', async (uri) => ({
|
|
43
|
-
contents: [{ uri: uri.href, text: resourceContent }],
|
|
44
|
-
}));
|
|
45
|
-
|
|
46
|
-
// Dynamic resource
|
|
47
|
-
server.resource('dynamic-resource', 'dynamic://resource', async (uri) => {
|
|
48
|
-
const data = await fetchSomeData();
|
|
49
|
-
return {
|
|
50
|
-
contents: [{ uri: uri.href, text: data }],
|
|
51
|
-
};
|
|
52
|
-
});
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Building the Server
|
|
56
|
-
|
|
57
|
-
To build the server for use with AI assistants:
|
|
58
|
-
|
|
59
|
-
```bash
|
|
60
|
-
nx run <project-name>:bundle
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
This creates a bundled version of your server in `dist/<project-path>/bundle/index.js`.
|
|
64
|
-
|
|
65
|
-
## Using with AI Assistants
|
|
66
|
-
|
|
67
|
-
To use your MCP server with AI assistants, you need to build it first to create the bundle:
|
|
68
|
-
|
|
69
|
-
```bash
|
|
70
|
-
nx run <project-name>:bundle
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
### Configuration
|
|
74
|
-
|
|
75
|
-
Most AI assistants (Amazon Q Developer CLI, Cline, Cursor, Claude Code, etc.) use a similar configuration approach. You'll need to create or update a configuration file with your MCP server details:
|
|
76
|
-
|
|
77
|
-
```json
|
|
78
|
-
{
|
|
79
|
-
"mcpServers": {
|
|
80
|
-
"<%- name %>": {
|
|
81
|
-
"command": "node",
|
|
82
|
-
"args": [
|
|
83
|
-
"/path/to/workspace/dist/<%- dir %>/bundle/index.js"
|
|
84
|
-
],
|
|
85
|
-
"transportType": "stdio"
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
Replace `/path/to/workspace/dist/<%- dir %>/bundle/index.js` with the actual path to your bundled MCP server.
|
|
92
|
-
|
|
93
|
-
Note that if you receive an error due to `node` missing (eg `ENOENT node`), you might need to specify the full path to `node` which you can obtain by running `which node`.
|
|
94
|
-
|
|
95
|
-
### Development Mode
|
|
96
|
-
|
|
97
|
-
During development, you can use the `dev` target to continuously rebuild the bundle whenever you make changes:
|
|
98
|
-
|
|
99
|
-
```bash
|
|
100
|
-
nx run <project-name>:dev
|
|
101
|
-
```
|
|
102
|
-
|
|
103
|
-
This will watch for changes in your project files and automatically rebuild the bundle.
|
|
104
|
-
|
|
105
|
-
Whenever you've made changes, you'll need to restart the MCP server in your AI assistant to test it out. The exact process depends on the assistant, but generally:
|
|
106
|
-
|
|
107
|
-
1. Find your MCP server in the assistant's settings or configuration
|
|
108
|
-
2. Look for a "Restart" or "Reload" option
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
2
|
-
import { createServer } from './server.js';
|
|
3
|
-
|
|
4
|
-
// Start receiving messages on stdin and sending messages on stdout
|
|
5
|
-
const transport = new StdioServerTransport();
|
|
6
|
-
await createServer().connect(transport);
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
import exampleContext from './resources/example-context.md';
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Create the MCP Server
|
|
7
|
-
*/
|
|
8
|
-
export const createServer = () => {
|
|
9
|
-
const server = new McpServer({
|
|
10
|
-
name: "<%- name %>",
|
|
11
|
-
version: "1.0.0"
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
// Add an addition tool
|
|
15
|
-
server.tool("add", "adds two numbers",
|
|
16
|
-
{ a: z.number(), b: z.number() },
|
|
17
|
-
async ({ a, b }) => ({
|
|
18
|
-
content: [{ type: "text", text: String(a + b) }]
|
|
19
|
-
})
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
// Add a resource which provides context from a markdown file
|
|
23
|
-
server.resource('example-context', 'example://context', async (uri) => ({
|
|
24
|
-
contents: [{ uri: uri.href, text: exampleContext }],
|
|
25
|
-
}));
|
|
26
|
-
|
|
27
|
-
return server;
|
|
28
|
-
};
|
package/src/utils/zod.d.ts
DELETED
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
-
*/
|
|
5
|
-
import { Tree } from '@nx/devkit';
|
|
6
|
-
/**
|
|
7
|
-
* Adds an alias for zod imports to point to zod v4 (for forward compatiblity when v4 is published to npm)
|
|
8
|
-
*/
|
|
9
|
-
export declare const addZodV4Alias: (tree: Tree) => void;
|
package/src/utils/zod.js
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.addZodV4Alias = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
6
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
7
|
-
*/
|
|
8
|
-
const devkit_1 = require("@nx/devkit");
|
|
9
|
-
/**
|
|
10
|
-
* Adds an alias for zod imports to point to zod v4 (for forward compatiblity when v4 is published to npm)
|
|
11
|
-
*/
|
|
12
|
-
const addZodV4Alias = (tree) => {
|
|
13
|
-
(0, devkit_1.updateJson)(tree, 'tsconfig.base.json', (tsConfig) => {
|
|
14
|
-
var _a, _b;
|
|
15
|
-
return (Object.assign(Object.assign({}, tsConfig), { compilerOptions: Object.assign(Object.assign({}, tsConfig.compilerOptions), { paths: Object.assign(Object.assign({}, Object.fromEntries(Object.entries((_b = (_a = tsConfig.compilerOptions) === null || _a === void 0 ? void 0 : _a.paths) !== null && _b !== void 0 ? _b : {}).filter(([k]) => k !== 'zod'))), { zod: ['./node_modules/zod/v4'] }) }) }));
|
|
16
|
-
});
|
|
17
|
-
};
|
|
18
|
-
exports.addZodV4Alias = addZodV4Alias;
|
|
19
|
-
//# sourceMappingURL=zod.js.map
|
package/src/utils/zod.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../../../../packages/nx-plugin/src/utils/zod.ts"],"names":[],"mappings":";;;AAAA;;;GAGG;AACH,uCAAiE;AAEjE;;GAEG;AACI,MAAM,aAAa,GAAG,CAAC,IAAU,EAAE,EAAE;IAC1C,IAAA,mBAAU,EAAC,IAAI,EAAE,oBAAoB,EAAE,CAAC,QAAQ,EAAE,EAAE;;QAAC,OAAA,iCAChD,QAAQ,KACX,eAAe,kCACV,QAAQ,CAAC,eAAe,KAC3B,KAAK,kCAEA,MAAM,CAAC,WAAW,CACnB,MAAM,CAAC,OAAO,CAAC,MAAA,MAAA,QAAQ,CAAC,eAAe,0CAAE,KAAK,mCAAI,EAAE,CAAC,CAAC,MAAM,CAC1D,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CACrB,CACF,KACD,GAAG,EAAE,CAAC,uBAAuB,CAAC,UAGlC,CAAA;KAAA,CAAC,CAAC;AACN,CAAC,CAAC;AAhBW,QAAA,aAAa,iBAgBxB"}
|