@rushstack/mcp-server 0.1.5 → 0.1.7
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/CHANGELOG.json +24 -0
- package/CHANGELOG.md +13 -1
- package/lib/tools/docs.tool.d.ts +1 -0
- package/lib/tools/docs.tool.d.ts.map +1 -1
- package/lib/tools/docs.tool.js +19 -11
- package/lib/tools/docs.tool.js.map +1 -1
- package/lib/tools/migrate-project.tool.js +2 -2
- package/lib/tools/migrate-project.tool.js.map +1 -1
- package/lib/tools/rush-command-validator.tool.js +1 -1
- package/lib/tools/rush-command-validator.tool.js.map +1 -1
- package/lib/utilities/command-runner.d.ts.map +1 -1
- package/lib/utilities/command-runner.js +28 -13
- package/lib/utilities/command-runner.js.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.json
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/mcp-server",
|
|
3
3
|
"entries": [
|
|
4
|
+
{
|
|
5
|
+
"version": "0.1.7",
|
|
6
|
+
"tag": "@rushstack/mcp-server_v0.1.7",
|
|
7
|
+
"date": "Tue, 13 May 2025 02:09:20 GMT",
|
|
8
|
+
"comments": {
|
|
9
|
+
"dependency": [
|
|
10
|
+
{
|
|
11
|
+
"comment": "Updating dependency \"@rushstack/heft\" to `0.73.6`"
|
|
12
|
+
}
|
|
13
|
+
]
|
|
14
|
+
}
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"version": "0.1.6",
|
|
18
|
+
"tag": "@rushstack/mcp-server_v0.1.6",
|
|
19
|
+
"date": "Wed, 07 May 2025 15:11:17 GMT",
|
|
20
|
+
"comments": {
|
|
21
|
+
"patch": [
|
|
22
|
+
{
|
|
23
|
+
"comment": "Follow-ups to #5215"
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}
|
|
27
|
+
},
|
|
4
28
|
{
|
|
5
29
|
"version": "0.1.5",
|
|
6
30
|
"tag": "@rushstack/mcp-server_v0.1.5",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# Change Log - @rushstack/mcp-server
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Tue, 13 May 2025 02:09:20 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 0.1.7
|
|
6
|
+
Tue, 13 May 2025 02:09:20 GMT
|
|
7
|
+
|
|
8
|
+
_Version update only_
|
|
9
|
+
|
|
10
|
+
## 0.1.6
|
|
11
|
+
Wed, 07 May 2025 15:11:17 GMT
|
|
12
|
+
|
|
13
|
+
### Patches
|
|
14
|
+
|
|
15
|
+
- Follow-ups to #5215
|
|
4
16
|
|
|
5
17
|
## 0.1.5
|
|
6
18
|
Fri, 02 May 2025 15:11:29 GMT
|
package/lib/tools/docs.tool.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.tool.d.ts","sourceRoot":"","sources":["../../src/tools/docs.tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"docs.tool.d.ts","sourceRoot":"","sources":["../../src/tools/docs.tool.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAY5D,qBAAa,YAAa,SAAQ,QAAQ;;IAaxC,OAAO,CAAC,WAAW;IAeN,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,cAAc,CAAC;CAYzF"}
|
package/lib/tools/docs.tool.js
CHANGED
|
@@ -1,35 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.
|
|
3
3
|
// See LICENSE in the project root for license information.
|
|
4
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
5
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
6
|
+
};
|
|
4
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
8
|
exports.RushDocsTool = void 0;
|
|
6
9
|
const zod_1 = require("zod");
|
|
10
|
+
const node_core_library_1 = require("@rushstack/node-core-library");
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
7
12
|
const base_tool_1 = require("./base.tool");
|
|
8
13
|
class RushDocsTool extends base_tool_1.BaseTool {
|
|
9
14
|
constructor() {
|
|
10
15
|
super({
|
|
11
16
|
name: 'rush_docs',
|
|
12
|
-
description: 'Search and retrieve relevant sections from
|
|
17
|
+
description: 'Search and retrieve relevant sections from the official Rush documentation based on user queries.',
|
|
13
18
|
schema: {
|
|
14
19
|
userQuery: zod_1.z.string().describe('The user query to search for relevant documentation sections.')
|
|
15
20
|
}
|
|
16
21
|
});
|
|
17
22
|
}
|
|
23
|
+
// TODO: replace with Microsoft's service
|
|
24
|
+
_searchDocs(query) {
|
|
25
|
+
const startTime = Date.now();
|
|
26
|
+
const results = node_core_library_1.JsonFile.load(path_1.default.join(__dirname, '../rush-doc-fragment.mock.json'));
|
|
27
|
+
return {
|
|
28
|
+
query,
|
|
29
|
+
results,
|
|
30
|
+
count: results.length,
|
|
31
|
+
searchTimeMs: Date.now() - startTime
|
|
32
|
+
};
|
|
33
|
+
}
|
|
18
34
|
async executeAsync({ userQuery }) {
|
|
19
|
-
|
|
20
|
-
const response = await fetch('http://47.120.46.115/search', {
|
|
21
|
-
method: 'POST',
|
|
22
|
-
headers: {
|
|
23
|
-
'Content-Type': 'application/json'
|
|
24
|
-
},
|
|
25
|
-
body: JSON.stringify({ query: userQuery, topK: 10 })
|
|
26
|
-
});
|
|
27
|
-
const result = (await response.json());
|
|
35
|
+
const docSearchResult = this._searchDocs(userQuery);
|
|
28
36
|
return {
|
|
29
37
|
content: [
|
|
30
38
|
{
|
|
31
39
|
type: 'text',
|
|
32
|
-
text:
|
|
40
|
+
text: docSearchResult.results.map((item) => item.text).join('\n\n')
|
|
33
41
|
}
|
|
34
42
|
]
|
|
35
43
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs.tool.js","sourceRoot":"","sources":["../../src/tools/docs.tool.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D
|
|
1
|
+
{"version":3,"file":"docs.tool.js","sourceRoot":"","sources":["../../src/tools/docs.tool.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;AAE3D,6BAAwB;AACxB,oEAAwD;AACxD,gDAAwB;AAExB,2CAA4D;AAY5D,MAAa,YAAa,SAAQ,oBAAQ;IACxC;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,WAAW;YACjB,WAAW,EACT,mGAAmG;YACrG,MAAM,EAAE;gBACN,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,+DAA+D,CAAC;aAChG;SACF,CAAC,CAAC;IACL,CAAC;IAED,yCAAyC;IACjC,WAAW,CAAC,KAAa;QAC/B,MAAM,SAAS,GAAW,IAAI,CAAC,GAAG,EAAE,CAAC;QAErC,MAAM,OAAO,GAA2B,4BAAQ,CAAC,IAAI,CACnD,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gCAAgC,CAAC,CACvD,CAAC;QAEF,OAAO;YACL,KAAK;YACL,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS;SACrC,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EAAE,SAAS,EAAyB;QAC5D,MAAM,eAAe,GAAgB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEjE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;iBACpE;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAxCD,oCAwCC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { z } from 'zod';\nimport { JsonFile } from '@rushstack/node-core-library';\nimport path from 'path';\n\nimport { BaseTool, type CallToolResult } from './base.tool';\n\ninterface IDocsResult {\n query: string;\n results: {\n score: number;\n text: string;\n }[];\n count: number;\n searchTimeMs: number;\n}\n\nexport class RushDocsTool extends BaseTool {\n public constructor() {\n super({\n name: 'rush_docs',\n description:\n 'Search and retrieve relevant sections from the official Rush documentation based on user queries.',\n schema: {\n userQuery: z.string().describe('The user query to search for relevant documentation sections.')\n }\n });\n }\n\n // TODO: replace with Microsoft's service\n private _searchDocs(query: string): IDocsResult {\n const startTime: number = Date.now();\n\n const results: IDocsResult['results'] = JsonFile.load(\n path.join(__dirname, '../rush-doc-fragment.mock.json')\n );\n\n return {\n query,\n results,\n count: results.length,\n searchTimeMs: Date.now() - startTime\n };\n }\n\n public async executeAsync({ userQuery }: { userQuery: string }): Promise<CallToolResult> {\n const docSearchResult: IDocsResult = this._searchDocs(userQuery);\n\n return {\n content: [\n {\n type: 'text',\n text: docSearchResult.results.map((item) => item.text).join('\\n\\n')\n }\n ]\n };\n }\n}\n"]}
|
|
@@ -89,8 +89,8 @@ class RushMigrateProjectTool extends base_tool_1.BaseTool {
|
|
|
89
89
|
{
|
|
90
90
|
type: 'text',
|
|
91
91
|
text: `Project "${projectName}" migrated to subspace "${targetSubspaceName}" successfully. ` +
|
|
92
|
-
`You can ask whether user wants to run "rush update --subspace ${targetSubspaceName}" to update the project. ` +
|
|
93
|
-
`If user says "yes" you can run "rush update --subspace ${targetSubspaceName}" directly for them.`
|
|
92
|
+
`You can ask whether the user wants to run "rush update --subspace ${targetSubspaceName}" to update the project. ` +
|
|
93
|
+
`If the user says "yes", you can run "rush update --subspace ${targetSubspaceName}" directly for them.`
|
|
94
94
|
}
|
|
95
95
|
]
|
|
96
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate-project.tool.js","sourceRoot":"","sources":["../../src/tools/migrate-project.tool.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"migrate-project.tool.js","sourceRoot":"","sources":["../../src/tools/migrate-project.tool.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;AAE3D,6BAAwB;AACxB,oEAAoE;AAEpE,2CAA4D;AAC5D,gDAA2D;AAC3D,gDAAwB;AAMxB,MAAa,sBAAuB,SAAQ,oBAAQ;IAGlD,YAAmB,iBAAyB;QAC1C,KAAK,CAAC;YACJ,IAAI,EAAE,sBAAsB;YAC5B,WAAW,EAAE,iFAAiF;YAC9F,MAAM,EAAE;gBACN,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;gBAC1E,iBAAiB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2CAA2C,CAAC;gBAC9F,kBAAkB,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,+CAA+C,CAAC;aACpG;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,GAAG,iBAAiB,CAAC;IAC9C,CAAC;IAEO,KAAK,CAAC,mCAAmC,CAC/C,iBAAoC,EACpC,EAA6D;QAE7D,MAAM,mBAAmB,GAAW,cAAI,CAAC,OAAO,CAC9C,iBAAiB,CAAC,sBAAsB,EACxC,gBAAgB,CACjB,CAAC;QACF,MAAM,sBAAsB,GAAgC,MAAM,4BAAQ,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAC1G,MAAM,gBAAgB,GAAa,MAAM,EAAE,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC;QAClF,sBAAsB,CAAC,aAAa,GAAG,gBAAgB,CAAC;QACxD,MAAM,4BAAQ,CAAC,SAAS,CAAC,sBAAsB,EAAE,mBAAmB,EAAE;YACpE,kBAAkB,EAAE,IAAI;SACzB,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,oCAAoC,CAChD,iBAAoC,EACpC,EAE+E;QAE/E,MAAM,qBAAqB,GAA2B,iBAAiB,CAAC,qBAAqB,CAAC;QAC9F,MAAM,qBAAqB,GAAW,iBAAiB,CAAC,YAAY,CAAC;QACrE,MAAM,+BAA+B,GAAoC,MAAM,EAAE,CAC/E,qBAAqB,CAAC,QAAQ,CAC/B,CAAC;QACF,qBAAqB,CAAC,QAAQ,GAAG,+BAA+B,CAAC;QACjE,MAAM,4BAAQ,CAAC,SAAS,CAAC,qBAAqB,EAAE,qBAAqB,EAAE,EAAE,kBAAkB,EAAE,IAAI,EAAE,CAAC,CAAC;IACvG,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EACxB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAKlB;QACC,MAAM,iBAAiB,GAAsB,MAAM,IAAA,6BAAoB,GAAE,CAAC;QAC1E,MAAM,OAAO,GAAyC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEtG,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,WAAW,aAAa,EAAE,CAAC;aACxE,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAW,IAAI,CAAC,kBAAkB,CAAC;QACjD,MAAM,yBAAyB,GAAW,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;QACxE,MAAM,iBAAiB,GAAW,OAAO,CAAC,aAAa,CAAC;QACxD,MAAM,eAAe,GAAW,cAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CAAC;QAC1E,MAAM,yBAAyB,GAAY,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC;QAEvF,mCAAmC;QACnC,IAAI,yBAAyB,EAAE,CAAC;YAC9B,MAAM,wBAAwB,GAAW,OAAO,CAAC,QAAQ,CAAC,2BAA2B,EAAE,CAAC;YACxF,MAAM,8BAAU,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,CAAC;QAC/D,CAAC;QAED,qCAAqC;QACrC,MAAM,8BAAU,CAAC,SAAS,CAAC;YACzB,UAAU,EAAE,iBAAiB;YAC7B,eAAe;SAChB,CAAC,CAAC;QAEH,+BAA+B;QAC/B,MAAM,IAAI,CAAC,oCAAoC,CAAC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE;YAC9E,MAAM,YAAY,GAAW,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;YAClG,QAAQ,CAAC,YAAY,CAAC,GAAG;gBACvB,GAAG,QAAQ,CAAC,YAAY,CAAC;gBACzB,YAAY,EAAE,kBAAkB;gBAChC,aAAa,EAAE,cAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;aACxD,CAAC;YACF,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,6BAA6B;QAC7B,MAAM,IAAI,CAAC,mCAAmC,CAAC,iBAAiB,EAAE,CAAC,aAAa,EAAE,EAAE;YAClF,IAAI,yBAAyB,EAAE,CAAC;gBAC9B,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC,CAAC;YAC5E,CAAC;YACD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;gBAChD,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACzC,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EACF,YAAY,WAAW,2BAA2B,kBAAkB,kBAAkB;wBACtF,qEAAqE,kBAAkB,2BAA2B;wBAClH,+DAA+D,kBAAkB,sBAAsB;iBAC1G;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAvHD,wDAuHC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { z } from 'zod';\nimport { FileSystem, JsonFile } from '@rushstack/node-core-library';\n\nimport { BaseTool, type CallToolResult } from './base.tool';\nimport { getRushConfiguration } from '../utilities/common';\nimport path from 'path';\nimport type { ISubspacesConfigurationJson } from '@rushstack/rush-sdk/lib/api/SubspacesConfiguration';\nimport type { RushConfiguration, RushConfigurationProject } from '@rushstack/rush-sdk';\nimport type { IRushConfigurationProjectJson } from '@rushstack/rush-sdk/lib/api/RushConfigurationProject';\nimport type { IRushConfigurationJson } from '@rushstack/rush-sdk/lib/api/RushConfiguration';\n\nexport class RushMigrateProjectTool extends BaseTool {\n private _rushWorkspacePath: string;\n\n public constructor(rushWorkspacePath: string) {\n super({\n name: 'rush_migrate_project',\n description: 'Migrate a project to a different location or subspace within the Rush monorepo.',\n schema: {\n projectName: z.string().describe('The name of the project to be migrated'),\n targetProjectPath: z.string().optional().describe('The target path to migrate the project to'),\n targetSubspaceName: z.string().optional().describe('The target subspace to migrate the project to')\n }\n });\n\n this._rushWorkspacePath = rushWorkspacePath;\n }\n\n private async _modifyAndSaveSubspaceJsonFileAsync(\n rushConfiguration: RushConfiguration,\n cb: (subspaceNames: string[]) => Promise<string[]> | string[]\n ): Promise<void> {\n const subspacesFolderPath: string = path.resolve(\n rushConfiguration.commonRushConfigFolder,\n 'subspaces.json'\n );\n const subspacesConfiguration: ISubspacesConfigurationJson = await JsonFile.loadAsync(subspacesFolderPath);\n const newSubspaceNames: string[] = await cb(subspacesConfiguration.subspaceNames);\n subspacesConfiguration.subspaceNames = newSubspaceNames;\n await JsonFile.saveAsync(subspacesConfiguration, subspacesFolderPath, {\n updateExistingFile: true\n });\n }\n\n private async _modifyAndSaveRushConfigurationAsync(\n rushConfiguration: RushConfiguration,\n cb: (\n projects: IRushConfigurationProjectJson[]\n ) => Promise<IRushConfigurationProjectJson[]> | IRushConfigurationProjectJson[]\n ): Promise<void> {\n const rushConfigurationJson: IRushConfigurationJson = rushConfiguration.rushConfigurationJson;\n const rushConfigurationFile: string = rushConfiguration.rushJsonFile;\n const newRushConfigurationProjectJson: IRushConfigurationProjectJson[] = await cb(\n rushConfigurationJson.projects\n );\n rushConfigurationJson.projects = newRushConfigurationProjectJson;\n await JsonFile.saveAsync(rushConfigurationJson, rushConfigurationFile, { updateExistingFile: true });\n }\n\n public async executeAsync({\n projectName,\n targetSubspaceName,\n targetProjectPath\n }: {\n projectName: string;\n targetProjectPath: string;\n targetSubspaceName: string;\n }): Promise<CallToolResult> {\n const rushConfiguration: RushConfiguration = await getRushConfiguration();\n const project: RushConfigurationProject | undefined = rushConfiguration.getProjectByName(projectName);\n\n if (!project) {\n return {\n isError: true,\n content: [{ type: 'text', text: `Project \"${projectName}\" not found` }]\n };\n }\n\n const rootPath: string = this._rushWorkspacePath;\n const sourceProjectSubspaceName: string = project.subspace.subspaceName;\n const sourceProjectPath: string = project.projectFolder;\n const destinationPath: string = path.resolve(rootPath, targetProjectPath);\n const subspacehasOnlyOneProject: boolean = project.subspace.getProjects().length === 1;\n\n // 1. Remove source subspace folder\n if (subspacehasOnlyOneProject) {\n const subspaceConfigFolderPath: string = project.subspace.getSubspaceConfigFolderPath();\n await FileSystem.deleteFolderAsync(subspaceConfigFolderPath);\n }\n\n // 2. Move project to target subspace\n await FileSystem.moveAsync({\n sourcePath: sourceProjectPath,\n destinationPath\n });\n\n // 3. Update rush configuration\n await this._modifyAndSaveRushConfigurationAsync(rushConfiguration, (projects) => {\n const projectIndex: number = projects.findIndex(({ packageName }) => packageName === projectName);\n projects[projectIndex] = {\n ...projects[projectIndex],\n subspaceName: targetSubspaceName,\n projectFolder: path.relative(rootPath, destinationPath)\n };\n return projects;\n });\n\n // 4. Update `subspaces.json`\n await this._modifyAndSaveSubspaceJsonFileAsync(rushConfiguration, (subspaceNames) => {\n if (subspacehasOnlyOneProject) {\n subspaceNames.splice(subspaceNames.indexOf(sourceProjectSubspaceName), 1);\n }\n if (!subspaceNames.includes(targetSubspaceName)) {\n subspaceNames.push(targetSubspaceName);\n }\n return subspaceNames;\n });\n\n return {\n content: [\n {\n type: 'text',\n text:\n `Project \"${projectName}\" migrated to subspace \"${targetSubspaceName}\" successfully. ` +\n `You can ask whether the user wants to run \"rush update --subspace ${targetSubspaceName}\" to update the project. ` +\n `If the user says \"yes\", you can run \"rush update --subspace ${targetSubspaceName}\" directly for them.`\n }\n ]\n };\n }\n}\n"]}
|
|
@@ -65,7 +65,7 @@ class RushCommandValidatorTool extends base_tool_1.BaseTool {
|
|
|
65
65
|
content: [
|
|
66
66
|
{
|
|
67
67
|
type: 'text',
|
|
68
|
-
text: `The package "${packageName}" does not exist in the Rush workspace. You can
|
|
68
|
+
text: `The package "${packageName}" does not exist in the Rush workspace. You can retrieve the package name from the 'package.json' file in the project folder.`
|
|
69
69
|
}
|
|
70
70
|
]
|
|
71
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rush-command-validator.tool.js","sourceRoot":"","sources":["../../src/tools/rush-command-validator.tool.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;;;;AAE3D,6BAAwB;AACxB,oEAAwD;AACxD,gDAAwB;AAIxB,gDAA2D;AAC3D,2CAA4D;AAE/C,QAAA,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,IAAI;IACJ,MAAM;IACN,aAAa;IACb,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,QAAQ;IACR,IAAI;IACJ,eAAe;IACf,IAAI;IACJ,sBAAsB;IACtB,IAAI;CACL,CAAC,CAAC;AAEH,MAAa,wBAAyB,SAAQ,oBAAQ;IACpD;QACE,KAAK,CAAC;YACJ,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EACT,6NAA6N;YAC/N,MAAM,EAAE;gBACN,WAAW,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;gBAC9F,cAAc,EAAE,OAAC;qBACd,MAAM,EAAE;qBACR,QAAQ,CACP,0FAA0F,CAC3F;gBACH,IAAI,EAAE,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,8CAA8C,CAAC;aACnF;SACF,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,YAAY,CAAC,EACxB,WAAW,EACX,cAAc,EACd,IAAI,EAKL;;QACC,MAAM,iBAAiB,GAAsB,MAAM,IAAA,6BAAoB,GAAE,CAAC;QAC1E,MAAM,eAAe,GAAqB,MAAM,4BAAQ,CAAC,SAAS,CAChE,cAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,CAAC,CACpF,CAAC;QACF,MAAM,wBAAwB,GAAgB,IAAI,GAAG,CACnD,MAAA,eAAe,CAAC,QAAQ,0CACpB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,WAAW,KAAK,QAAQ,EACrD,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAClC,CAAC;QAEF,IAAI,wBAAwB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,0BAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACrG,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,wCAAwC,KAAK,CAAC,IAAI,CAAC,0BAAkB,CAAC,CAAC,IAAI,CAC/E,IAAI,CACL,0HAA0H;qBAC5H;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YAC1C,IAAI,0BAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAW,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC5C,MAAM,cAAc,GAClB,WAAW,KAAK,GAAG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC;gBAE/F,IAAI,CAAC,cAAc,EAAE,CAAC;oBACpB,OAAO;wBACL,OAAO,EAAE,IAAI;wBACb,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,gBAAgB,WAAW
|
|
1
|
+
{"version":3,"file":"rush-command-validator.tool.js","sourceRoot":"","sources":["../../src/tools/rush-command-validator.tool.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport { z } from 'zod';\nimport { JsonFile } from '@rushstack/node-core-library';\nimport path from 'path';\nimport type { ICommandLineJson } from '@rushstack/rush-sdk/lib/api/CommandLineJson';\nimport type { RushConfiguration } from '@rushstack/rush-sdk';\n\nimport { getRushConfiguration } from '../utilities/common';\nimport { BaseTool, type CallToolResult } from './base.tool';\n\nexport const selectionParamsSet: ReadonlySet<string> = new Set([\n '-t',\n '--to',\n '--to-except',\n '-T',\n '--from',\n '-f',\n '--only',\n '-o',\n '--impacted-by',\n '-i',\n '--impacted-by-except',\n '-I'\n]);\n\nexport class RushCommandValidatorTool extends BaseTool {\n public constructor() {\n super({\n name: 'rush_command_validator',\n description:\n 'Validates Rush commands before execution by checking command format and ensuring compliance with Rush command standards. This tool helps prevent invalid command usage and provides guidance on proper parameter selection.',\n schema: {\n commandName: z.enum(['rush', 'rushx']).describe('The main command to execute (rush or rushx)'),\n subCommandName: z\n .string()\n .describe(\n 'The Rush subcommand to validate (install, update, add, remove, purge, list, build, etc.)'\n ),\n args: z.array(z.string()).describe('The arguments to validate for the subcommand')\n }\n });\n }\n\n public async executeAsync({\n commandName,\n subCommandName,\n args\n }: {\n commandName: string;\n subCommandName: string;\n args: string[];\n }): Promise<CallToolResult> {\n const rushConfiguration: RushConfiguration = await getRushConfiguration();\n const commandLineJson: ICommandLineJson = await JsonFile.loadAsync(\n path.resolve(rushConfiguration.commonFolder, 'config', 'rush', 'command-line.json')\n );\n const conditionSubCommandNames: Set<string> = new Set(\n commandLineJson.commands\n ?.filter((command) => command.commandKind !== 'global')\n .map((command) => command.name)\n );\n\n if (conditionSubCommandNames.has(subCommandName) && !args.some((arg) => selectionParamsSet.has(arg))) {\n return {\n isError: true,\n content: [\n {\n type: 'text',\n text: `Please add selection parameters like ${Array.from(selectionParamsSet).join(\n ', '\n )} to the command and re-validate. The package name should be retrieved from the package.json file in your project folder.`\n }\n ]\n };\n }\n\n for (const [index, arg] of args.entries()) {\n if (selectionParamsSet.has(arg)) {\n const packageName: string = args[index + 1];\n const isValidPackage: boolean =\n packageName === '.' || rushConfiguration.projects.some((p) => p.packageName === packageName);\n\n if (!isValidPackage) {\n return {\n isError: true,\n content: [\n {\n type: 'text',\n text: `The package \"${packageName}\" does not exist in the Rush workspace. You can retrieve the package name from the 'package.json' file in the project folder.`\n }\n ]\n };\n }\n }\n }\n\n const commandStr: string = `${commandName} ${subCommandName} ${args.join(' ')}`;\n const text: string = `Command \"${commandStr}\" validated successfully, you can ${\n commandName === 'rushx' || subCommandName === 'add' ? 'enter the project folder and ' : ''\n }execute it now.`;\n\n return {\n content: [\n {\n type: 'text',\n text\n }\n ]\n };\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/utilities/command-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE5F,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAInF;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAyC;IAE9E,OAAO,CAAC,MAAM,CAAC,eAAe;mBAoBT,oBAAoB;
|
|
1
|
+
{"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../src/utilities/command-runner.ts"],"names":[],"mappings":"AAIA,OAAO,EAAc,KAAK,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAE5F,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,qBAAa,qBAAsB,SAAQ,KAAK;gBAC3B,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAInF;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAyC;IAE9E,OAAO,CAAC,MAAM,CAAC,eAAe;mBAoBT,oBAAoB;WAyCrB,mBAAmB,CACrC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,cAAc,CAAC;WAIN,oBAAoB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,cAAc,CAAC;WAIN,kBAAkB,CACpC,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,CAAC,EAAE,2BAA2B,GACpC,OAAO,CAAC,cAAc,CAAC;CAG3B"}
|
|
@@ -29,20 +29,35 @@ class CommandRunner {
|
|
|
29
29
|
return resolvedPath;
|
|
30
30
|
}
|
|
31
31
|
static async _executeCommandAsync(command, args, options) {
|
|
32
|
-
var _a;
|
|
33
32
|
const commandPath = this._resolveCommand(command);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
stderr:
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
33
|
+
return new Promise((resolve, reject) => {
|
|
34
|
+
var _a, _b;
|
|
35
|
+
const childProcess = node_core_library_1.Executable.spawn(commandPath, args, options);
|
|
36
|
+
let stdout = '';
|
|
37
|
+
let stderr = '';
|
|
38
|
+
(_a = childProcess.stdout) === null || _a === void 0 ? void 0 : _a.on('data', (data) => {
|
|
39
|
+
stdout += data.toString();
|
|
40
|
+
});
|
|
41
|
+
(_b = childProcess.stderr) === null || _b === void 0 ? void 0 : _b.on('data', (data) => {
|
|
42
|
+
stderr += data.toString();
|
|
43
|
+
});
|
|
44
|
+
childProcess.on('close', (status) => {
|
|
45
|
+
if (status !== 0) {
|
|
46
|
+
reject(new CommandExecutionError(command, args, stderr, status !== null && status !== void 0 ? status : 1));
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
resolve({
|
|
50
|
+
status: status !== null && status !== void 0 ? status : 0,
|
|
51
|
+
stdout,
|
|
52
|
+
stderr,
|
|
53
|
+
command,
|
|
54
|
+
args
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
childProcess.on('error', (error) => {
|
|
58
|
+
reject(error);
|
|
59
|
+
});
|
|
60
|
+
});
|
|
46
61
|
}
|
|
47
62
|
static async runRushCommandAsync(args, options) {
|
|
48
63
|
return this._executeCommandAsync('rush', args, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/utilities/command-runner.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAG3D,oEAA4F;AAU5F,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAmB,OAAe,EAAE,IAAc,EAAE,MAAc,EAAE,MAAc;QAChF,KAAK,CAAC,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,aAAa;IAGhB,MAAM,CAAC,eAAe,CAAC,OAAe;;QAC5C,MAAM,UAAU,GAA8B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,YAAY,GAAkB,MAAA,8BAAU,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAAe,EACf,IAAc,EACd,OAAqC
|
|
1
|
+
{"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../src/utilities/command-runner.ts"],"names":[],"mappings":";AAAA,4FAA4F;AAC5F,2DAA2D;;;AAG3D,oEAA4F;AAU5F,MAAa,qBAAsB,SAAQ,KAAK;IAC9C,YAAmB,OAAe,EAAE,IAAc,EAAE,MAAc,EAAE,MAAc;QAChF,KAAK,CAAC,YAAY,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,MAAM,MAAM,MAAM,EAAE,CAAC,CAAC;QACzF,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AALD,sDAKC;AAED,MAAa,aAAa;IAGhB,MAAM,CAAC,eAAe,CAAC,OAAe;;QAC5C,MAAM,UAAU,GAA8B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,MAAM,YAAY,GAAkB,MAAA,8BAAU,CAAC,UAAU,CAAC,OAAO,CAAC,mCAAI,IAAI,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE9C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,YAAY,OAAO,4BAA4B,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACvC,OAAe,EACf,IAAc,EACd,OAAqC;QAErC,MAAM,WAAW,GAAW,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAE1D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;;YACrC,MAAM,YAAY,GAAiB,8BAAU,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;YAChF,IAAI,MAAM,GAAW,EAAE,CAAC;YACxB,IAAI,MAAM,GAAW,EAAE,CAAC;YAExB,MAAA,YAAY,CAAC,MAAM,0CAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,MAAA,YAAY,CAAC,MAAM,0CAAE,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACvC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE;gBAClC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;oBACjB,MAAM,CAAC,IAAI,qBAAqB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC,CAAC,CAAC,CAAC;oBACtE,OAAO;gBACT,CAAC;gBAED,OAAO,CAAC;oBACN,MAAM,EAAE,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,CAAC;oBACnB,MAAM;oBACN,MAAM;oBACN,OAAO;oBACP,IAAI;iBACL,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;gBACjC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,mBAAmB,CACrC,IAAc,EACd,OAAqC;QAErC,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,oBAAoB,CACtC,IAAc,EACd,OAAqC;QAErC,OAAO,IAAI,CAAC,oBAAoB,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3D,CAAC;IAEM,MAAM,CAAC,KAAK,CAAC,kBAAkB,CACpC,IAAc,EACd,OAAqC;QAErC,OAAO,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IACzD,CAAC;;AAnFH,sCAoFC;AAnFyB,2BAAa,GAA+B,IAAI,GAAG,EAAE,CAAC","sourcesContent":["// Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the MIT license.\n// See LICENSE in the project root for license information.\n\nimport type { ChildProcess } from 'child_process';\nimport { Executable, type IExecutableSpawnSyncOptions } from '@rushstack/node-core-library';\n\ninterface ICommandResult {\n status: number;\n stdout: string;\n stderr: string;\n command: string;\n args: string[];\n}\n\nexport class CommandExecutionError extends Error {\n public constructor(command: string, args: string[], stderr: string, status: number) {\n super(`Command \"${command} ${args.join(' ')}\" failed with status ${status}:\\n${stderr}`);\n this.name = 'CommandExecutionError';\n }\n}\n\nexport class CommandRunner {\n private static readonly _commandCache: Map<string, string | null> = new Map();\n\n private static _resolveCommand(command: string): string {\n const cachedPath: string | null | undefined = this._commandCache.get(command);\n if (cachedPath === null) {\n throw new Error(`Command \"${command}\" not found in system PATH`);\n }\n\n if (cachedPath) {\n return cachedPath;\n }\n\n const resolvedPath: string | null = Executable.tryResolve(command) ?? null;\n this._commandCache.set(command, resolvedPath);\n\n if (!resolvedPath) {\n throw new Error(`Command \"${command}\" not found in system PATH`);\n }\n\n return resolvedPath;\n }\n\n private static async _executeCommandAsync(\n command: string,\n args: string[],\n options?: IExecutableSpawnSyncOptions\n ): Promise<ICommandResult> {\n const commandPath: string = this._resolveCommand(command);\n\n return new Promise((resolve, reject) => {\n const childProcess: ChildProcess = Executable.spawn(commandPath, args, options);\n let stdout: string = '';\n let stderr: string = '';\n\n childProcess.stdout?.on('data', (data) => {\n stdout += data.toString();\n });\n\n childProcess.stderr?.on('data', (data) => {\n stderr += data.toString();\n });\n\n childProcess.on('close', (status) => {\n if (status !== 0) {\n reject(new CommandExecutionError(command, args, stderr, status ?? 1));\n return;\n }\n\n resolve({\n status: status ?? 0,\n stdout,\n stderr,\n command,\n args\n });\n });\n\n childProcess.on('error', (error) => {\n reject(error);\n });\n });\n }\n\n public static async runRushCommandAsync(\n args: string[],\n options?: IExecutableSpawnSyncOptions\n ): Promise<ICommandResult> {\n return this._executeCommandAsync('rush', args, options);\n }\n\n public static async runRushXCommandAsync(\n args: string[],\n options?: IExecutableSpawnSyncOptions\n ): Promise<ICommandResult> {\n return this._executeCommandAsync('rushx', args, options);\n }\n\n public static async runGitCommandAsync(\n args: string[],\n options?: IExecutableSpawnSyncOptions\n ): Promise<ICommandResult> {\n return this._executeCommandAsync('git', args, options);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rushstack/mcp-server",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7",
|
|
4
4
|
"description": "A Model Context Protocol server implementation for Rush",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,16 +19,16 @@
|
|
|
19
19
|
"dependencies": {
|
|
20
20
|
"@modelcontextprotocol/sdk": "~1.10.2",
|
|
21
21
|
"zod": "~3.24.3",
|
|
22
|
+
"@rushstack/node-core-library": "5.13.1",
|
|
22
23
|
"@rushstack/terminal": "0.15.3",
|
|
23
24
|
"@rushstack/rush-sdk": "5.153.1",
|
|
24
|
-
"@rushstack/node-core-library": "5.13.1",
|
|
25
25
|
"@rushstack/ts-command-line": "5.0.1"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"typescript": "~5.8.2",
|
|
29
29
|
"@types/node": "20.17.19",
|
|
30
|
-
"
|
|
31
|
-
"
|
|
30
|
+
"@rushstack/heft": "0.73.6",
|
|
31
|
+
"local-node-rig": "1.0.0"
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "heft build --clean",
|