@opensumi/ide-ai-native 3.7.2-next-1740107209.0 → 3.7.2-next-1740365741.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/lib/browser/ai-core.contribution.d.ts +3 -1
- package/lib/browser/ai-core.contribution.d.ts.map +1 -1
- package/lib/browser/ai-core.contribution.js +13 -1
- package/lib/browser/ai-core.contribution.js.map +1 -1
- package/lib/browser/chat/chat-manager.service.d.ts +30 -2
- package/lib/browser/chat/chat-manager.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-manager.service.js +45 -1
- package/lib/browser/chat/chat-manager.service.js.map +1 -1
- package/lib/browser/chat/chat-model.d.ts +33 -6
- package/lib/browser/chat/chat-model.d.ts.map +1 -1
- package/lib/browser/chat/chat-model.js +50 -29
- package/lib/browser/chat/chat-model.js.map +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts +1 -1
- package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
- package/lib/browser/chat/chat-proxy.service.js +1 -1
- package/lib/browser/chat/chat-proxy.service.js.map +1 -1
- package/lib/browser/chat/chat.internal.service.d.ts +4 -2
- package/lib/browser/chat/chat.internal.service.d.ts.map +1 -1
- package/lib/browser/chat/chat.internal.service.js +31 -12
- package/lib/browser/chat/chat.internal.service.js.map +1 -1
- package/lib/browser/chat/chat.module.less +8 -42
- package/lib/browser/chat/chat.view.d.ts.map +1 -1
- package/lib/browser/chat/chat.view.js +85 -31
- package/lib/browser/chat/chat.view.js.map +1 -1
- package/lib/browser/components/ChatContext/index.d.ts.map +1 -1
- package/lib/browser/components/ChatContext/index.js +18 -2
- package/lib/browser/components/ChatContext/index.js.map +1 -1
- package/lib/browser/components/ChatContext/style.module.less +12 -0
- package/lib/browser/components/ChatHistory.d.ts +21 -0
- package/lib/browser/components/ChatHistory.d.ts.map +1 -0
- package/lib/browser/components/ChatHistory.js +148 -0
- package/lib/browser/components/ChatHistory.js.map +1 -0
- package/lib/browser/components/ChatReply.d.ts.map +1 -1
- package/lib/browser/components/ChatReply.js +3 -1
- package/lib/browser/components/ChatReply.js.map +1 -1
- package/lib/browser/components/ChatThinking.js +1 -1
- package/lib/browser/components/ChatThinking.js.map +1 -1
- package/lib/browser/components/ChatToolRender.d.ts +1 -1
- package/lib/browser/components/ChatToolRender.d.ts.map +1 -1
- package/lib/browser/components/ChatToolRender.js +15 -18
- package/lib/browser/components/ChatToolRender.js.map +1 -1
- package/lib/browser/components/chat-history.css +139 -0
- package/lib/browser/components/components.module.less +2 -2
- package/lib/browser/components/utils.d.ts +2 -2
- package/lib/browser/context/llm-context.service.d.ts +1 -0
- package/lib/browser/context/llm-context.service.d.ts.map +1 -1
- package/lib/browser/context/llm-context.service.js +24 -18
- package/lib/browser/context/llm-context.service.js.map +1 -1
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +5 -13
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/layout/layout.module.less +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.d.ts.map +1 -1
- package/lib/browser/mcp/mcp-server.feature.registry.js +2 -1
- package/lib/browser/mcp/mcp-server.feature.registry.js.map +1 -1
- package/lib/browser/mcp/tools/components/SearchResult.d.ts +11 -0
- package/lib/browser/mcp/tools/components/SearchResult.d.ts.map +1 -0
- package/lib/browser/mcp/tools/components/SearchResult.js +60 -0
- package/lib/browser/mcp/tools/components/SearchResult.js.map +1 -0
- package/lib/browser/mcp/tools/components/Terminal.d.ts +4 -0
- package/lib/browser/mcp/tools/components/Terminal.d.ts.map +1 -0
- package/lib/browser/mcp/tools/components/Terminal.js +64 -0
- package/lib/browser/mcp/tools/components/Terminal.js.map +1 -0
- package/lib/browser/mcp/tools/components/index.module.less +101 -0
- package/lib/browser/mcp/tools/{findFilesByNameSubstring.d.ts → fileSearch.d.ts} +3 -2
- package/lib/browser/mcp/tools/fileSearch.d.ts.map +1 -0
- package/lib/browser/mcp/tools/fileSearch.js +94 -0
- package/lib/browser/mcp/tools/fileSearch.js.map +1 -0
- package/lib/browser/mcp/tools/{getFileTextByPath.d.ts → grepSearch.d.ts} +4 -3
- package/lib/browser/mcp/tools/grepSearch.d.ts.map +1 -0
- package/lib/browser/mcp/tools/grepSearch.js +118 -0
- package/lib/browser/mcp/tools/grepSearch.js.map +1 -0
- package/lib/browser/mcp/tools/handlers/RunCommand.d.ts +43 -0
- package/lib/browser/mcp/tools/handlers/RunCommand.d.ts.map +1 -0
- package/lib/browser/mcp/tools/handlers/RunCommand.js +104 -0
- package/lib/browser/mcp/tools/handlers/RunCommand.js.map +1 -0
- package/lib/browser/mcp/tools/listDir.d.ts.map +1 -1
- package/lib/browser/mcp/tools/listDir.js +1 -0
- package/lib/browser/mcp/tools/listDir.js.map +1 -1
- package/lib/browser/mcp/tools/readFile.d.ts.map +1 -1
- package/lib/browser/mcp/tools/readFile.js +1 -0
- package/lib/browser/mcp/tools/readFile.js.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.d.ts +1 -6
- package/lib/browser/mcp/tools/runTerminalCmd.d.ts.map +1 -1
- package/lib/browser/mcp/tools/runTerminalCmd.js +9 -55
- package/lib/browser/mcp/tools/runTerminalCmd.js.map +1 -1
- package/lib/browser/model/msg-history-manager.d.ts +15 -0
- package/lib/browser/model/msg-history-manager.d.ts.map +1 -1
- package/lib/browser/model/msg-history-manager.js +28 -9
- package/lib/browser/model/msg-history-manager.js.map +1 -1
- package/lib/common/mcp-server-manager.d.ts +1 -1
- package/lib/common/mcp-server-manager.d.ts.map +1 -1
- package/lib/common/mcp-server-manager.js.map +1 -1
- package/lib/common/tool-invocation-registry.d.ts +2 -1
- package/lib/common/tool-invocation-registry.d.ts.map +1 -1
- package/lib/common/tool-invocation-registry.js.map +1 -1
- package/lib/node/base-language-model.d.ts.map +1 -1
- package/lib/node/base-language-model.js +1 -1
- package/lib/node/base-language-model.js.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts +1 -1
- package/lib/node/mcp/sumi-mcp-server.d.ts.map +1 -1
- package/lib/node/mcp/sumi-mcp-server.js +5 -2
- package/lib/node/mcp/sumi-mcp-server.js.map +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts +1 -1
- package/lib/node/mcp-server-manager-impl.d.ts.map +1 -1
- package/lib/node/mcp-server-manager-impl.js +4 -4
- package/lib/node/mcp-server-manager-impl.js.map +1 -1
- package/lib/node/mcp-server.d.ts +2 -2
- package/lib/node/mcp-server.d.ts.map +1 -1
- package/lib/node/mcp-server.js +2 -1
- package/lib/node/mcp-server.js.map +1 -1
- package/package.json +23 -22
- package/src/browser/ai-core.contribution.ts +13 -1
- package/src/browser/chat/chat-manager.service.ts +83 -7
- package/src/browser/chat/chat-model.ts +62 -12
- package/src/browser/chat/chat-proxy.service.ts +1 -1
- package/src/browser/chat/chat.internal.service.ts +23 -5
- package/src/browser/chat/chat.module.less +8 -42
- package/src/browser/chat/chat.view.tsx +143 -60
- package/src/browser/components/ChatContext/index.tsx +19 -3
- package/src/browser/components/ChatContext/style.module.less +12 -0
- package/src/browser/components/ChatHistory.tsx +292 -0
- package/src/browser/components/ChatReply.tsx +5 -1
- package/src/browser/components/ChatThinking.tsx +1 -1
- package/src/browser/components/ChatToolRender.tsx +13 -15
- package/src/browser/components/chat-history.css +139 -0
- package/src/browser/components/components.module.less +2 -2
- package/src/browser/context/llm-context.service.ts +30 -18
- package/src/browser/index.ts +5 -13
- package/src/browser/layout/layout.module.less +1 -1
- package/src/browser/mcp/mcp-server.feature.registry.ts +2 -1
- package/src/browser/mcp/tools/components/SearchResult.tsx +92 -0
- package/src/browser/mcp/tools/components/Terminal.tsx +97 -0
- package/src/browser/mcp/tools/components/index.module.less +101 -0
- package/src/browser/mcp/tools/fileSearch.ts +99 -0
- package/src/browser/mcp/tools/grepSearch.ts +121 -0
- package/src/browser/mcp/tools/handlers/RunCommand.ts +115 -0
- package/src/browser/mcp/tools/listDir.ts +1 -0
- package/src/browser/mcp/tools/readFile.ts +1 -0
- package/src/browser/mcp/tools/runTerminalCmd.ts +7 -68
- package/src/browser/model/msg-history-manager.ts +34 -1
- package/src/common/mcp-server-manager.ts +18 -13
- package/src/common/tool-invocation-registry.ts +122 -124
- package/src/node/base-language-model.ts +3 -2
- package/src/node/mcp/sumi-mcp-server.ts +5 -2
- package/src/node/mcp-server-manager-impl.ts +11 -4
- package/src/node/mcp-server.ts +3 -2
- package/lib/browser/mcp/tools/findFilesByNameSubstring.d.ts.map +0 -1
- package/lib/browser/mcp/tools/findFilesByNameSubstring.js +0 -91
- package/lib/browser/mcp/tools/findFilesByNameSubstring.js.map +0 -1
- package/lib/browser/mcp/tools/getCurrentFilePath.d.ts +0 -8
- package/lib/browser/mcp/tools/getCurrentFilePath.d.ts.map +0 -1
- package/lib/browser/mcp/tools/getCurrentFilePath.js +0 -48
- package/lib/browser/mcp/tools/getCurrentFilePath.js.map +0 -1
- package/lib/browser/mcp/tools/getFileTextByPath.d.ts.map +0 -1
- package/lib/browser/mcp/tools/getFileTextByPath.js +0 -96
- package/lib/browser/mcp/tools/getFileTextByPath.js.map +0 -1
- package/lib/browser/mcp/tools/getOpenEditorFileText.d.ts +0 -8
- package/lib/browser/mcp/tools/getOpenEditorFileText.d.ts.map +0 -1
- package/lib/browser/mcp/tools/getOpenEditorFileText.js +0 -49
- package/lib/browser/mcp/tools/getOpenEditorFileText.js.map +0 -1
- package/lib/browser/mcp/tools/getSelectedText.d.ts +0 -8
- package/lib/browser/mcp/tools/getSelectedText.d.ts.map +0 -1
- package/lib/browser/mcp/tools/getSelectedText.js +0 -56
- package/lib/browser/mcp/tools/getSelectedText.js.map +0 -1
- package/lib/browser/mcp/tools/replaceOpenEditorFile.d.ts +0 -8
- package/lib/browser/mcp/tools/replaceOpenEditorFile.d.ts.map +0 -1
- package/lib/browser/mcp/tools/replaceOpenEditorFile.js +0 -80
- package/lib/browser/mcp/tools/replaceOpenEditorFile.js.map +0 -1
- package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.d.ts +0 -8
- package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.d.ts.map +0 -1
- package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.js +0 -83
- package/lib/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.js.map +0 -1
- package/src/browser/mcp/tools/findFilesByNameSubstring.ts +0 -92
- package/src/browser/mcp/tools/getCurrentFilePath.ts +0 -48
- package/src/browser/mcp/tools/getFileTextByPath.ts +0 -96
- package/src/browser/mcp/tools/getOpenEditorFileText.ts +0 -49
- package/src/browser/mcp/tools/getSelectedText.ts +0 -56
- package/src/browser/mcp/tools/replaceOpenEditorFile.ts +0 -81
- package/src/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.ts +0 -90
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FindFilesByNameSubstringTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const path = tslib_1.__importStar(require("path"));
|
|
6
|
-
const zod_1 = require("zod");
|
|
7
|
-
const di_1 = require("@opensumi/di");
|
|
8
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
9
|
-
const common_1 = require("@opensumi/ide-file-search/lib/common");
|
|
10
|
-
const ide_workspace_1 = require("@opensumi/ide-workspace");
|
|
11
|
-
const types_1 = require("../../types");
|
|
12
|
-
const inputSchema = zod_1.z.object({
|
|
13
|
-
nameSubstring: zod_1.z.string().describe('The substring to search for in file names'),
|
|
14
|
-
});
|
|
15
|
-
let FindFilesByNameSubstringTool = class FindFilesByNameSubstringTool {
|
|
16
|
-
registerMCPServer(registry) {
|
|
17
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
18
|
-
}
|
|
19
|
-
getToolDefinition() {
|
|
20
|
-
return {
|
|
21
|
-
name: 'find_files_by_name_substring',
|
|
22
|
-
description: 'Searches for all files in the project whose names contain the specified substring (case-insensitive). ' +
|
|
23
|
-
'Use this tool to locate files when you know part of the filename. ' +
|
|
24
|
-
'Requires a nameSubstring parameter for the search term. ' +
|
|
25
|
-
'Returns a JSON array of objects containing file information: ' +
|
|
26
|
-
'- path: Path relative to project root ' +
|
|
27
|
-
'- name: File name ' +
|
|
28
|
-
'Returns an empty array ([]) if no matching files are found. ' +
|
|
29
|
-
'Note: Only searches through files within the project directory, excluding libraries and external dependencies.',
|
|
30
|
-
inputSchema,
|
|
31
|
-
handler: this.handler.bind(this),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
async handler(args, logger) {
|
|
35
|
-
try {
|
|
36
|
-
// 获取工作区根目录
|
|
37
|
-
const workspaceRoots = this.workspaceService.tryGetRoots();
|
|
38
|
-
if (!workspaceRoots || workspaceRoots.length === 0) {
|
|
39
|
-
logger.appendLine('Error: Cannot determine project directory');
|
|
40
|
-
return {
|
|
41
|
-
content: [{ type: 'text', text: '[]' }],
|
|
42
|
-
isError: true,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// 使用 OpenSumi 的文件搜索 API
|
|
46
|
-
const searchPattern = `**/*${args.nameSubstring}*`;
|
|
47
|
-
const searchResults = await this.fileSearchService.find(searchPattern, {
|
|
48
|
-
rootUris: [workspaceRoots[0].uri],
|
|
49
|
-
excludePatterns: ['**/node_modules/**'],
|
|
50
|
-
limit: 1000,
|
|
51
|
-
});
|
|
52
|
-
// 转换结果为所需的格式
|
|
53
|
-
const results = searchResults.map((file) => {
|
|
54
|
-
const uri = ide_core_common_1.URI.parse(file);
|
|
55
|
-
const rootUri = ide_core_common_1.URI.parse(workspaceRoots[0].uri);
|
|
56
|
-
const relativePath = path.relative(rootUri.codeUri.fsPath, uri.codeUri.fsPath);
|
|
57
|
-
const fileName = path.basename(uri.codeUri.fsPath);
|
|
58
|
-
return {
|
|
59
|
-
path: relativePath,
|
|
60
|
-
name: fileName,
|
|
61
|
-
};
|
|
62
|
-
});
|
|
63
|
-
// 将结果转换为 JSON 字符串
|
|
64
|
-
const resultJson = JSON.stringify(results, null, 2);
|
|
65
|
-
logger.appendLine(`Found ${results.length} files matching "${args.nameSubstring}"`);
|
|
66
|
-
return {
|
|
67
|
-
content: [{ type: 'text', text: resultJson }],
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
catch (error) {
|
|
71
|
-
logger.appendLine(`Error during file search: ${error}`);
|
|
72
|
-
return {
|
|
73
|
-
content: [{ type: 'text', text: '[]' }],
|
|
74
|
-
isError: true,
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
};
|
|
79
|
-
exports.FindFilesByNameSubstringTool = FindFilesByNameSubstringTool;
|
|
80
|
-
tslib_1.__decorate([
|
|
81
|
-
(0, di_1.Autowired)(ide_workspace_1.IWorkspaceService),
|
|
82
|
-
tslib_1.__metadata("design:type", Object)
|
|
83
|
-
], FindFilesByNameSubstringTool.prototype, "workspaceService", void 0);
|
|
84
|
-
tslib_1.__decorate([
|
|
85
|
-
(0, di_1.Autowired)(common_1.IFileSearchService),
|
|
86
|
-
tslib_1.__metadata("design:type", Object)
|
|
87
|
-
], FindFilesByNameSubstringTool.prototype, "fileSearchService", void 0);
|
|
88
|
-
exports.FindFilesByNameSubstringTool = FindFilesByNameSubstringTool = tslib_1.__decorate([
|
|
89
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
90
|
-
], FindFilesByNameSubstringTool);
|
|
91
|
-
//# sourceMappingURL=findFilesByNameSubstring.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"findFilesByNameSubstring.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/findFilesByNameSubstring.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
|
|
2
|
-
export declare class GetCurrentFilePathTool implements MCPServerContribution {
|
|
3
|
-
private readonly editorService;
|
|
4
|
-
registerMCPServer(registry: IMCPServerRegistry): void;
|
|
5
|
-
getToolDefinition(): MCPToolDefinition;
|
|
6
|
-
private handler;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=getCurrentFilePath.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getCurrentFilePath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getCurrentFilePath.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAItG,qBACa,sBAAuB,YAAW,qBAAqB;IAElE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAYxB,OAAO;CAgBtB"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GetCurrentFilePathTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const di_1 = require("@opensumi/di");
|
|
7
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
-
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
9
|
-
const types_1 = require("../../types");
|
|
10
|
-
const inputSchema = zod_1.z.object({});
|
|
11
|
-
let GetCurrentFilePathTool = class GetCurrentFilePathTool {
|
|
12
|
-
registerMCPServer(registry) {
|
|
13
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
14
|
-
}
|
|
15
|
-
getToolDefinition() {
|
|
16
|
-
return {
|
|
17
|
-
name: 'get_open_in_editor_file_path',
|
|
18
|
-
description: 'Retrieves the absolute path of the currently active file in the VS Code editor. ' +
|
|
19
|
-
'Use this tool to get the file location for tasks requiring file path information. ' +
|
|
20
|
-
'Returns an empty string if no file is currently open.',
|
|
21
|
-
inputSchema,
|
|
22
|
-
handler: this.handler.bind(this),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async handler(args, logger) {
|
|
26
|
-
const editor = this.editorService.currentEditor;
|
|
27
|
-
if (!editor || !editor.currentUri) {
|
|
28
|
-
logger.appendLine('Error: No active text editor found');
|
|
29
|
-
return {
|
|
30
|
-
content: [{ type: 'text', text: '' }],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
const path = editor.currentUri.toString();
|
|
34
|
-
logger.appendLine(`Current file path: ${path}`);
|
|
35
|
-
return {
|
|
36
|
-
content: [{ type: 'text', text: path }],
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
};
|
|
40
|
-
exports.GetCurrentFilePathTool = GetCurrentFilePathTool;
|
|
41
|
-
tslib_1.__decorate([
|
|
42
|
-
(0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
|
|
43
|
-
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
44
|
-
], GetCurrentFilePathTool.prototype, "editorService", void 0);
|
|
45
|
-
exports.GetCurrentFilePathTool = GetCurrentFilePathTool = tslib_1.__decorate([
|
|
46
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
47
|
-
], GetCurrentFilePathTool);
|
|
48
|
-
//# sourceMappingURL=getCurrentFilePath.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getCurrentFilePath.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getCurrentFilePath.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAqD;AACrD,+DAAmD;AACnD,qDAA8D;AAE9D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAG1B,IAAM,sBAAsB,GAA5B,MAAM,sBAAsB;IAIjC,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,8BAA8B;YACpC,WAAW,EACT,kFAAkF;gBAClF,oFAAoF;gBACpF,uDAAuD;YACzD,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;YAClC,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC;QAC1C,MAAM,CAAC,UAAU,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;QAEhD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;CACF,CAAA;AApCY,wDAAsB;AAEhB;IADhB,IAAA,cAAS,EAAC,mCAAsB,CAAC;sCACF,mCAAsB;6DAAC;iCAF5C,sBAAsB;IADlC,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,sBAAsB,CAoClC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getFileTextByPath.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getFileTextByPath.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,qBAAsB,YAAW,qBAAqB;IAEjE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAGrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAiBxB,OAAO;CAmDtB"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GetFileTextByPathTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const path = tslib_1.__importStar(require("path"));
|
|
6
|
-
const zod_1 = require("zod");
|
|
7
|
-
const di_1 = require("@opensumi/di");
|
|
8
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
9
|
-
const ide_file_service_1 = require("@opensumi/ide-file-service");
|
|
10
|
-
const ide_workspace_1 = require("@opensumi/ide-workspace");
|
|
11
|
-
const types_1 = require("../../types");
|
|
12
|
-
const inputSchema = zod_1.z.object({
|
|
13
|
-
pathInProject: zod_1.z.string().describe('The file location relative to project root'),
|
|
14
|
-
});
|
|
15
|
-
let GetFileTextByPathTool = class GetFileTextByPathTool {
|
|
16
|
-
registerMCPServer(registry) {
|
|
17
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
18
|
-
}
|
|
19
|
-
getToolDefinition() {
|
|
20
|
-
return {
|
|
21
|
-
name: 'get_file_text_by_path',
|
|
22
|
-
description: 'Retrieves the text content of a file using its path relative to project root. ' +
|
|
23
|
-
"Use this tool to read file contents when you have the file's project-relative path. " +
|
|
24
|
-
'Requires a pathInProject parameter specifying the file location from project root. ' +
|
|
25
|
-
'Returns one of these responses: ' +
|
|
26
|
-
"- The file's content if the file exists and belongs to the project " +
|
|
27
|
-
'- error "project dir not found" if project directory cannot be determined ' +
|
|
28
|
-
'- error "file not found" if the file doesn\'t exist or is outside project scope ' +
|
|
29
|
-
'Note: Automatically refreshes the file system before reading',
|
|
30
|
-
inputSchema,
|
|
31
|
-
handler: this.handler.bind(this),
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
async handler(args, logger) {
|
|
35
|
-
try {
|
|
36
|
-
// 获取工作区根目录
|
|
37
|
-
const workspaceRoots = this.workspaceService.tryGetRoots();
|
|
38
|
-
if (!workspaceRoots || workspaceRoots.length === 0) {
|
|
39
|
-
logger.appendLine('Error: Cannot determine project directory');
|
|
40
|
-
return {
|
|
41
|
-
content: [{ type: 'text', text: 'project dir not found' }],
|
|
42
|
-
isError: true,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
// 构建完整的文件路径
|
|
46
|
-
const rootUri = ide_core_common_1.URI.parse(workspaceRoots[0].uri);
|
|
47
|
-
const fullPath = path.join(rootUri.codeUri.fsPath, args.pathInProject);
|
|
48
|
-
const fileUri = ide_core_common_1.URI.file(fullPath);
|
|
49
|
-
// 检查文件是否在项目目录内
|
|
50
|
-
const relativePath = path.relative(rootUri.codeUri.fsPath, fullPath);
|
|
51
|
-
if (relativePath.startsWith('..') || path.isAbsolute(relativePath)) {
|
|
52
|
-
logger.appendLine('Error: File is outside of project scope');
|
|
53
|
-
return {
|
|
54
|
-
content: [{ type: 'text', text: 'file not found' }],
|
|
55
|
-
isError: true,
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
// 检查文件是否存在并读取内容
|
|
59
|
-
try {
|
|
60
|
-
const result = await this.fileService.readFile(fileUri.toString());
|
|
61
|
-
const content = result.content.toString();
|
|
62
|
-
logger.appendLine(`Successfully read file: ${args.pathInProject}`);
|
|
63
|
-
return {
|
|
64
|
-
content: [{ type: 'text', text: content }],
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
catch (error) {
|
|
68
|
-
logger.appendLine('Error: File does not exist');
|
|
69
|
-
return {
|
|
70
|
-
content: [{ type: 'text', text: 'file not found' }],
|
|
71
|
-
isError: true,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
logger.appendLine(`Error reading file: ${error}`);
|
|
77
|
-
return {
|
|
78
|
-
content: [{ type: 'text', text: 'file not found' }],
|
|
79
|
-
isError: true,
|
|
80
|
-
};
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
exports.GetFileTextByPathTool = GetFileTextByPathTool;
|
|
85
|
-
tslib_1.__decorate([
|
|
86
|
-
(0, di_1.Autowired)(ide_workspace_1.IWorkspaceService),
|
|
87
|
-
tslib_1.__metadata("design:type", Object)
|
|
88
|
-
], GetFileTextByPathTool.prototype, "workspaceService", void 0);
|
|
89
|
-
tslib_1.__decorate([
|
|
90
|
-
(0, di_1.Autowired)(ide_file_service_1.IFileServiceClient),
|
|
91
|
-
tslib_1.__metadata("design:type", Object)
|
|
92
|
-
], GetFileTextByPathTool.prototype, "fileService", void 0);
|
|
93
|
-
exports.GetFileTextByPathTool = GetFileTextByPathTool = tslib_1.__decorate([
|
|
94
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
95
|
-
], GetFileTextByPathTool);
|
|
96
|
-
//# sourceMappingURL=getFileTextByPath.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getFileTextByPath.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getFileTextByPath.ts"],"names":[],"mappings":";;;;AAAA,mDAA6B;AAE7B,6BAAwB;AAExB,qCAAqD;AACrD,+DAAwD;AACxD,iEAAgE;AAChE,2DAA4D;AAE5D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,4CAA4C,CAAC;CACjF,CAAC,CAAC;AAGI,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IAOhC,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,uBAAuB;YAC7B,WAAW,EACT,gFAAgF;gBAChF,sFAAsF;gBACtF,qFAAqF;gBACrF,kCAAkC;gBAClC,qEAAqE;gBACrE,4EAA4E;gBAC5E,kFAAkF;gBAClF,8DAA8D;YAChE,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;QACxE,IAAI,CAAC;YACH,WAAW;YACX,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;YAC3D,IAAI,CAAC,cAAc,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACnD,MAAM,CAAC,UAAU,CAAC,2CAA2C,CAAC,CAAC;gBAC/D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC;oBAC1D,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,YAAY;YACZ,MAAM,OAAO,GAAG,qBAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvE,MAAM,OAAO,GAAG,qBAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAEnC,eAAe;YACf,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrE,IAAI,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnE,MAAM,CAAC,UAAU,CAAC,yCAAyC,CAAC,CAAC;gBAC7D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;oBACnD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,gBAAgB;YAChB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACnE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBAC1C,MAAM,CAAC,UAAU,CAAC,2BAA2B,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;gBAEnE,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;iBAC3C,CAAC;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,UAAU,CAAC,4BAA4B,CAAC,CAAC;gBAChD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;oBACnD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,uBAAuB,KAAK,EAAE,CAAC,CAAC;YAClD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;gBACnD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA/EY,sDAAqB;AAEf;IADhB,IAAA,cAAS,EAAC,iCAAiB,CAAC;;+DACwB;AAGpC;IADhB,IAAA,cAAS,EAAC,qCAAkB,CAAC;;0DACmB;gCALtC,qBAAqB;IADjC,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,qBAAqB,CA+EjC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
|
|
2
|
-
export declare class GetOpenEditorFileTextTool implements MCPServerContribution {
|
|
3
|
-
private readonly editorService;
|
|
4
|
-
registerMCPServer(registry: IMCPServerRegistry): void;
|
|
5
|
-
getToolDefinition(): MCPToolDefinition;
|
|
6
|
-
private handler;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=getOpenEditorFileText.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getOpenEditorFileText.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getOpenEditorFileText.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAItG,qBACa,yBAA0B,YAAW,qBAAqB;IAErE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAYxB,OAAO;CAiBtB"}
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GetOpenEditorFileTextTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const di_1 = require("@opensumi/di");
|
|
7
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
-
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
9
|
-
const types_1 = require("../../types");
|
|
10
|
-
const inputSchema = zod_1.z.object({});
|
|
11
|
-
let GetOpenEditorFileTextTool = class GetOpenEditorFileTextTool {
|
|
12
|
-
registerMCPServer(registry) {
|
|
13
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
14
|
-
}
|
|
15
|
-
getToolDefinition() {
|
|
16
|
-
return {
|
|
17
|
-
name: 'get_open_in_editor_file_text',
|
|
18
|
-
description: 'Retrieves the complete text content of the currently active file in the IDE editor. ' +
|
|
19
|
-
"Use this tool to access and analyze the file's contents for tasks such as code review, content inspection, or text processing. " +
|
|
20
|
-
'Returns empty string if no file is currently open.',
|
|
21
|
-
inputSchema,
|
|
22
|
-
handler: this.handler.bind(this),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async handler(args, logger) {
|
|
26
|
-
const editor = this.editorService.currentEditor;
|
|
27
|
-
if (!editor || !editor.currentDocumentModel) {
|
|
28
|
-
logger.appendLine('Error: No active text editor found');
|
|
29
|
-
return {
|
|
30
|
-
content: [{ type: 'text', text: '' }],
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
const document = editor.currentDocumentModel;
|
|
34
|
-
logger.appendLine(`Reading content from: ${document.uri.toString()}`);
|
|
35
|
-
const content = document.getText();
|
|
36
|
-
return {
|
|
37
|
-
content: [{ type: 'text', text: content }],
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
exports.GetOpenEditorFileTextTool = GetOpenEditorFileTextTool;
|
|
42
|
-
tslib_1.__decorate([
|
|
43
|
-
(0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
|
|
44
|
-
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
45
|
-
], GetOpenEditorFileTextTool.prototype, "editorService", void 0);
|
|
46
|
-
exports.GetOpenEditorFileTextTool = GetOpenEditorFileTextTool = tslib_1.__decorate([
|
|
47
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
48
|
-
], GetOpenEditorFileTextTool);
|
|
49
|
-
//# sourceMappingURL=getOpenEditorFileText.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getOpenEditorFileText.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getOpenEditorFileText.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAqD;AACrD,+DAAmD;AACnD,qDAA8D;AAE9D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAG1B,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAIpC,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,8BAA8B;YACpC,WAAW,EACT,sFAAsF;gBACtF,iIAAiI;gBACjI,oDAAoD;YACtD,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC;YAC5C,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,yBAAyB,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC;QAEnC,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;SAC3C,CAAC;IACJ,CAAC;CACF,CAAA;AArCY,8DAAyB;AAEnB;IADhB,IAAA,cAAS,EAAC,mCAAsB,CAAC;sCACF,mCAAsB;gEAAC;oCAF5C,yBAAyB;IADrC,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,yBAAyB,CAqCrC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
|
|
2
|
-
export declare class GetSelectedTextTool implements MCPServerContribution {
|
|
3
|
-
private readonly editorService;
|
|
4
|
-
registerMCPServer(registry: IMCPServerRegistry): void;
|
|
5
|
-
getToolDefinition(): MCPToolDefinition;
|
|
6
|
-
private handler;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=getSelectedText.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectedText.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getSelectedText.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAItG,qBACa,mBAAoB,YAAW,qBAAqB;IAE/D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAYxB,OAAO;CAwBtB"}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.GetSelectedTextTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const di_1 = require("@opensumi/di");
|
|
7
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
-
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
9
|
-
const types_1 = require("../../types");
|
|
10
|
-
const inputSchema = zod_1.z.object({});
|
|
11
|
-
let GetSelectedTextTool = class GetSelectedTextTool {
|
|
12
|
-
registerMCPServer(registry) {
|
|
13
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
14
|
-
}
|
|
15
|
-
getToolDefinition() {
|
|
16
|
-
return {
|
|
17
|
-
name: 'get_selected_in_editor_text',
|
|
18
|
-
description: 'Retrieves the currently selected text from the active editor in VS Code. ' +
|
|
19
|
-
'Use this tool when you need to access and analyze text that has been highlighted/selected by the user. ' +
|
|
20
|
-
'Returns an empty string if no text is selected or no editor is open.',
|
|
21
|
-
inputSchema,
|
|
22
|
-
handler: this.handler.bind(this),
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
async handler(args, logger) {
|
|
26
|
-
var _a;
|
|
27
|
-
const editor = this.editorService.currentEditor;
|
|
28
|
-
if (!editor || !editor.monacoEditor) {
|
|
29
|
-
logger.appendLine('Error: No active text editor found');
|
|
30
|
-
return {
|
|
31
|
-
content: [{ type: 'text', text: '' }],
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const selection = editor.monacoEditor.getSelection();
|
|
35
|
-
if (!selection) {
|
|
36
|
-
logger.appendLine('No text is currently selected');
|
|
37
|
-
return {
|
|
38
|
-
content: [{ type: 'text', text: '' }],
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
const selectedText = ((_a = editor.monacoEditor.getModel()) === null || _a === void 0 ? void 0 : _a.getValueInRange(selection)) || '';
|
|
42
|
-
logger.appendLine(`Retrieved selected text of length: ${selectedText.length}`);
|
|
43
|
-
return {
|
|
44
|
-
content: [{ type: 'text', text: selectedText }],
|
|
45
|
-
};
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
exports.GetSelectedTextTool = GetSelectedTextTool;
|
|
49
|
-
tslib_1.__decorate([
|
|
50
|
-
(0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
|
|
51
|
-
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
52
|
-
], GetSelectedTextTool.prototype, "editorService", void 0);
|
|
53
|
-
exports.GetSelectedTextTool = GetSelectedTextTool = tslib_1.__decorate([
|
|
54
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
55
|
-
], GetSelectedTextTool);
|
|
56
|
-
//# sourceMappingURL=getSelectedText.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"getSelectedText.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/getSelectedText.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAqD;AACrD,+DAAmD;AACnD,qDAA8D;AAE9D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAG1B,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAI9B,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,6BAA6B;YACnC,WAAW,EACT,2EAA2E;gBAC3E,yGAAyG;gBACzG,sEAAsE;YACxE,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;;QACxE,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YACpC,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;QACrD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,+BAA+B,CAAC,CAAC;YACnD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,CAAA,MAAA,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,0CAAE,eAAe,CAAC,SAAS,CAAC,KAAI,EAAE,CAAC;QACtF,MAAM,CAAC,UAAU,CAAC,sCAAsC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QAE/E,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC;CACF,CAAA;AA5CY,kDAAmB;AAEb;IADhB,IAAA,cAAS,EAAC,mCAAsB,CAAC;sCACF,mCAAsB;0DAAC;8BAF5C,mBAAmB;IAD/B,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,mBAAmB,CA4C/B"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
|
|
2
|
-
export declare class ReplaceOpenEditorFileTool implements MCPServerContribution {
|
|
3
|
-
private readonly editorService;
|
|
4
|
-
registerMCPServer(registry: IMCPServerRegistry): void;
|
|
5
|
-
getToolDefinition(): MCPToolDefinition;
|
|
6
|
-
private handler;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=replaceOpenEditorFile.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceOpenEditorFile.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/replaceOpenEditorFile.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAMtG,qBACa,yBAA0B,YAAW,qBAAqB;IAErE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAgBxB,OAAO;CA2CtB"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReplaceOpenEditorFileTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const di_1 = require("@opensumi/di");
|
|
7
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
-
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
9
|
-
const types_1 = require("../../types");
|
|
10
|
-
const inputSchema = zod_1.z.object({
|
|
11
|
-
text: zod_1.z.string().describe('The new content to replace the entire file with'),
|
|
12
|
-
});
|
|
13
|
-
let ReplaceOpenEditorFileTool = class ReplaceOpenEditorFileTool {
|
|
14
|
-
registerMCPServer(registry) {
|
|
15
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
16
|
-
}
|
|
17
|
-
getToolDefinition() {
|
|
18
|
-
return {
|
|
19
|
-
name: 'replace_open_in_editor_file_text',
|
|
20
|
-
description: 'Replaces the entire content of the currently active file in the IDE editor with specified new text. ' +
|
|
21
|
-
"Use this tool when you need to completely overwrite the current file's content. " +
|
|
22
|
-
'Requires a text parameter containing the new content. ' +
|
|
23
|
-
'Returns one of three possible responses: ' +
|
|
24
|
-
'"ok" if the file content was successfully replaced, ' +
|
|
25
|
-
'"no file open" if no editor is active, ' +
|
|
26
|
-
'"unknown error" if the operation fails.',
|
|
27
|
-
inputSchema,
|
|
28
|
-
handler: this.handler.bind(this),
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
async handler(args, logger) {
|
|
32
|
-
try {
|
|
33
|
-
const editor = this.editorService.currentEditor;
|
|
34
|
-
if (!editor || !editor.monacoEditor) {
|
|
35
|
-
logger.appendLine('Error: No active text editor found');
|
|
36
|
-
return {
|
|
37
|
-
content: [{ type: 'text', text: 'no file open' }],
|
|
38
|
-
isError: true,
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
// Get the model and its full range
|
|
42
|
-
const model = editor.monacoEditor.getModel();
|
|
43
|
-
if (!model) {
|
|
44
|
-
logger.appendLine('Error: No model found for current editor');
|
|
45
|
-
return {
|
|
46
|
-
content: [{ type: 'text', text: 'unknown error' }],
|
|
47
|
-
isError: true,
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
const fullRange = model.getFullModelRange();
|
|
51
|
-
// Execute the replacement
|
|
52
|
-
editor.monacoEditor.executeEdits('mcp.tool.replace-file', [
|
|
53
|
-
{
|
|
54
|
-
range: fullRange,
|
|
55
|
-
text: args.text,
|
|
56
|
-
},
|
|
57
|
-
]);
|
|
58
|
-
logger.appendLine('Successfully replaced file content');
|
|
59
|
-
return {
|
|
60
|
-
content: [{ type: 'text', text: 'ok' }],
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
catch (error) {
|
|
64
|
-
logger.appendLine(`Error during file content replacement: ${error}`);
|
|
65
|
-
return {
|
|
66
|
-
content: [{ type: 'text', text: 'unknown error' }],
|
|
67
|
-
isError: true,
|
|
68
|
-
};
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
exports.ReplaceOpenEditorFileTool = ReplaceOpenEditorFileTool;
|
|
73
|
-
tslib_1.__decorate([
|
|
74
|
-
(0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
|
|
75
|
-
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
76
|
-
], ReplaceOpenEditorFileTool.prototype, "editorService", void 0);
|
|
77
|
-
exports.ReplaceOpenEditorFileTool = ReplaceOpenEditorFileTool = tslib_1.__decorate([
|
|
78
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
79
|
-
], ReplaceOpenEditorFileTool);
|
|
80
|
-
//# sourceMappingURL=replaceOpenEditorFile.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceOpenEditorFile.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/replaceOpenEditorFile.ts"],"names":[],"mappings":";;;;AAAA,6BAAwB;AAExB,qCAAqD;AACrD,+DAAmD;AACnD,qDAA8D;AAE9D,uCAAsG;AAEtG,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iDAAiD,CAAC;CAC7E,CAAC,CAAC;AAGI,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IAIpC,iBAAiB,CAAC,QAA4B;QAC5C,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,IAAI,EAAE,kCAAkC;YACxC,WAAW,EACT,sGAAsG;gBACtG,kFAAkF;gBAClF,wDAAwD;gBACxD,2CAA2C;gBAC3C,sDAAsD;gBACtD,yCAAyC;gBACzC,yCAAyC;YAC3C,WAAW;YACX,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,IAAiC,EAAE,MAAiB;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;YAChD,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;gBACpC,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;gBACxD,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;oBACjD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,mCAAmC;YACnC,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;YAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,CAAC,UAAU,CAAC,0CAA0C,CAAC,CAAC;gBAC9D,OAAO;oBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;oBAClD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,MAAM,SAAS,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAE5C,0BAA0B;YAC1B,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,uBAAuB,EAAE;gBACxD;oBACE,KAAK,EAAE,SAAS;oBAChB,IAAI,EAAE,IAAI,CAAC,IAAI;iBAChB;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,UAAU,CAAC,oCAAoC,CAAC,CAAC;YACxD,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;aACxC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,UAAU,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAC;YACrE,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;gBAClD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AAnEY,8DAAyB;AAEnB;IADhB,IAAA,cAAS,EAAC,mCAAsB,CAAC;sCACF,mCAAsB;gEAAC;oCAF5C,yBAAyB;IADrC,IAAA,wBAAM,EAAC,6BAAqB,CAAC;GACjB,yBAAyB,CAmErC"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import { IMCPServerRegistry, MCPServerContribution, MCPToolDefinition } from '../../types';
|
|
2
|
-
export declare class ReplaceOpenEditorFileByDiffPreviewerTool implements MCPServerContribution {
|
|
3
|
-
private readonly editorService;
|
|
4
|
-
registerMCPServer(registry: IMCPServerRegistry): void;
|
|
5
|
-
getToolDefinition(): MCPToolDefinition;
|
|
6
|
-
private handler;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=replaceOpenEditorFileByDiffPreviewer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceOpenEditorFileByDiffPreviewer.d.ts","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,kBAAkB,EAAa,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAQtG,qBACa,wCAAyC,YAAW,qBAAqB;IAEpF,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAyB;IAEvD,iBAAiB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,IAAI;IAIrD,iBAAiB,IAAI,iBAAiB;YAgBxB,OAAO;CAiDtB"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ReplaceOpenEditorFileByDiffPreviewerTool = void 0;
|
|
4
|
-
const tslib_1 = require("tslib");
|
|
5
|
-
const zod_1 = require("zod");
|
|
6
|
-
const di_1 = require("@opensumi/di");
|
|
7
|
-
const ide_core_common_1 = require("@opensumi/ide-core-common");
|
|
8
|
-
const ide_editor_1 = require("@opensumi/ide-editor");
|
|
9
|
-
const selection_1 = require("@opensumi/monaco-editor-core/esm/vs/editor/common/core/selection");
|
|
10
|
-
const types_1 = require("../../types");
|
|
11
|
-
const inline_diff_controller_1 = require("../../widget/inline-diff/inline-diff.controller");
|
|
12
|
-
const inputSchema = zod_1.z.object({
|
|
13
|
-
text: zod_1.z.string().describe('The new content to replace the entire file with'),
|
|
14
|
-
});
|
|
15
|
-
let ReplaceOpenEditorFileByDiffPreviewerTool = class ReplaceOpenEditorFileByDiffPreviewerTool {
|
|
16
|
-
registerMCPServer(registry) {
|
|
17
|
-
registry.registerMCPTool(this.getToolDefinition());
|
|
18
|
-
}
|
|
19
|
-
getToolDefinition() {
|
|
20
|
-
return {
|
|
21
|
-
name: 'replace_open_in_editor_file_text',
|
|
22
|
-
description: 'Replaces the entire content of the currently active file in the IDE editor with specified new text using diff previewer. ' +
|
|
23
|
-
"Use this tool when you need to completely overwrite the current file's content with diff preview. " +
|
|
24
|
-
'Requires a text parameter containing the new content. ' +
|
|
25
|
-
'Returns one of three possible responses: ' +
|
|
26
|
-
'"ok" if the file content was successfully replaced, ' +
|
|
27
|
-
'"no file open" if no editor is active, ' +
|
|
28
|
-
'"unknown error" if the operation fails.',
|
|
29
|
-
inputSchema,
|
|
30
|
-
handler: this.handler.bind(this),
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
async handler(args, logger) {
|
|
34
|
-
try {
|
|
35
|
-
const editor = this.editorService.currentEditor;
|
|
36
|
-
if (!editor || !editor.monacoEditor) {
|
|
37
|
-
logger.appendLine('Error: No active text editor found');
|
|
38
|
-
return {
|
|
39
|
-
content: [{ type: 'text', text: 'no file open' }],
|
|
40
|
-
isError: true,
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
// Get the model and its full range
|
|
44
|
-
const model = editor.monacoEditor.getModel();
|
|
45
|
-
if (!model) {
|
|
46
|
-
logger.appendLine('Error: No model found for current editor');
|
|
47
|
-
return {
|
|
48
|
-
content: [{ type: 'text', text: 'unknown error' }],
|
|
49
|
-
isError: true,
|
|
50
|
-
};
|
|
51
|
-
}
|
|
52
|
-
const fullRange = model.getFullModelRange();
|
|
53
|
-
const inlineDiffHandler = inline_diff_controller_1.InlineDiffController.get(editor.monacoEditor);
|
|
54
|
-
// Create diff previewer
|
|
55
|
-
const previewer = inlineDiffHandler.createDiffPreviewer(editor.monacoEditor, selection_1.Selection.fromRange(fullRange, selection_1.SelectionDirection.LTR), {
|
|
56
|
-
disposeWhenEditorClosed: false,
|
|
57
|
-
renderRemovedWidgetImmediately: true,
|
|
58
|
-
});
|
|
59
|
-
// Set the new content
|
|
60
|
-
previewer.setValue(args.text);
|
|
61
|
-
logger.appendLine('Successfully created diff preview with new content');
|
|
62
|
-
return {
|
|
63
|
-
content: [{ type: 'text', text: 'ok' }],
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
catch (error) {
|
|
67
|
-
logger.appendLine(`Error during file content replacement: ${error}`);
|
|
68
|
-
return {
|
|
69
|
-
content: [{ type: 'text', text: 'unknown error' }],
|
|
70
|
-
isError: true,
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
};
|
|
75
|
-
exports.ReplaceOpenEditorFileByDiffPreviewerTool = ReplaceOpenEditorFileByDiffPreviewerTool;
|
|
76
|
-
tslib_1.__decorate([
|
|
77
|
-
(0, di_1.Autowired)(ide_editor_1.WorkbenchEditorService),
|
|
78
|
-
tslib_1.__metadata("design:type", ide_editor_1.WorkbenchEditorService)
|
|
79
|
-
], ReplaceOpenEditorFileByDiffPreviewerTool.prototype, "editorService", void 0);
|
|
80
|
-
exports.ReplaceOpenEditorFileByDiffPreviewerTool = ReplaceOpenEditorFileByDiffPreviewerTool = tslib_1.__decorate([
|
|
81
|
-
(0, ide_core_common_1.Domain)(types_1.MCPServerContribution)
|
|
82
|
-
], ReplaceOpenEditorFileByDiffPreviewerTool);
|
|
83
|
-
//# sourceMappingURL=replaceOpenEditorFileByDiffPreviewer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"replaceOpenEditorFileByDiffPreviewer.js","sourceRoot":"","sources":["../../../../src/browser/mcp/tools/replaceOpenEditorFileByDiffPreviewer.ts"],"names":[],"mappings":"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"}
|