ace-tool 0.1.0 → 0.1.3

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 ADDED
@@ -0,0 +1,225 @@
1
+ # ace-tool
2
+
3
+ [English](#english) | [中文](#中文)
4
+
5
+ ---
6
+
7
+ ## English
8
+
9
+ MCP server for codebase indexing and semantic search.
10
+
11
+ ### Installation
12
+
13
+ ```bash
14
+ npm install -g ace-tool
15
+ ```
16
+
17
+ Or use directly with npx:
18
+
19
+ ```bash
20
+ npx ace-tool --base-url <URL> --token <TOKEN>
21
+ ```
22
+
23
+ ### Configuration
24
+
25
+ #### MCP Settings
26
+
27
+ Add to your MCP configuration (e.g., Claude Desktop `claude_desktop_config.json`):
28
+
29
+ ```json
30
+ {
31
+ "mcpServers": {
32
+ "ace-tool": {
33
+ "command": "npx",
34
+ "args": [
35
+ "ace-tool",
36
+ "--base-url", "YOUR_BASE_URL",
37
+ "--token", "YOUR_TOKEN"
38
+ ]
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ #### Command Line Arguments
45
+
46
+ | Argument | Required | Description |
47
+ |----------|----------|-------------|
48
+ | `--base-url` | Yes | API base URL for the indexing service |
49
+ | `--token` | Yes | Authentication token |
50
+ | `--enable-log` | No | Enable logging to `.ace-tool/ace-tool.log` in project directory |
51
+
52
+ ### Tools
53
+
54
+ #### search_context
55
+
56
+ Search for relevant code context based on a natural language query.
57
+
58
+ **Parameters:**
59
+
60
+ - `project_root_path` (required): Absolute path to the project root directory
61
+ - `query` (required): Natural language description of the code you're looking for
62
+
63
+ **Example queries:**
64
+
65
+ - "Where is the function that handles user authentication?"
66
+ - "Find the initialization flow of message queue consumers during startup"
67
+ - "How is the database connected to the application?"
68
+
69
+ ### Project Data
70
+
71
+ ace-tool stores index data in a `.ace-tool` directory within each project:
72
+
73
+ ```
74
+ your-project/
75
+ ├── .ace-tool/
76
+ │ ├── index.json # Index metadata
77
+ │ └── ace-tool.log # Logs (if --enable-log is set)
78
+ ├── src/
79
+ └── ...
80
+ ```
81
+
82
+ The `.ace-tool` directory is automatically added to `.gitignore`.
83
+
84
+ ### Supported File Types
85
+
86
+ - **Programming languages**: `.py`, `.js`, `.ts`, `.jsx`, `.tsx`, `.java`, `.go`, `.rs`, `.cpp`, `.c`, `.h`, `.hpp`, `.cs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.clj`
87
+ - **Config/Data**: `.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.toml`, `.xml`, `.ini`, `.conf`
88
+ - **Web**: `.html`, `.css`, `.scss`, `.sass`, `.less`, `.vue`, `.svelte`
89
+ - **Scripts**: `.sql`, `.sh`, `.bash`, `.ps1`, `.bat`
90
+
91
+ ### Error Handling
92
+
93
+ ace-tool provides friendly error messages for common issues:
94
+
95
+ | Error Type | Description |
96
+ |------------|-------------|
97
+ | Token Invalid (401) | Token has expired or is invalid. Update `ACE_TOKEN`. |
98
+ | Access Denied (403) | Token may have been disabled. Contact service provider. |
99
+ | SSL Certificate Error | SSL certificate validation failed. Check `ACE_BASE_URL`. |
100
+ | Connection Refused | Cannot connect to server. Check network or service URL. |
101
+ | Connection Timeout | Request timed out. Check network status. |
102
+ | DNS Resolution Failed | Cannot resolve server address. Check `ACE_BASE_URL`. |
103
+
104
+ ### MCP Logging
105
+
106
+ ace-tool supports real-time logging via MCP protocol. Logs are automatically pushed to MCP clients that support the logging capability.
107
+
108
+ Log levels: `debug`, `info`, `warning`, `error`
109
+
110
+ To also save logs to a local file, use the `--enable-log` argument.
111
+
112
+ ### License
113
+
114
+ MIT
115
+
116
+ ---
117
+
118
+ ## 中文
119
+
120
+ 用于代码库索引和语义搜索的 MCP 服务器。
121
+
122
+ ### 安装
123
+
124
+ ```bash
125
+ npm install -g ace-tool
126
+ ```
127
+
128
+ 或直接使用 npx:
129
+
130
+ ```bash
131
+ npx ace-tool --base-url <URL> --token <TOKEN>
132
+ ```
133
+
134
+ ### 配置
135
+
136
+ #### MCP 设置
137
+
138
+ 添加到你的 MCP 配置文件(例如 Claude Desktop 的 `claude_desktop_config.json`):
139
+
140
+ ```json
141
+ {
142
+ "mcpServers": {
143
+ "ace-tool": {
144
+ "command": "npx",
145
+ "args": [
146
+ "ace-tool",
147
+ "--base-url", "YOUR_BASE_URL",
148
+ "--token", "YOUR_TOKEN"
149
+ ]
150
+ }
151
+ }
152
+ }
153
+ ```
154
+
155
+ #### 命令行参数
156
+
157
+ | 参数 | 必填 | 描述 |
158
+ |------|------|------|
159
+ | `--base-url` | 是 | 索引服务的 API 基础 URL |
160
+ | `--token` | 是 | 认证令牌 |
161
+ | `--enable-log` | 否 | 启用日志,保存到项目目录的 `.ace-tool/ace-tool.log` |
162
+
163
+ ### 工具
164
+
165
+ #### search_context
166
+
167
+ 基于自然语言查询搜索相关代码上下文。
168
+
169
+ **参数:**
170
+
171
+ - `project_root_path`(必填):项目根目录的绝对路径
172
+ - `query`(必填):描述你要查找的代码的自然语言
173
+
174
+ **查询示例:**
175
+
176
+ - "处理用户认证的函数在哪里?"
177
+ - "查找启动时消息队列消费者的初始化流程"
178
+ - "数据库是如何连接到应用程序的?"
179
+
180
+ ### 项目数据
181
+
182
+ ace-tool 在每个项目的 `.ace-tool` 目录中存储索引数据:
183
+
184
+ ```
185
+ your-project/
186
+ ├── .ace-tool/
187
+ │ ├── index.json # 索引元数据
188
+ │ └── ace-tool.log # 日志(如果设置了 --enable-log)
189
+ ├── src/
190
+ └── ...
191
+ ```
192
+
193
+ `.ace-tool` 目录会自动添加到 `.gitignore`。
194
+
195
+ ### 支持的文件类型
196
+
197
+ - **编程语言**:`.py`, `.js`, `.ts`, `.jsx`, `.tsx`, `.java`, `.go`, `.rs`, `.cpp`, `.c`, `.h`, `.hpp`, `.cs`, `.rb`, `.php`, `.swift`, `.kt`, `.scala`, `.clj`
198
+ - **配置/数据**:`.md`, `.txt`, `.json`, `.yaml`, `.yml`, `.toml`, `.xml`, `.ini`, `.conf`
199
+ - **Web**:`.html`, `.css`, `.scss`, `.sass`, `.less`, `.vue`, `.svelte`
200
+ - **脚本**:`.sql`, `.sh`, `.bash`, `.ps1`, `.bat`
201
+
202
+ ### 错误处理
203
+
204
+ ace-tool 为常见问题提供友好的错误提示:
205
+
206
+ | 错误类型 | 描述 |
207
+ | -------- | ---- |
208
+ | Token 无效 (401) | Token 已过期或无效,请更新 `ACE_TOKEN` |
209
+ | 访问被拒绝 (403) | Token 可能已被禁用,请联系服务提供商 |
210
+ | SSL 证书错误 | SSL 证书验证失败,请检查 `ACE_BASE_URL` 配置 |
211
+ | 连接被拒绝 | 无法连接到服务器,请检查网络或服务地址 |
212
+ | 连接超时 | 请求超时,请检查网络状况 |
213
+ | DNS 解析失败 | 无法解析服务器地址,请检查 `ACE_BASE_URL` |
214
+
215
+ ### MCP 日志
216
+
217
+ ace-tool 支持通过 MCP 协议实时推送日志。日志会自动推送到支持日志功能的 MCP 客户端。
218
+
219
+ 日志级别:`debug`, `info`, `warning`, `error`
220
+
221
+ 如需同时保存日志到本地文件,请使用 `--enable-log` 参数。
222
+
223
+ ### 许可证
224
+
225
+ MIT
package/dist/config.d.ts CHANGED
@@ -10,6 +10,19 @@ export interface Config {
10
10
  excludePatterns: string[];
11
11
  enableLog: boolean;
12
12
  }
13
+ /**
14
+ * 上传策略配置(根据项目规模自适应)
15
+ */
16
+ export interface UploadStrategy {
17
+ batchSize: number;
18
+ concurrency: number;
19
+ timeout: number;
20
+ scaleName: string;
21
+ }
22
+ /**
23
+ * 根据文件块数量获取自适应上传策略
24
+ */
25
+ export declare function getUploadStrategy(blobCount: number): UploadStrategy;
13
26
  /**
14
27
  * 初始化配置
15
28
  */
@@ -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;AAiED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA6BnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
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;AAiED;;GAEG;AACH,wBAAgB,UAAU,IAAI,MAAM,CA6BnC;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAKlC"}
package/dist/config.js CHANGED
@@ -1,6 +1,47 @@
1
1
  /**
2
2
  * 配置模块 - 从命令行参数读取配置
3
3
  */
4
+ /**
5
+ * 根据文件块数量获取自适应上传策略
6
+ */
7
+ export function getUploadStrategy(blobCount) {
8
+ if (blobCount < 100) {
9
+ // 小型项目:保守配置,快速完成
10
+ return {
11
+ batchSize: 10,
12
+ concurrency: 1,
13
+ timeout: 30000,
14
+ scaleName: '小型'
15
+ };
16
+ }
17
+ else if (blobCount < 500) {
18
+ // 中型项目:适度并发
19
+ return {
20
+ batchSize: 30,
21
+ concurrency: 2,
22
+ timeout: 45000,
23
+ scaleName: '中型'
24
+ };
25
+ }
26
+ else if (blobCount < 2000) {
27
+ // 大型项目:高效并发
28
+ return {
29
+ batchSize: 50,
30
+ concurrency: 3,
31
+ timeout: 60000,
32
+ scaleName: '大型'
33
+ };
34
+ }
35
+ else {
36
+ // 超大型项目:最大化吞吐
37
+ return {
38
+ batchSize: 70,
39
+ concurrency: 4,
40
+ timeout: 90000,
41
+ scaleName: '超大型'
42
+ };
43
+ }
44
+ }
4
45
  // 默认支持的文本文件扩展名
5
46
  const DEFAULT_TEXT_EXTENSIONS = new Set([
6
47
  // 编程语言
@@ -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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAqBH;;GAEG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAqDD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAgB;gBAGhC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAAY,EAC7B,eAAe,GAAE,MAAM,EAAO;IAqBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAkBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA8CxB;;OAEG;YACW,YAAY;IAiD1B;;OAEG;YACW,YAAY;IAiC1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IAqG1C;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAsDpD"}
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"AAAA;;GAEG;AAsBH;;GAEG;AACH,UAAU,WAAW;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAoDD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,cAAc,CAAc;IACpC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,UAAU,CAAgB;gBAGhC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,EAC3B,SAAS,EAAE,MAAM,EACjB,eAAe,GAAE,MAAY,EAC7B,eAAe,GAAE,MAAM,EAAO;IAmBhC;;OAEG;IACH,OAAO,CAAC,aAAa;IAgBrB;;OAEG;IACH,OAAO,CAAC,aAAa;IAkCrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAMpB;;OAEG;IACH,OAAO,CAAC,SAAS;IAajB;;OAEG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IA6CxB;;OAEG;YACW,YAAY;IAgD1B;;OAEG;YACW,YAAY;IAiE1B;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,WAAW,CAAC;IA+H1C;;OAEG;IACG,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAyDpD"}
@@ -7,8 +7,9 @@ import path from 'path';
7
7
  import axios from 'axios';
8
8
  import iconv from 'iconv-lite';
9
9
  import ignore from 'ignore';
10
- import { logger } from '../logger.js';
10
+ import { sendMcpLog } from '../mcpLogger.js';
11
11
  import { getIndexFilePath } from '../utils/projectDetector.js';
12
+ import { getUploadStrategy } from '../config.js';
12
13
  /**
13
14
  * 使用多种编码尝试读取文件
14
15
  */
@@ -30,7 +31,7 @@ async function readFileWithEncoding(filePath) {
30
31
  }
31
32
  }
32
33
  if (encoding !== 'utf-8') {
33
- logger.debug(`Read ${filePath} with encoding: ${encoding}`);
34
+ // UTF-8 编码,静默处理
34
35
  }
35
36
  return content;
36
37
  }
@@ -39,7 +40,6 @@ async function readFileWithEncoding(filePath) {
39
40
  }
40
41
  }
41
42
  const content = iconv.decode(buffer, 'utf-8');
42
- logger.warning(`Read ${filePath} with utf-8 (some characters may be lost)`);
43
43
  return content;
44
44
  }
45
45
  /**
@@ -85,7 +85,6 @@ export class IndexManager {
85
85
  Authorization: `Bearer ${this.token}`,
86
86
  },
87
87
  });
88
- logger.info(`IndexManager initialized for project: ${projectRoot}`);
89
88
  }
90
89
  /**
91
90
  * 加载 .gitignore 文件
@@ -99,11 +98,9 @@ export class IndexManager {
99
98
  const content = fs.readFileSync(gitignorePath, 'utf-8');
100
99
  const patterns = content.split('\n');
101
100
  const ig = ignore().add(patterns);
102
- logger.debug(`Loaded .gitignore with ${patterns.length} patterns`);
103
101
  return ig;
104
102
  }
105
103
  catch (error) {
106
- logger.warning(`Failed to load .gitignore: ${error}`);
107
104
  return null;
108
105
  }
109
106
  }
@@ -158,7 +155,7 @@ export class IndexManager {
158
155
  return JSON.parse(content);
159
156
  }
160
157
  catch (error) {
161
- logger.error(`Failed to load index: ${error}`);
158
+ sendMcpLog('error', `❌ 加载索引失败: ${error}`);
162
159
  return [];
163
160
  }
164
161
  }
@@ -171,7 +168,7 @@ export class IndexManager {
171
168
  fs.writeFileSync(this.indexFilePath, content, 'utf-8');
172
169
  }
173
170
  catch (error) {
174
- logger.error(`Failed to save index: ${error}`);
171
+ sendMcpLog('error', `❌ 保存索引失败: ${error}`);
175
172
  throw error;
176
173
  }
177
174
  }
@@ -215,7 +212,6 @@ export class IndexManager {
215
212
  const chunkPath = `${filePath}#chunk${chunkIdx + 1}of${numChunks}`;
216
213
  blobs.push({ path: chunkPath, content: chunkContent });
217
214
  }
