ace-tool 0.1.5 → 0.2.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 +64 -6
- package/dist/config.d.ts +16 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +31 -1
- package/dist/config.js.map +1 -1
- package/dist/enhancer/EnhancerServer.d.ts +59 -0
- package/dist/enhancer/EnhancerServer.d.ts.map +1 -0
- package/dist/enhancer/EnhancerServer.js +306 -0
- package/dist/enhancer/EnhancerServer.js.map +1 -0
- package/dist/enhancer/PromptEnhancer.d.ts +49 -0
- package/dist/enhancer/PromptEnhancer.d.ts.map +1 -0
- package/dist/enhancer/PromptEnhancer.js +243 -0
- package/dist/enhancer/PromptEnhancer.js.map +1 -0
- package/dist/enhancer/templates.d.ts +14 -0
- package/dist/enhancer/templates.d.ts.map +1 -0
- package/dist/enhancer/templates.js +673 -0
- package/dist/enhancer/templates.js.map +1 -0
- package/dist/index/manager.d.ts.map +1 -1
- package/dist/index/manager.js +21 -1
- package/dist/index/manager.js.map +1 -1
- package/dist/index.js +18 -0
- package/dist/index.js.map +1 -1
- package/dist/prompts/enhancePrompt.d.ts +26 -0
- package/dist/prompts/enhancePrompt.d.ts.map +1 -0
- package/dist/prompts/enhancePrompt.js +26 -0
- package/dist/prompts/enhancePrompt.js.map +1 -0
- package/dist/tools/enhancePrompt.d.ts +14 -0
- package/dist/tools/enhancePrompt.d.ts.map +1 -0
- package/dist/tools/enhancePrompt.js +86 -0
- package/dist/tools/enhancePrompt.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,18 +6,18 @@
|
|
|
6
6
|
|
|
7
7
|
## English
|
|
8
8
|
|
|
9
|
-
MCP server for codebase indexing and
|
|
9
|
+
MCP server for codebase indexing, semantic search, and AI prompt enhancement.
|
|
10
10
|
|
|
11
11
|
### Installation
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
|
-
npm install -g ace-tool
|
|
14
|
+
npm install -g ace-tool@latest
|
|
15
15
|
```
|
|
16
16
|
|
|
17
17
|
Or use directly with npx:
|
|
18
18
|
|
|
19
19
|
```bash
|
|
20
|
-
npx ace-tool --base-url <URL> --token <TOKEN>
|
|
20
|
+
npx -y ace-tool@latest --base-url <URL> --token <TOKEN>
|
|
21
21
|
```
|
|
22
22
|
|
|
23
23
|
### Configuration
|
|
@@ -66,6 +66,35 @@ Search for relevant code context based on a natural language query.
|
|
|
66
66
|
- "Find the initialization flow of message queue consumers during startup"
|
|
67
67
|
- "How is the database connected to the application?"
|
|
68
68
|
|
|
69
|
+
#### enhance_prompt
|
|
70
|
+
|
|
71
|
+
Enhances user requirements by combining codebase context and conversation history to generate clearer, more specific, and actionable prompts. Opens a Web UI for user review and confirmation.
|
|
72
|
+
|
|
73
|
+
**Parameters:**
|
|
74
|
+
|
|
75
|
+
- `project_root_path` (optional): Absolute path to the project root directory (defaults to current working directory)
|
|
76
|
+
- `prompt` (required): The original prompt to enhance
|
|
77
|
+
- `conversation_history` (required): Recent conversation history (5-10 rounds) to help understand user intent
|
|
78
|
+
|
|
79
|
+
**Trigger Methods:**
|
|
80
|
+
|
|
81
|
+
1. **Explicit markers** (recommended): Add `-enhance`, `-enhancer`, `-Enhance`, or `-Enhancer` to your message
|
|
82
|
+
- Example: "新加一个登录页面-Enhancer"
|
|
83
|
+
- Example: "Add login feature -enhance"
|
|
84
|
+
|
|
85
|
+
2. **Explicit request**: Ask to "enhance my prompt" or "use enhance_prompt tool"
|
|
86
|
+
|
|
87
|
+
**Features:**
|
|
88
|
+
|
|
89
|
+
- Automatic language detection (Chinese input → Chinese output, English input → English output)
|
|
90
|
+
- Interactive Web UI with 4 actions:
|
|
91
|
+
- **Send Enhanced**: Use the enhanced version
|
|
92
|
+
- **Use Original**: Continue with original prompt
|
|
93
|
+
- **Continue Enhancing**: Iteratively refine the prompt
|
|
94
|
+
- **End Conversation**: Stop the AI conversation
|
|
95
|
+
- Automatic tool name mapping (converts `codebase-retrieval` to `search_context`)
|
|
96
|
+
- 8-minute timeout with automatic fallback to original prompt
|
|
97
|
+
|
|
69
98
|
### Project Data
|
|
70
99
|
|
|
71
100
|
ace-tool stores index data in a `.ace-tool` directory within each project:
|
|
@@ -117,18 +146,18 @@ MIT
|
|
|
117
146
|
|
|
118
147
|
## 中文
|
|
119
148
|
|
|
120
|
-
|
|
149
|
+
用于代码库索引、语义搜索和 AI prompt 增强的 MCP 服务器。
|
|
121
150
|
|
|
122
151
|
### 安装
|
|
123
152
|
|
|
124
153
|
```bash
|
|
125
|
-
npm install -g ace-tool
|
|
154
|
+
npm install -g ace-tool@latest
|
|
126
155
|
```
|
|
127
156
|
|
|
128
157
|
或直接使用 npx:
|
|
129
158
|
|
|
130
159
|
```bash
|
|
131
|
-
npx ace-tool --base-url <URL> --token <TOKEN>
|
|
160
|
+
npx -y ace-tool@latest --base-url <URL> --token <TOKEN>
|
|
132
161
|
```
|
|
133
162
|
|
|
134
163
|
### 配置
|
|
@@ -177,6 +206,35 @@ npx ace-tool --base-url <URL> --token <TOKEN>
|
|
|
177
206
|
- "查找启动时消息队列消费者的初始化流程"
|
|
178
207
|
- "数据库是如何连接到应用程序的?"
|
|
179
208
|
|
|
209
|
+
#### enhance_prompt
|
|
210
|
+
|
|
211
|
+
通过结合代码库上下文和对话历史来增强用户需求,生成更清晰、更具体、更可执行的 prompt。打开 Web UI 供用户审查和确认。
|
|
212
|
+
|
|
213
|
+
**参数:**
|
|
214
|
+
|
|
215
|
+
- `project_root_path`(可选):项目根目录的绝对路径(默认使用当前工作目录)
|
|
216
|
+
- `prompt`(必填):需要增强的原始 prompt
|
|
217
|
+
- `conversation_history`(必填):最近的对话历史(5-10 轮对话),帮助理解用户意图
|
|
218
|
+
|
|
219
|
+
**触发方式:**
|
|
220
|
+
|
|
221
|
+
1. **显式标记**(推荐):在消息中添加 `-enhance`、`-enhancer`、`-Enhance` 或 `-Enhancer`
|
|
222
|
+
- 示例:"新加一个登录页面-Enhancer"
|
|
223
|
+
- 示例:"Add login feature -enhance"
|
|
224
|
+
|
|
225
|
+
2. **显式请求**:要求"增强我的 prompt"或"使用 enhance_prompt 工具"
|
|
226
|
+
|
|
227
|
+
**功能特性:**
|
|
228
|
+
|
|
229
|
+
- 自动语言检测(中文输入 → 中文输出,英文输入 → 英文输出)
|
|
230
|
+
- 交互式 Web UI,提供 4 个操作:
|
|
231
|
+
- **发送增强**:使用增强后的版本
|
|
232
|
+
- **使用原始**:继续使用原始 prompt
|
|
233
|
+
- **继续增强**:迭代式优化 prompt
|
|
234
|
+
- **结束对话**:停止 AI 对话
|
|
235
|
+
- 自动工具名称映射(将 `codebase-retrieval` 转换为 `search_context`)
|
|
236
|
+
- 8 分钟超时,自动回退到原始 prompt
|
|
237
|
+
|
|
180
238
|
### 项目数据
|
|
181
239
|
|
|
182
240
|
ace-tool 在每个项目的 `.ace-tool` 目录中存储索引数据:
|
package/dist/config.d.ts
CHANGED
|
@@ -31,4 +31,20 @@ export declare function initConfig(): Config;
|
|
|
31
31
|
* 获取配置
|
|
32
32
|
*/
|
|
33
33
|
export declare function getConfig(): Config;
|
|
34
|
+
/**
|
|
35
|
+
* 获取文本扩展名集合
|
|
36
|
+
*/
|
|
37
|
+
export declare function getTextExtensions(): Set<string>;
|
|
38
|
+
/**
|
|
39
|
+
* 获取排除模式
|
|
40
|
+
*/
|
|
41
|
+
export declare function getExcludePatterns(): string[];
|
|
42
|
+
/**
|
|
43
|
+
* 获取批次大小
|
|
44
|
+
*/
|
|
45
|
+
export declare function getBatchSize(): number;
|
|
46
|
+
/**
|
|
47
|
+
* 获取每个 blob 的最大行数
|
|
48
|
+
*/
|
|
49
|
+
export declare function getMaxLinesPerBlob(): number;
|
|
34
50
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAkCnE;AA2GD;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,WAAW,MAAM;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,CAkCnE;AA2GD;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CAmCnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,GAAG,CAAC,MAAM,CAAC,CAE/C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CAE7C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C"}
|
package/dist/config.js
CHANGED
|
@@ -154,11 +154,17 @@ export function initConfig() {
|
|
|
154
154
|
if (!args.token) {
|
|
155
155
|
throw new Error('Missing required argument: --token');
|
|
156
156
|
}
|
|
157
|
-
// 确保 baseUrl
|
|
157
|
+
// 确保 baseUrl 使用 https:// 协议
|
|
158
158
|
let baseUrl = args.baseUrl;
|
|
159
159
|
if (!baseUrl.startsWith('http://') && !baseUrl.startsWith('https://')) {
|
|
160
160
|
baseUrl = `https://${baseUrl}`;
|
|
161
161
|
}
|
|
162
|
+
else if (baseUrl.startsWith('http://')) {
|
|
163
|
+
// ACE 服务器只支持 HTTPS,自动转换
|
|
164
|
+
const originalUrl = baseUrl;
|
|
165
|
+
baseUrl = baseUrl.replace('http://', 'https://');
|
|
166
|
+
console.log(`🔐 已自动将 http:// 转换为 https:// (${originalUrl} → ${baseUrl})`);
|
|
167
|
+
}
|
|
162
168
|
baseUrl = baseUrl.replace(/\/$/, ''); // 移除末尾斜杠
|
|
163
169
|
config = {
|
|
164
170
|
baseUrl,
|
|
@@ -180,4 +186,28 @@ export function getConfig() {
|
|
|
180
186
|
}
|
|
181
187
|
return config;
|
|
182
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* 获取文本扩展名集合
|
|
191
|
+
*/
|
|
192
|
+
export function getTextExtensions() {
|
|
193
|
+
return config?.textExtensions || DEFAULT_TEXT_EXTENSIONS;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* 获取排除模式
|
|
197
|
+
*/
|
|
198
|
+
export function getExcludePatterns() {
|
|
199
|
+
return config?.excludePatterns || DEFAULT_EXCLUDE_PATTERNS;
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* 获取批次大小
|
|
203
|
+
*/
|
|
204
|
+
export function getBatchSize() {
|
|
205
|
+
return config?.batchSize || 10;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* 获取每个 blob 的最大行数
|
|
209
|
+
*/
|
|
210
|
+
export function getMaxLinesPerBlob() {
|
|
211
|
+
return config?.maxLinesPerBlob || 800;
|
|
212
|
+
}
|
|
183
213
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,SAAiB;IACjD,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QACpB,iBAAiB;QACjB,OAAO;YACL,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,GAAG,GAAG,EAAE,CAAC;QAC3B,YAAY;QACZ,OAAO;YACL,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;SAAM,IAAI,SAAS,GAAG,IAAI,EAAE,CAAC;QAC5B,YAAY;QACZ,OAAO;YACL,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,IAAI;SAChB,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,cAAc;QACd,OAAO;YACL,SAAS,EAAE,EAAE;YACb,WAAW,EAAE,CAAC;YACd,OAAO,EAAE,KAAK;YACd,SAAS,EAAE,KAAK;SACjB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,eAAe;AACf,MAAM,uBAAuB,GAAG,IAAI,GAAG,CAAC;IACtC,SAAS;IACT,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IACnD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK;IAC1C,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM;IAC1C,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO;IAClD,SAAS;IACT,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC1C,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM;IACxC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAC3C,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO;IACrC,QAAQ;IACR,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ;IAClD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO;IACjD,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe;IACtD,SAAS;IACT,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3D,MAAM,EAAE,SAAS,EAAE,QAAQ;IAC3B,OAAO;IACP,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS;IACpD,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM;IAC/C,QAAQ;IACR,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACvC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAC/B,WAAW,EAAE,KAAK,EAAE,QAAQ;IAC5B,YAAY;IACZ,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS;IACvC,MAAM,EAAE,MAAM;IACd,KAAK;IACL,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM;IAC/B,iBAAiB;IACjB,aAAa,EAAE,gBAAgB;IAC/B,KAAK;IACL,MAAM,EAAE,KAAK,EAAE,MAAM;CACtB,CAAC,CAAC;AAEH,SAAS;AACT,MAAM,wBAAwB,GAAG;IAC/B,UAAU;IACV,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc;IAC9C,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,kBAAkB;IAC9C,OAAO;IACP,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa;IACpC,YAAY;IACZ,aAAa,EAAE,eAAe,EAAE,aAAa;IAC7C,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,aAAa;IAC5C,OAAO;IACP,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK;IAC9C,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU;IAClD,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM;IACpD,QAAQ;IACR,UAAU,EAAE,aAAa,EAAE,SAAS;IACpC,SAAS;IACT,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO;IAC3C,OAAO;IACP,WAAW,EAAE,WAAW,EAAE,aAAa;IACvC,WAAW;IACX,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;IACrD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IACpD,UAAU;IACV,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY;IACpD,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC1C,eAAe;IACf,mBAAmB,EAAE,WAAW,EAAE,gBAAgB;IAClD,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe;IAC5D,UAAU;IACV,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAC9B,OAAO;IACP,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IACrD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC3C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ;IAC7C,OAAO;IACP,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;IAC9C,QAAQ;IACR,MAAM,EAAE,UAAU,EAAE,WAAW;IAC/B,cAAc;IACd,WAAW;CACZ,CAAC;AAEF,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC;;GAEG;AACH,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAA8D,EAAE,CAAC;IAE7E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,YAAY,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAChD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC7B,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpD,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC,EAAE,CAAC;QACN,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QAC1B,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IAEzB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,4BAA4B;IAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC3B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACtE,OAAO,GAAG,WAAW,OAAO,EAAE,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,wBAAwB;QACxB,MAAM,WAAW,GAAG,OAAO,CAAC;QAC5B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,iCAAiC,WAAW,MAAM,OAAO,GAAG,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS;IAE/C,MAAM,GAAG;QACP,OAAO;QACP,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,SAAS,EAAE,EAAE;QACb,eAAe,EAAE,GAAG;QACpB,cAAc,EAAE,uBAAuB;QACvC,eAAe,EAAE,wBAAwB;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,KAAK;KACnC,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB;IAC/B,OAAO,MAAM,EAAE,cAAc,IAAI,uBAAuB,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,EAAE,eAAe,IAAI,wBAAwB,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY;IAC1B,OAAO,MAAM,EAAE,SAAS,IAAI,EAAE,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,EAAE,eAAe,IAAI,GAAG,CAAC;AACxC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhancer Server - HTTP 服务器和 Session 管理
|
|
3
|
+
* 提供 Web UI 交互界面
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Enhancer HTTP 服务器
|
|
7
|
+
*/
|
|
8
|
+
export declare class EnhancerServer {
|
|
9
|
+
private server;
|
|
10
|
+
private port;
|
|
11
|
+
private sessions;
|
|
12
|
+
private readonly TIMEOUT_MS;
|
|
13
|
+
/**
|
|
14
|
+
* 启动 HTTP 服务器
|
|
15
|
+
*/
|
|
16
|
+
start(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* 获取服务器端口
|
|
19
|
+
*/
|
|
20
|
+
getPort(): number;
|
|
21
|
+
/**
|
|
22
|
+
* 创建新的 Session
|
|
23
|
+
*/
|
|
24
|
+
createSession(enhancedPrompt: string, originalPrompt: string, conversationHistory: string, blobNames: string[]): string;
|
|
25
|
+
/**
|
|
26
|
+
* 等待 Session 完成
|
|
27
|
+
*/
|
|
28
|
+
waitForSession(sessionId: string): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* 处理 HTTP 请求
|
|
31
|
+
*/
|
|
32
|
+
private handleRequest;
|
|
33
|
+
/**
|
|
34
|
+
* 返回 Web UI HTML
|
|
35
|
+
*/
|
|
36
|
+
private serveEnhancerUI;
|
|
37
|
+
/**
|
|
38
|
+
* 获取 Session 数据
|
|
39
|
+
*/
|
|
40
|
+
private getSessionData;
|
|
41
|
+
/**
|
|
42
|
+
* 处理用户提交
|
|
43
|
+
*/
|
|
44
|
+
private handleSubmit;
|
|
45
|
+
/**
|
|
46
|
+
* 处理继续增强请求
|
|
47
|
+
*/
|
|
48
|
+
private handleReEnhance;
|
|
49
|
+
private enhanceCallback;
|
|
50
|
+
/**
|
|
51
|
+
* 设置增强回调函数
|
|
52
|
+
*/
|
|
53
|
+
setEnhanceCallback(callback: (prompt: string, history: string, blobs: string[]) => Promise<string>): void;
|
|
54
|
+
/**
|
|
55
|
+
* 停止服务器
|
|
56
|
+
*/
|
|
57
|
+
stop(): Promise<void>;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=EnhancerServer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancerServer.d.ts","sourceRoot":"","sources":["../../src/enhancer/EnhancerServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH;;GAEG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAiB;IAE5C;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA0B5B;;OAEG;IACH,OAAO,IAAI,MAAM;IAIjB;;OAEG;IACH,aAAa,CACX,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,MAAM,EACtB,mBAAmB,EAAE,MAAM,EAC3B,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM;IAoCT;;OAEG;IACG,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAkBxD;;OAEG;IACH,OAAO,CAAC,aAAa;IAmCrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAKvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAyBtB;;OAEG;IACH,OAAO,CAAC,YAAY;IA+DpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAiEvB,OAAO,CAAC,eAAe,CAAwF;IAE/G;;OAEG;IACH,kBAAkB,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,GAAG,IAAI;IAIzG;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAa5B"}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhancer Server - HTTP 服务器和 Session 管理
|
|
3
|
+
* 提供 Web UI 交互界面
|
|
4
|
+
*/
|
|
5
|
+
import http from 'http';
|
|
6
|
+
import crypto from 'crypto';
|
|
7
|
+
import { ENHANCER_UI_HTML } from './templates.js';
|
|
8
|
+
import { sendMcpLog } from '../mcpLogger.js';
|
|
9
|
+
/**
|
|
10
|
+
* Enhancer HTTP 服务器
|
|
11
|
+
*/
|
|
12
|
+
export class EnhancerServer {
|
|
13
|
+
server = null;
|
|
14
|
+
port = 3000;
|
|
15
|
+
sessions = new Map();
|
|
16
|
+
TIMEOUT_MS = 8 * 60 * 1000; // 8 分钟
|
|
17
|
+
/**
|
|
18
|
+
* 启动 HTTP 服务器
|
|
19
|
+
*/
|
|
20
|
+
async start() {
|
|
21
|
+
if (this.server) {
|
|
22
|
+
return; // 已启动
|
|
23
|
+
}
|
|
24
|
+
this.server = http.createServer((req, res) => {
|
|
25
|
+
this.handleRequest(req, res);
|
|
26
|
+
});
|
|
27
|
+
await new Promise((resolve, reject) => {
|
|
28
|
+
this.server.listen(this.port, () => {
|
|
29
|
+
sendMcpLog('info', `🌐 Enhancer 服务器已启动: http://localhost:${this.port}`);
|
|
30
|
+
resolve();
|
|
31
|
+
}).on('error', (error) => {
|
|
32
|
+
if (error.code === 'EADDRINUSE') {
|
|
33
|
+
sendMcpLog('warning', `⚠️ 端口 ${this.port} 已被占用,尝试使用其他端口`);
|
|
34
|
+
this.port++;
|
|
35
|
+
this.server = null;
|
|
36
|
+
this.start().then(resolve).catch(reject);
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
reject(error);
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* 获取服务器端口
|
|
46
|
+
*/
|
|
47
|
+
getPort() {
|
|
48
|
+
return this.port;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* 创建新的 Session
|
|
52
|
+
*/
|
|
53
|
+
createSession(enhancedPrompt, originalPrompt, conversationHistory, blobNames) {
|
|
54
|
+
const sessionId = crypto.randomUUID();
|
|
55
|
+
const session = {
|
|
56
|
+
id: sessionId,
|
|
57
|
+
enhancedPrompt,
|
|
58
|
+
originalPrompt,
|
|
59
|
+
conversationHistory,
|
|
60
|
+
blobNames,
|
|
61
|
+
status: 'pending',
|
|
62
|
+
createdAt: Date.now(),
|
|
63
|
+
promise: null,
|
|
64
|
+
resolve: null,
|
|
65
|
+
reject: null,
|
|
66
|
+
};
|
|
67
|
+
// 创建 Promise 用于等待用户操作
|
|
68
|
+
session.promise = new Promise((resolve, reject) => {
|
|
69
|
+
session.resolve = resolve;
|
|
70
|
+
session.reject = reject;
|
|
71
|
+
// 8 分钟超时
|
|
72
|
+
setTimeout(() => {
|
|
73
|
+
if (session.status === 'pending') {
|
|
74
|
+
session.status = 'timeout';
|
|
75
|
+
this.sessions.delete(sessionId);
|
|
76
|
+
reject(new Error('User interaction timeout (8 minutes)'));
|
|
77
|
+
}
|
|
78
|
+
}, this.TIMEOUT_MS);
|
|
79
|
+
});
|
|
80
|
+
this.sessions.set(sessionId, session);
|
|
81
|
+
sendMcpLog('info', `📝 创建 Session: ${sessionId}`);
|
|
82
|
+
return sessionId;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* 等待 Session 完成
|
|
86
|
+
*/
|
|
87
|
+
async waitForSession(sessionId) {
|
|
88
|
+
const session = this.sessions.get(sessionId);
|
|
89
|
+
if (!session) {
|
|
90
|
+
throw new Error('Session not found');
|
|
91
|
+
}
|
|
92
|
+
if (!session.promise) {
|
|
93
|
+
throw new Error('Session promise not initialized');
|
|
94
|
+
}
|
|
95
|
+
try {
|
|
96
|
+
const result = await session.promise;
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
this.sessions.delete(sessionId);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 处理 HTTP 请求
|
|
105
|
+
*/
|
|
106
|
+
handleRequest(req, res) {
|
|
107
|
+
try {
|
|
108
|
+
const url = new URL(req.url, `http://localhost:${this.port}`);
|
|
109
|
+
// 设置 CORS 头
|
|
110
|
+
res.setHeader('Access-Control-Allow-Origin', '*');
|
|
111
|
+
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
|
|
112
|
+
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
|
|
113
|
+
// 处理 OPTIONS 请求
|
|
114
|
+
if (req.method === 'OPTIONS') {
|
|
115
|
+
res.writeHead(200);
|
|
116
|
+
res.end();
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (url.pathname === '/enhance' && req.method === 'GET') {
|
|
120
|
+
this.serveEnhancerUI(res);
|
|
121
|
+
}
|
|
122
|
+
else if (url.pathname === '/api/session' && req.method === 'GET') {
|
|
123
|
+
this.getSessionData(url.searchParams.get('session'), res);
|
|
124
|
+
}
|
|
125
|
+
else if (url.pathname === '/api/submit' && req.method === 'POST') {
|
|
126
|
+
this.handleSubmit(req, res);
|
|
127
|
+
}
|
|
128
|
+
else if (url.pathname === '/api/re-enhance' && req.method === 'POST') {
|
|
129
|
+
this.handleReEnhance(req, res);
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
res.writeHead(404, { 'Content-Type': 'text/plain' });
|
|
133
|
+
res.end('Not Found');
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
sendMcpLog('error', `❌ 请求处理错误: ${error}`);
|
|
138
|
+
res.writeHead(500, { 'Content-Type': 'text/plain' });
|
|
139
|
+
res.end('Internal Server Error');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* 返回 Web UI HTML
|
|
144
|
+
*/
|
|
145
|
+
serveEnhancerUI(res) {
|
|
146
|
+
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
|
|
147
|
+
res.end(ENHANCER_UI_HTML);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* 获取 Session 数据
|
|
151
|
+
*/
|
|
152
|
+
getSessionData(sessionId, res) {
|
|
153
|
+
if (!sessionId) {
|
|
154
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
155
|
+
res.end(JSON.stringify({ error: 'Session ID is required' }));
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
const session = this.sessions.get(sessionId);
|
|
159
|
+
if (!session) {
|
|
160
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
161
|
+
res.end(JSON.stringify({ error: 'Session not found' }));
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
165
|
+
res.end(JSON.stringify({
|
|
166
|
+
enhancedPrompt: session.enhancedPrompt,
|
|
167
|
+
status: session.status,
|
|
168
|
+
createdAt: session.createdAt,
|
|
169
|
+
timeoutMs: this.TIMEOUT_MS,
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* 处理用户提交
|
|
174
|
+
*/
|
|
175
|
+
handleSubmit(req, res) {
|
|
176
|
+
let body = '';
|
|
177
|
+
req.on('data', (chunk) => {
|
|
178
|
+
body += chunk.toString();
|
|
179
|
+
});
|
|
180
|
+
req.on('end', () => {
|
|
181
|
+
try {
|
|
182
|
+
const { sessionId, content } = JSON.parse(body);
|
|
183
|
+
if (!sessionId) {
|
|
184
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
185
|
+
res.end(JSON.stringify({ error: 'Session ID is required' }));
|
|
186
|
+
return;
|
|
187
|
+
}
|
|
188
|
+
const session = this.sessions.get(sessionId);
|
|
189
|
+
if (!session) {
|
|
190
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
191
|
+
res.end(JSON.stringify({ error: 'Session not found' }));
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
if (session.status !== 'pending') {
|
|
195
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
196
|
+
res.end(JSON.stringify({ error: 'Session already completed or timed out' }));
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
// 标记为完成
|
|
200
|
+
session.status = 'completed';
|
|
201
|
+
// 处理特殊标记
|
|
202
|
+
if (content === '__USE_ORIGINAL__') {
|
|
203
|
+
sendMcpLog('info', `📝 用户选择使用原始 prompt`);
|
|
204
|
+
session.resolve(session.originalPrompt);
|
|
205
|
+
}
|
|
206
|
+
else if (content === '__END_CONVERSATION__') {
|
|
207
|
+
sendMcpLog('info', `🛑 用户选择结束对话`);
|
|
208
|
+
session.resolve('__END_CONVERSATION__');
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
session.resolve(content);
|
|
212
|
+
}
|
|
213
|
+
sendMcpLog('info', `✅ Session ${sessionId} 已完成`);
|
|
214
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
215
|
+
res.end(JSON.stringify({ success: true }));
|
|
216
|
+
}
|
|
217
|
+
catch (error) {
|
|
218
|
+
sendMcpLog('error', `❌ 提交处理错误: ${error}`);
|
|
219
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
220
|
+
res.end(JSON.stringify({ error: 'Invalid request body' }));
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
req.on('error', (error) => {
|
|
224
|
+
sendMcpLog('error', `❌ 请求错误: ${error}`);
|
|
225
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
226
|
+
res.end(JSON.stringify({ error: 'Request error' }));
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* 处理继续增强请求
|
|
231
|
+
*/
|
|
232
|
+
handleReEnhance(req, res) {
|
|
233
|
+
let body = '';
|
|
234
|
+
req.on('data', (chunk) => {
|
|
235
|
+
body += chunk.toString();
|
|
236
|
+
});
|
|
237
|
+
req.on('end', async () => {
|
|
238
|
+
try {
|
|
239
|
+
const { sessionId, currentPrompt } = JSON.parse(body);
|
|
240
|
+
if (!sessionId) {
|
|
241
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
242
|
+
res.end(JSON.stringify({ error: 'Session ID is required' }));
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
const session = this.sessions.get(sessionId);
|
|
246
|
+
if (!session) {
|
|
247
|
+
res.writeHead(404, { 'Content-Type': 'application/json' });
|
|
248
|
+
res.end(JSON.stringify({ error: 'Session not found' }));
|
|
249
|
+
return;
|
|
250
|
+
}
|
|
251
|
+
// 调用增强逻辑(需要从 PromptEnhancer 传入)
|
|
252
|
+
if (!this.enhanceCallback) {
|
|
253
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
254
|
+
res.end(JSON.stringify({ error: 'Enhance callback not configured' }));
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
sendMcpLog('info', `🔄 继续增强 Session: ${sessionId}`);
|
|
258
|
+
try {
|
|
259
|
+
const newEnhancedPrompt = await this.enhanceCallback(currentPrompt, session.conversationHistory, session.blobNames);
|
|
260
|
+
// 更新 session 的增强内容
|
|
261
|
+
session.enhancedPrompt = newEnhancedPrompt;
|
|
262
|
+
res.writeHead(200, { 'Content-Type': 'application/json' });
|
|
263
|
+
res.end(JSON.stringify({ enhancedPrompt: newEnhancedPrompt }));
|
|
264
|
+
}
|
|
265
|
+
catch (error) {
|
|
266
|
+
sendMcpLog('error', `❌ 继续增强失败: ${error}`);
|
|
267
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
268
|
+
res.end(JSON.stringify({ error: 'Enhancement failed: ' + error.message }));
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
sendMcpLog('error', `❌ 继续增强请求处理错误: ${error}`);
|
|
273
|
+
res.writeHead(400, { 'Content-Type': 'application/json' });
|
|
274
|
+
res.end(JSON.stringify({ error: 'Invalid request body' }));
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
req.on('error', (error) => {
|
|
278
|
+
sendMcpLog('error', `❌ 请求错误: ${error}`);
|
|
279
|
+
res.writeHead(500, { 'Content-Type': 'application/json' });
|
|
280
|
+
res.end(JSON.stringify({ error: 'Request error' }));
|
|
281
|
+
});
|
|
282
|
+
}
|
|
283
|
+
enhanceCallback = null;
|
|
284
|
+
/**
|
|
285
|
+
* 设置增强回调函数
|
|
286
|
+
*/
|
|
287
|
+
setEnhanceCallback(callback) {
|
|
288
|
+
this.enhanceCallback = callback;
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* 停止服务器
|
|
292
|
+
*/
|
|
293
|
+
async stop() {
|
|
294
|
+
if (!this.server) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
297
|
+
return new Promise((resolve) => {
|
|
298
|
+
this.server.close(() => {
|
|
299
|
+
sendMcpLog('info', '🛑 Enhancer 服务器已停止');
|
|
300
|
+
this.server = null;
|
|
301
|
+
resolve();
|
|
302
|
+
});
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
//# sourceMappingURL=EnhancerServer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EnhancerServer.js","sourceRoot":"","sources":["../../src/enhancer/EnhancerServer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB7C;;GAEG;AACH,MAAM,OAAO,cAAc;IACjB,MAAM,GAAuB,IAAI,CAAC;IAClC,IAAI,GAAW,IAAI,CAAC;IACpB,QAAQ,GAA6B,IAAI,GAAG,EAAE,CAAC;IACtC,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO;IAEpD;;OAEG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO,CAAC,MAAM;QAChB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;YAC3C,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,IAAI,CAAC,MAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;gBAClC,UAAU,CAAC,MAAM,EAAE,wCAAwC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxE,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAU,EAAE,EAAE;gBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBAChC,UAAU,CAAC,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;oBAC1D,IAAI,CAAC,IAAI,EAAE,CAAC;oBACZ,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,aAAa,CACX,cAAsB,EACtB,cAAsB,EACtB,mBAA2B,EAC3B,SAAmB;QAEnB,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACtC,MAAM,OAAO,GAAgB;YAC3B,EAAE,EAAE,SAAS;YACb,cAAc;YACd,cAAc;YACd,mBAAmB;YACnB,SAAS;YACT,MAAM,EAAE,SAAS;YACjB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,IAAI;SACb,CAAC;QAEF,sBAAsB;QACtB,OAAO,CAAC,OAAO,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;YAC1B,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YAExB,SAAS;YACT,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;oBAC3B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAChC,MAAM,CAAC,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC,CAAC;gBAC5D,CAAC;YACH,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QACtC,UAAU,CAAC,MAAM,EAAE,kBAAkB,SAAS,EAAE,CAAC,CAAC;QAElD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,SAAiB;QACpC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QACvC,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YACrC,OAAO,MAAM,CAAC;QAChB,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,GAAyB,EAAE,GAAwB;QACvE,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAI,EAAE,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YAE/D,YAAY;YACZ,GAAG,CAAC,SAAS,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,oBAAoB,CAAC,CAAC;YACpE,GAAG,CAAC,SAAS,CAAC,8BAA8B,EAAE,cAAc,CAAC,CAAC;YAE9D,gBAAgB;YAChB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBACnB,GAAG,CAAC,GAAG,EAAE,CAAC;gBACV,OAAO;YACT,CAAC;YAED,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACxD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,cAAc,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;gBACnE,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC;YAC5D,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAC9B,CAAC;iBAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,iBAAiB,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACvE,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YACjC,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;gBACrD,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,UAAU,CAAC,OAAO,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC;YAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAwB;QAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,SAAwB,EAAE,GAAwB;QACvE,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;YAC7D,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;YACxD,OAAO;QACT,CAAC;QAED,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC3D,GAAG,CAAC,GAAG,CACL,IAAI,CAAC,SAAS,CAAC;YACb,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,IAAI,CAAC,UAAU;SAC3B,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,GAAyB,EAAE,GAAwB;QACtE,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEhD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;oBACjC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC,CAAC,CAAC;oBAC7E,OAAO;gBACT,CAAC;gBAED,QAAQ;gBACR,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;gBAE7B,SAAS;gBACT,IAAI,OAAO,KAAK,kBAAkB,EAAE,CAAC;oBACnC,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;oBACzC,OAAO,CAAC,OAAQ,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC3C,CAAC;qBAAM,IAAI,OAAO,KAAK,sBAAsB,EAAE,CAAC;oBAC9C,UAAU,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;oBAClC,OAAO,CAAC,OAAQ,CAAC,sBAAsB,CAAC,CAAC;gBAC3C,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,OAAQ,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;gBAED,UAAU,CAAC,MAAM,EAAE,aAAa,SAAS,MAAM,CAAC,CAAC;gBAEjD,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,OAAO,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC;gBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,UAAU,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,GAAyB,EAAE,GAAwB;QACzE,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YACvB,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;oBAC7D,OAAO;gBACT,CAAC;gBAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAE7C,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;oBACxD,OAAO;gBACT,CAAC;gBAED,gCAAgC;gBAChC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;oBAC1B,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC,CAAC,CAAC;oBACtE,OAAO;gBACT,CAAC;gBAED,UAAU,CAAC,MAAM,EAAE,oBAAoB,SAAS,EAAE,CAAC,CAAC;gBAEpD,IAAI,CAAC;oBACH,MAAM,iBAAiB,GAAG,MAAM,IAAI,CAAC,eAAe,CAClD,aAAa,EACb,OAAO,CAAC,mBAAmB,EAC3B,OAAO,CAAC,SAAS,CAClB,CAAC;oBAEF,mBAAmB;oBACnB,OAAO,CAAC,cAAc,GAAG,iBAAiB,CAAC;oBAE3C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,cAAc,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;gBACjE,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,UAAU,CAAC,OAAO,EAAE,aAAa,KAAK,EAAE,CAAC,CAAC;oBAC1C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;oBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAI,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;gBACxF,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,UAAU,CAAC,OAAO,EAAE,iBAAiB,KAAK,EAAE,CAAC,CAAC;gBAC9C,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;gBAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACxB,UAAU,CAAC,OAAO,EAAE,WAAW,KAAK,EAAE,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC;YAC3D,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,GAAmF,IAAI,CAAC;IAE/G;;OAEG;IACH,kBAAkB,CAAC,QAA+E;QAChG,IAAI,CAAC,eAAe,GAAG,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC7B,IAAI,CAAC,MAAO,CAAC,KAAK,CAAC,GAAG,EAAE;gBACtB,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;gBACzC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt Enhancer - 核心增强逻辑
|
|
3
|
+
* 基于 Augment VSCode 插件的实现
|
|
4
|
+
*/
|
|
5
|
+
import { IndexManager } from '../index/manager.js';
|
|
6
|
+
import { EnhancerServer } from './EnhancerServer.js';
|
|
7
|
+
/**
|
|
8
|
+
* Prompt Enhancer 类
|
|
9
|
+
*/
|
|
10
|
+
export declare class PromptEnhancer {
|
|
11
|
+
private indexManager;
|
|
12
|
+
private baseUrl;
|
|
13
|
+
private token;
|
|
14
|
+
private httpClient;
|
|
15
|
+
private server;
|
|
16
|
+
constructor(indexManager: IndexManager, baseUrl: string, token: string, server: EnhancerServer);
|
|
17
|
+
/**
|
|
18
|
+
* 增强 prompt
|
|
19
|
+
* @param originalPrompt 原始用户输入
|
|
20
|
+
* @param conversationHistory 对话历史(5-10轮)
|
|
21
|
+
* @returns 增强后的 prompt
|
|
22
|
+
*/
|
|
23
|
+
enhance(originalPrompt: string, conversationHistory: string): Promise<string>;
|
|
24
|
+
/**
|
|
25
|
+
* 加载已索引的 blob 名称列表
|
|
26
|
+
*/
|
|
27
|
+
private loadBlobNames;
|
|
28
|
+
/**
|
|
29
|
+
* 调用 prompt-enhancer API 生成增强内容
|
|
30
|
+
*/
|
|
31
|
+
private callPromptEnhancerApi;
|
|
32
|
+
/**
|
|
33
|
+
* 替换 Augment 特定的工具名称为 ace-tool 的工具名称
|
|
34
|
+
*/
|
|
35
|
+
private replaceToolNames;
|
|
36
|
+
/**
|
|
37
|
+
* 解析对话历史为 chat_history 格式
|
|
38
|
+
*/
|
|
39
|
+
private parseChatHistory;
|
|
40
|
+
/**
|
|
41
|
+
* 通过 Web UI 与用户交互
|
|
42
|
+
*/
|
|
43
|
+
private interactWithUser;
|
|
44
|
+
/**
|
|
45
|
+
* 打开浏览器
|
|
46
|
+
*/
|
|
47
|
+
private openBrowser;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=PromptEnhancer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptEnhancer.d.ts","sourceRoot":"","sources":["../../src/enhancer/PromptEnhancer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;GAEG;AACH,qBAAa,cAAc;IAKvB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,KAAK;IANf,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAiB;gBAGrB,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACrB,MAAM,EAAE,cAAc;IAcxB;;;;;OAKG;IACG,OAAO,CAAC,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA8CnF;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;YACW,qBAAqB;IAuEnC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAwBxB;;OAEG;YACW,gBAAgB;IA2C9B;;OAEG;IACH,OAAO,CAAC,WAAW;CAmBpB"}
|