218
- logger.info(`Split file ${filePath} (${totalLines} lines) into ${numChunks} chunks`);
219
215
  return blobs;
220
216
  }
221
217
  /**
@@ -256,13 +252,12 @@ export class IndexManager {
256
252
  blobs.push(...fileBlobs);
257
253
  }
258
254
  catch (error) {
259
- logger.warning(`Failed to read file: ${fullPath} - ${error}`);
255
+ // 静默处理读取失败
260
256
  }
261
257
  }
262
258
  }
263
259
  };
264
260
  await walkDir(this.projectRoot);
265
- logger.info(`Collected ${blobs.length} blobs (excluded ${excludedCount} items)`);
266
261
  return blobs;
267
262
  }
268
263
  /**
@@ -277,16 +272,46 @@ export class IndexManager {
277
272
  catch (error) {
278
273
  lastError = error instanceof Error ? error : new Error(String(error));
279
274
  const axiosError = error;
275
+ // Token 失效检测 - 不重试,直接抛出友好错误
276
+ if (axiosError.response?.status === 401) {
277
+ sendMcpLog('error', '🔑 Token 已失效或无效,请检查配置');
278
+ throw new Error('Token 已失效或无效,请更新 ACE_TOKEN 环境变量');
279
+ }
280
+ // 权限被拒绝 - 可能被官方制裁
281
+ if (axiosError.response?.status === 403) {
282
+ sendMcpLog('error', '🚫 访问被拒绝,Token 可能已被禁用');
283
+ throw new Error('访问被拒绝,Token 可能已被官方禁用,请联系服务提供商');
284
+ }
285
+ // SSL 证书错误检测 - 不重试
286
+ if (axiosError.code === 'UNABLE_TO_VERIFY_LEAF_SIGNATURE' ||
287
+ axiosError.code === 'CERT_HAS_EXPIRED' ||
288
+ axiosError.code === 'ERR_TLS_CERT_ALTNAME_INVALID' ||
289
+ lastError.message.includes('certificate') ||
290
+ lastError.message.includes('altnames')) {
291
+ sendMcpLog('error', '🔐 SSL 证书验证失败,请检查 ACE_BASE_URL 配置是否正确');
292
+ throw new Error('SSL 证书验证失败,请检查 ACE_BASE_URL 配置是否正确,或联系服务提供商');
293
+ }
280
294
  const isRetryable = axiosError.code === 'ECONNREFUSED' ||
281
295
  axiosError.code === 'ETIMEDOUT' ||
282
296
  axiosError.code === 'ENOTFOUND' ||
283
297
  (axiosError.response && axiosError.response.status >= 500);
284
298
  if (!isRetryable || attempt === maxRetries - 1) {
285
- logger.error(`Request failed after ${attempt + 1} attempts: ${lastError.message}`);
286
- throw error;
299
+ // 提供更友好的网络错误提示
300
+ let friendlyMessage = lastError.message;
301
+ if (axiosError.code === 'ECONNREFUSED') {
302
+ friendlyMessage = '无法连接到服务器,请检查网络或服务地址';
303
+ }
304
+ else if (axiosError.code === 'ETIMEDOUT') {
305
+ friendlyMessage = '连接超时,请检查网络状况';
306
+ }
307
+ else if (axiosError.code === 'ENOTFOUND') {
308
+ friendlyMessage = '无法解析服务器地址,请检查 ACE_BASE_URL 配置';
309
+ }
310
+ sendMcpLog('error', `❌ 请求失败 (${attempt + 1}次尝试): ${friendlyMessage}`);
311
+ throw new Error(friendlyMessage);
287
312
  }
288
313
  const waitTime = retryDelay * Math.pow(2, attempt);
289
- logger.warning(`Request failed (attempt ${attempt + 1}/${maxRetries}). Retrying in ${waitTime}ms...`);
314
+ sendMcpLog('warning', `⚠️ 请求失败 (${attempt + 1}/${maxRetries}),${waitTime}ms 后重试...`);
290
315
  await sleep(waitTime);
291
316
  }
292
317
  }
@@ -296,12 +321,15 @@ export class IndexManager {
296
321
  * 对项目进行索引(支持增量索引)
297
322
  */
298
323
  async indexProject() {
299
- logger.info(`Indexing project: ${this.projectRoot}`);
324
+ sendMcpLog('info', `📂 开始索引项目: ${this.projectRoot}`);
300
325
  try {
326
+ sendMcpLog('info', '🔍 正在扫描文件...');
301
327
  const blobs = await this.collectFiles();
302
328
  if (blobs.length === 0) {
329
+ sendMcpLog('warning', '⚠️ 未找到可索引的文本文件');
303
330
  return { status: 'error', message: 'No text files found in project' };
304
331
  }
332
+ sendMcpLog('info', `📄 扫描完成,共发现 ${blobs.length} 个文件块`);
305
333
  // 加载已存在的索引数据
306
334
  const existingBlobNames = new Set(this.loadIndex());
307
335
  // 为所有收集的 blob 计算哈希值
@@ -315,52 +343,69 @@ export class IndexManager {
315
343
  const existingHashes = new Set([...allBlobHashes].filter((hash) => existingBlobNames.has(hash)));
316
344
  const newHashes = [...allBlobHashes].filter((hash) => !existingBlobNames.has(hash));
317
345
  const blobsToUpload = newHashes.map((hash) => blobHashMap.get(hash));
318
- logger.info(`Incremental indexing: total=${blobs.length}, existing=${existingHashes.size}, new=${newHashes.length}`);
346
+ sendMcpLog('info', `📊 增量索引: 已有 ${existingHashes.size} 个, 新增 ${newHashes.length} 个`);
319
347
  // 只上传新的 blob
320
348
  const uploadedBlobNames = [];
321
349
  const failedBatches = [];
322
350
  if (blobsToUpload.length > 0) {
323
- const totalBatches = Math.ceil(blobsToUpload.length / this.batchSize);
324
- logger.info(`Uploading ${blobsToUpload.length} new blobs in ${totalBatches} batches`);
325
- for (let batchIdx = 0; batchIdx < totalBatches; batchIdx++) {
326
- const startIdx = batchIdx * this.batchSize;
327
- const endIdx = Math.min(startIdx + this.batchSize, blobsToUpload.length);
328
- const batchBlobs = blobsToUpload.slice(startIdx, endIdx);
329
- logger.info(`Uploading batch ${batchIdx + 1}/${totalBatches} (${batchBlobs.length} blobs)`);
330
- try {
331
- const result = await this.retryRequest(async () => {
332
- const response = await this.httpClient.post(`${this.baseUrl}/batch-upload`, {
333
- blobs: batchBlobs,
351
+ // 获取自适应上传策略
352
+ const strategy = getUploadStrategy(blobsToUpload.length);
353
+ sendMcpLog('info', `📐 项目规模: ${strategy.scaleName} (批次大小: ${strategy.batchSize}, 并发: ${strategy.concurrency})`);
354
+ const totalBatches = Math.ceil(blobsToUpload.length / strategy.batchSize);
355
+ sendMcpLog('info', `⬆️ 开始上传 ${blobsToUpload.length} 个新文件块,共 ${totalBatches} 批`);
356
+ // 准备所有批次
357
+ const batches = [];
358
+ for (let i = 0; i < blobsToUpload.length; i += strategy.batchSize) {
359
+ batches.push(blobsToUpload.slice(i, i + strategy.batchSize));
360
+ }
361
+ // 并发上传
362
+ for (let i = 0; i < batches.length; i += strategy.concurrency) {
363
+ const concurrentBatches = batches.slice(i, i + strategy.concurrency);
364
+ const batchIndices = concurrentBatches.map((_, idx) => i + idx + 1);
365
+ sendMcpLog('info', `📤 上传批次 ${batchIndices.join(', ')}/${totalBatches}...`);
366
+ const uploadPromises = concurrentBatches.map(async (batchBlobs, idx) => {
367
+ const batchIdx = i + idx + 1;
368
+ try {
369
+ const result = await this.retryRequest(async () => {
370
+ const response = await this.httpClient.post(`${this.baseUrl}/batch-upload`, { blobs: batchBlobs }, { timeout: strategy.timeout });
371
+ return response.data;
334
372
  });
335
- return response.data;
336
- });
337
- const batchBlobNames = result.blob_names || [];
338
- if (batchBlobNames.length === 0) {
339
- logger.warning(`Batch ${batchIdx + 1} returned no blob names`);
340
- failedBatches.push(batchIdx + 1);
341
- continue;
373
+ const batchBlobNames = result.blob_names || [];
374
+ if (batchBlobNames.length === 0) {
375
+ sendMcpLog('warning', `⚠️ 批次 ${batchIdx} 返回空结果`);
376
+ return { success: false, batchIdx, blobNames: [] };
377
+ }
378
+ return { success: true, batchIdx, blobNames: batchBlobNames };
379
+ }
380
+ catch (error) {
381
+ const errorMessage = error instanceof Error ? error.message : String(error);
382
+ sendMcpLog('error', `❌ 批次 ${batchIdx} 上传失败: ${errorMessage}`);
383
+ return { success: false, batchIdx, blobNames: [] };
384
+ }
385
+ });
386
+ const results = await Promise.all(uploadPromises);
387
+ for (const result of results) {
388
+ if (result.success) {
389
+ uploadedBlobNames.push(...result.blobNames);
390
+ }
391
+ else {
392
+ failedBatches.push(result.batchIdx);
342
393
  }
343
- uploadedBlobNames.push(...batchBlobNames);
344
- logger.info(`Batch ${batchIdx + 1} uploaded successfully`);
345
- }
346
- catch (error) {
347
- const errorMessage = error instanceof Error ? error.message : String(error);
348
- logger.error(`Batch ${batchIdx + 1} failed: ${errorMessage}`);
349
- failedBatches.push(batchIdx + 1);
350
394
  }
351
395
  }
352
396
  if (uploadedBlobNames.length === 0 && blobsToUpload.length > 0 && existingHashes.size === 0) {
397
+ sendMcpLog('error', '❌ 所有批次上传失败');
353
398
  return { status: 'error', message: 'All batches failed on first indexing' };
354
399
  }
355
400
  }
356
401
  else {
357
- logger.info('No new blobs to upload');
402
+ sendMcpLog('info', '✅ 无需上传新文件,使用缓存索引');
358
403
  }
359
404
  // 合并已存在和新上传的 blob 名称
360
405
  const allBlobNames = [...existingHashes, ...uploadedBlobNames];
361
406
  this.saveIndex(allBlobNames);
362
407
  const message = `Indexed ${allBlobNames.length} blobs (existing: ${existingHashes.size}, new: ${uploadedBlobNames.length})`;
363
- logger.info(message);
408
+ sendMcpLog('info', `✅ 索引完成: 共 ${allBlobNames.length} 个文件块`);
364
409
  return {
365
410
  status: failedBatches.length === 0 ? 'success' : 'partial_success',
366
411
  message,
@@ -373,7 +418,7 @@ export class IndexManager {
373
418
  }
374
419
  catch (error) {
375
420
  const errorMessage = error instanceof Error ? error.message : String(error);
376
- logger.error(`Failed to index project: ${errorMessage}`);
421
+ sendMcpLog('error', `❌ 索引项目失败: ${errorMessage}`);
377
422
  return { status: 'error', message: errorMessage };
378
423
  }
379
424
  }
@@ -381,20 +426,22 @@ export class IndexManager {
381
426
  * 搜索代码上下文(自动增量索引)
382
427
  */
383
428
  async searchContext(query) {
384
- logger.info(`Searching with query: ${query}`);
429
+ sendMcpLog('info', `🔎 开始搜索: ${query}`);
385
430
  try {
386
431
  // 自动索引
387
432
  const indexResult = await this.indexProject();
388
433
  if (indexResult.status === 'error') {
434
+ sendMcpLog('error', `❌ 索引失败: ${indexResult.message}`);
389
435
  return `Error: Failed to index project. ${indexResult.message}`;
390
436
  }
391
437
  // 加载索引
392
438
  const blobNames = this.loadIndex();
393
439
  if (blobNames.length === 0) {
440
+ sendMcpLog('error', '❌ 索引为空');
394
441
  return 'Error: No blobs found after indexing.';
395
442
  }
396
443
  // 执行搜索
397
- logger.info(`Searching with ${blobNames.length} blobs...`);
444
+ sendMcpLog('info', `🔍 正在搜索 ${blobNames.length} 个文件块...`);
398
445
  const payload = {
399
446
  information_request: query,
400
447
  blobs: {
@@ -413,14 +460,15 @@ export class IndexManager {
413
460
  }, 3, 2000);
414
461
  const formattedRetrieval = result.formatted_retrieval || '';
415
462
  if (!formattedRetrieval) {
463
+ sendMcpLog('info', '📭 未找到相关代码');
416
464
  return 'No relevant code context found for your query.';
417
465
  }
418
- logger.info('Search completed');
466
+ sendMcpLog('info', '✅ 搜索完成');
419
467
  return formattedRetrieval;
420
468
  }
421
469
  catch (error) {
422
470
  const errorMessage = error instanceof Error ? error.message : String(error);
423
- logger.error(`Search failed: ${errorMessage}`);
471
+ sendMcpLog('error', `❌ 搜索失败: ${errorMessage}`);
424
472
  return `Error: ${errorMessage}`;
425
473
  }
426
474
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/index/manager.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
7
7
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
8
8
  import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
9
9
  import { initConfig } from './config.js';
10
- import { logger } from './logger.js';
10
+ import { initMcpLogger, sendMcpLog } from './mcpLogger.js';
11
11
  import { SEARCH_CONTEXT_TOOL } from './prompts/searchContext.js';
12
12
  import { searchContextTool } from './tools/searchContext.js';
13
13
  /**
@@ -19,8 +19,11 @@ const server = new Server({
19
19
  }, {
20
20
  capabilities: {
21
21
  tools: {},
22
+ logging: {},
22
23
  },
23
24
  });
25
+ // 初始化 MCP 日志模块
26
+ initMcpLogger(server);
24
27
  /**
25
28
  * 列出可用工具
26
29
  */
@@ -39,11 +42,9 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
39
42
  */
40
43
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
41
44
  const { name, arguments: args } = request.params;
42
- logger.info(`Tool called: ${name}, args: ${JSON.stringify(args)}`);
43
45
  try {
44
46
  if (name === 'search_context') {
45
47
  const result = await searchContextTool(args);
46
- logger.info(`Tool result: ${result?.text?.substring(0, 100)}...`);
47
48
  return {
48
49
  content: [
49
50
  {
@@ -64,7 +65,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
64
65
  }
65
66
  catch (error) {
66
67
  const errorMessage = error instanceof Error ? error.message : String(error);
67
- logger.error(`Tool execution error: ${errorMessage}`);
68
+ sendMcpLog('error', `❌ 工具执行错误: ${errorMessage}`);
68
69
  return {
69
70
  content: [
70
71
  {
@@ -81,16 +82,14 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
81
82
  async function main() {
82
83
  try {
83
84
  // 初始化配置
84
- const config = initConfig();
85
- logger.info('Starting ace-tool MCP server...');
86
- logger.info(`API: ${config.baseUrl}`);
85
+ initConfig();
87
86
  // 启动 MCP 服务器
88
87
  const transport = new StdioServerTransport();
89
88
  await server.connect(transport);
90
- logger.info('MCP server connected via stdio');
91
89
  }
92
90
  catch (error) {
93
- logger.exception('Server error', error);
91
+ const errorMessage = error instanceof Error ? error.message : String(error);
92
+ sendMcpLog('error', `❌ 服务器错误: ${errorMessage}`);
94
93
  process.exit(1);
95
94
  }
96
95
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;GAEG;AACH,MAAM,MAAM,GAAG,IAAI,MAAM,CACvB;IACE,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;CACjB,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;IAC1D,MAAM,KAAK,GAAW;QACpB;YACE,IAAI,EAAE,mBAAmB,CAAC,IAAI;YAC9B,WAAW,EAAE,mBAAmB,CAAC,WAAW;YAC5C,WAAW,EAAE,mBAAmB,CAAC,WAAW;SAC7C;KACF,CAAC;IAEF,OAAO,EAAE,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IAChE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAEjD,MAAM,CAAC,IAAI,CAAC,gBAAgB,IAAI,WAAW,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC;QACH,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAsD,CAAC,CAAC;YAC/F,MAAM,CAAC,IAAI,CAAC,gBAAgB,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAClE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,MAAM,EAAE,IAAI,IAAI,2BAA2B;qBAClD;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,iBAAiB,IAAI,EAAE;iBAC9B;aACF;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAY,EAAE,CAAC,CAAC;QACtD,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,UAAU,YAAY,EAAE;iBAC/B;aACF;SACF,CAAC;IACJ,CAAC;AACH,CAAC,CAAC,CAAC;AAEH;;GAEG;AACH,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,QAAQ;QACR,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;QAE5B,MAAM,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAEtC,aAAa;QACb,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;QAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAEhC,MAAM,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAChD,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACxC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,QAAQ;AACR,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 统一日志模块 - 同时支持 MCP 客户端推送和本地文件写入
3
+ */
4
+ import type { Server } from '@modelcontextprotocol/sdk/server/index.js';
5
+ type LogLevel = 'debug' | 'info' | 'warning' | 'error';
6
+ /**
7
+ * 初始化 MCP 日志模块
8
+ */
9
+ export declare function initMcpLogger(server: Server): void;
10
+ /**
11
+ * 启用文件日志
12
+ */
13
+ export declare function enableFileLog(): void;
14
+ /**
15
+ * 设置项目路径(用于文件日志)
16
+ */
17
+ export declare function setLogProjectPath(projectRoot: string): void;
18
+ /**
19
+ * 关闭日志流
20
+ */
21
+ export declare function closeLog(): void;
22
+ /**
23
+ * 发送日志(同时推送到 MCP 客户端和写入文件)
24
+ */
25
+ export declare function sendMcpLog(level: LogLevel, message: string): void;
26
+ export {};
27
+ //# sourceMappingURL=mcpLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpLogger.d.ts","sourceRoot":"","sources":["../src/mcpLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAExE,KAAK,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC;AAOvD;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAElD;AAED;;GAEG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAEpC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CA0B3D;AAED;;GAEG;AACH,wBAAgB,QAAQ,IAAI,IAAI,CAK/B;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAkBjE"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * 统一日志模块 - 同时支持 MCP 客户端推送和本地文件写入
3
+ */
4
+ import fs from 'fs';
5
+ import path from 'path';
6
+ let mcpServer = null;
7
+ let fileEnabled = false;
8
+ let logFilePath = null;
9
+ let logStream = null;
10
+ /**
11
+ * 初始化 MCP 日志模块
12
+ */
13
+ export function initMcpLogger(server) {
14
+ mcpServer = server;
15
+ }
16
+ /**
17
+ * 启用文件日志
18
+ */
19
+ export function enableFileLog() {
20
+ fileEnabled = true;
21
+ }
22
+ /**
23
+ * 设置项目路径(用于文件日志)
24
+ */
25
+ export function setLogProjectPath(projectRoot) {
26
+ if (!fileEnabled) {
27
+ return;
28
+ }
29
+ const aceDir = path.join(projectRoot, '.ace-tool');
30
+ // 确保 .ace-tool 目录存在
31
+ if (!fs.existsSync(aceDir)) {
32
+ fs.mkdirSync(aceDir, { recursive: true });
33
+ }
34
+ logFilePath = path.join(aceDir, 'ace-tool.log');
35
+ // 关闭旧的流
36
+ if (logStream) {
37
+ logStream.end();
38
+ }
39
+ // 创建新的写入流(追加模式)
40
+ logStream = fs.createWriteStream(logFilePath, { flags: 'a' });
41
+ // 写入分隔线
42
+ const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19);
43
+ const separator = `\n${'='.repeat(60)}\n${timestamp} | Session started\n${'='.repeat(60)}\n`;
44
+ logStream.write(separator);
45
+ }
46
+ /**
47
+ * 关闭日志流
48
+ */
49
+ export function closeLog() {
50
+ if (logStream) {
51
+ logStream.end();
52
+ logStream = null;
53
+ }
54
+ }
55
+ /**
56
+ * 发送日志(同时推送到 MCP 客户端和写入文件)
57
+ */
58
+ export function sendMcpLog(level, message) {
59
+ // 1. 推送到 MCP 客户端
60
+ if (mcpServer) {
61
+ mcpServer.sendLoggingMessage({
62
+ level,
63
+ data: message,
64
+ }).catch(() => {
65
+ // 忽略发送失败(可能客户端未连接)
66
+ });
67
+ }
68
+ // 2. 写入本地文件(如果启用)
69
+ if (fileEnabled && logStream) {
70
+ const timestamp = new Date().toISOString().replace('T', ' ').substring(0, 19);
71
+ const levelStr = level.toUpperCase().padEnd(7);
72
+ const logLine = `${timestamp} | ${levelStr} | ${message}\n`;
73
+ logStream.write(logLine);
74
+ }
75
+ }
76
+ //# sourceMappingURL=mcpLogger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpLogger.js","sourceRoot":"","sources":["../src/mcpLogger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAKxB,IAAI,SAAS,GAAkB,IAAI,CAAC;AACpC,IAAI,WAAW,GAAY,KAAK,CAAC;AACjC,IAAI,WAAW,GAAkB,IAAI,CAAC;AACtC,IAAI,SAAS,GAA0B,IAAI,CAAC;AAE5C;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc;IAC1C,SAAS,GAAG,MAAM,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa;IAC3B,WAAW,GAAG,IAAI,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,WAAmB;IACnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEnD,oBAAoB;IACpB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAEhD,QAAQ;IACR,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,EAAE,CAAC;IAClB,CAAC;IAED,gBAAgB;IAChB,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;IAE9D,QAAQ;IACR,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,SAAS,uBAAuB,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7F,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,QAAQ;IACtB,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,GAAG,EAAE,CAAC;QAChB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAe,EAAE,OAAe;IACzD,iBAAiB;IACjB,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,kBAAkB,CAAC;YAC3B,KAAK;YACL,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YACZ,mBAAmB;QACrB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,IAAI,WAAW,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9E,MAAM,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,GAAG,SAAS,MAAM,QAAQ,MAAM,OAAO,IAAI,CAAC;QAC5D,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC"}
@@ -4,7 +4,7 @@
4
4
  import fs from 'fs';
5
5
  import { getConfig } from '../config.js';
6
6
  import { IndexManager } from '../index/manager.js';
7
- import { logger } from '../logger.js';
7
+ import { enableFileLog, setLogProjectPath, sendMcpLog } from '../mcpLogger.js';
8
8
  /**
9
9
  * search_context 工具实现
10
10
  */
@@ -30,19 +30,18 @@ export async function searchContextTool(args) {
30
30
  return { type: 'text', text: `Error: Project path is not a directory: ${projectRoot}` };
31
31
  }
32
32
  const config = getConfig();
33
- // 根据配置启用日志
33
+ // 根据配置启用文件日志
34
34
  if (config.enableLog) {
35
- logger.enable();
36
- logger.setProjectPath(projectRoot);
35
+ enableFileLog();
36
+ setLogProjectPath(projectRoot);
37
37
  }
38
- logger.info(`Tool invoked: search_context for project ${projectRoot}`);
39
38
  const indexManager = new IndexManager(projectRoot, config.baseUrl, config.token, config.textExtensions, config.batchSize, config.maxLinesPerBlob, config.excludePatterns);
40
39
  const result = await indexManager.searchContext(query);
41
40
  return { type: 'text', text: result };
42
41
  }
43
42
  catch (error) {
44
43
  const errorMessage = error instanceof Error ? error.message : String(error);
45
- logger.exception('Error in search_context_tool', error);
44
+ sendMcpLog('error', `❌ 工具执行错误: ${errorMessage}`);
46
45
  return { type: 'text', text: `Error: ${errorMessage}` };
47
46
  }
48
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"searchContext.js","sourceRoot":"","sources":["../../src/tools/searchContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAkBtC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAExD,WAAW;QACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,WAAW,EAAE,EAAE,CAAC;QACtF,CAAC;QAED,UAAU;QACV,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,WAAW,EAAE,EAAE,CAAC;QAC1F,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,WAAW;QACX,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,4CAA4C,WAAW,EAAE,CAAC,CAAC;QACvE,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,WAAW,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,eAAe,CACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,MAAM,CAAC,SAAS,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACxD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"searchContext.js","sourceRoot":"","sources":["../../src/tools/searchContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAkB/E;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAuB;IAC7D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,MAAM,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE/C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,sCAAsC,EAAE,CAAC;QACxE,CAAC;QAED,iBAAiB;QACjB,MAAM,WAAW,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAExD,WAAW;QACX,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,uCAAuC,WAAW,EAAE,EAAE,CAAC;QACtF,CAAC;QAED,UAAU;QACV,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2CAA2C,WAAW,EAAE,EAAE,CAAC;QAC1F,CAAC;QAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;QAE3B,aAAa;QACb,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACrB,aAAa,EAAE,CAAC;YAChB,iBAAiB,CAAC,WAAW,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,YAAY,CACnC,WAAW,EACX,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,SAAS,EAChB,MAAM,CAAC,eAAe,EACtB,MAAM,CAAC,eAAe,CACvB,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAEvD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,UAAU,CAAC,OAAO,EAAE,aAAa,YAAY,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,YAAY,EAAE,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectDetector.d.ts","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAmC1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAYrD;AA+BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
1
+ {"version":3,"file":"projectDetector.d.ts","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CA+B1C;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAWrD;AA8BD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAG5D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEtD"}
@@ -4,7 +4,6 @@
4
4
  */
5
5
  import fs from 'fs';
6
6
  import path from 'path';
7
- import { logger } from '../logger.js';
8
7
  /**
9
8
  * 检测项目根目录
10
9
  * 优先级:.ace-tool/ > .git/
@@ -14,19 +13,16 @@ import { logger } from '../logger.js';
14
13
  */
15
14
  export function detectProjectRoot() {
16
15
  const cwd = process.cwd();
17
- logger.debug(`Detecting project root from: ${cwd}`);
18
16
  let currentDir = cwd;
19
17
  while (true) {
20
18
  // 优先检查 .ace-tool 目录
21
19
  const acePath = path.join(currentDir, '.ace-tool');
22
20
  if (fs.existsSync(acePath) && fs.statSync(acePath).isDirectory()) {
23
- logger.info(`Found project root (via .ace-tool): ${currentDir}`);
24
21
  return currentDir;
25
22
  }
26
23
  // 其次检查 .git 目录
27
24
  const gitPath = path.join(currentDir, '.git');
28
25
  if (fs.existsSync(gitPath)) {
29
- logger.info(`Found project root (via .git): ${currentDir}`);
30
26
  return currentDir;
31
27
  }
32
28
  // 向上一级目录
@@ -38,7 +34,6 @@ export function detectProjectRoot() {
38
34
  currentDir = parentDir;
39
35
  }
40
36
  // 如果找不到 .ace-tool 或 .git,使用当前工作目录
41
- logger.warning(`No .ace-tool or .git found, using current directory: ${cwd}`);
42
37
  return cwd;
43
38
  }
44
39
  /**
@@ -52,7 +47,6 @@ export function getAceDir(projectRoot) {
52
47
  const aceDir = path.join(projectRoot, '.ace-tool');
53
48
  if (!fs.existsSync(aceDir)) {
54
49
  fs.mkdirSync(aceDir, { recursive: true });
55
- logger.info(`Created .ace-tool directory: ${aceDir}`);
56
50
  // 尝试将 .ace-tool 添加到 .gitignore
57
51
  addToGitignore(projectRoot);
58
52
  }
@@ -77,10 +71,9 @@ function addToGitignore(projectRoot) {
77
71
  ? `${content}.ace-tool/\n`
78
72
  : `${content}\n.ace-tool/\n`;
79
73
  fs.writeFileSync(gitignorePath, newContent, 'utf-8');
80
- logger.info('Added .ace-tool/ to .gitignore');
81
74
  }
82
75
  catch (error) {
83
- logger.warning(`Failed to update .gitignore: ${error}`);
76
+ // 静默处理错误
84
77
  }
85
78
  }
86
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"projectDetector.js","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectDetector.js","sourceRoot":"","sources":["../../src/utils/projectDetector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ace-tool",
3
- "version": "0.1.0",
3
+ "version": "0.1.3",
4
4
  "description": "MCP server for codebase indexing and semantic search",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -30,7 +30,7 @@
30
30
  "license": "MIT",
31
31
  "repository": {
32
32
  "type": "git",
33
- "url": "https://github.com/xie/ace-tool"
33
+ "url": "https://github.com/eastxiaodong/ace-tool.git"
34
34
  },
35
35
  "engines": {
36
36
  "node": ">=18.0.0"