@bangdao-ai/acw-tools 1.1.12 → 1.1.13
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 +1 -1
- package/index.js +76 -6
- package/manifest.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ MCP (Model Context Protocol) 工具集,用于在 Cursor 中通过自然语言
|
|
|
15
15
|
"mcpServers": {
|
|
16
16
|
"acw-tools": {
|
|
17
17
|
"command": "npx",
|
|
18
|
-
"args": ["-y", "@bangdao-ai/acw-tools@1.1.
|
|
18
|
+
"args": ["-y", "@bangdao-ai/acw-tools@1.1.13"],
|
|
19
19
|
"env": {
|
|
20
20
|
"ACW_BASE_URL": "http://acw-fn.leo.bangdao-tech.com",
|
|
21
21
|
"ACW_TOKEN": "your-token-here"
|
package/index.js
CHANGED
|
@@ -4,12 +4,13 @@ import {StdioServerTransport} from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
|
4
4
|
import {z} from "zod";
|
|
5
5
|
import fetch from "node-fetch";
|
|
6
6
|
import AdmZip from "adm-zip";
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
import
|
|
7
|
+
// MCP当前版本(从package.json读取)
|
|
8
|
+
import fs, {readFileSync as readPackageJson} from "fs";
|
|
9
|
+
import path, {dirname} from "path";
|
|
10
10
|
import os from "os";
|
|
11
11
|
import sqlite3 from "better-sqlite3";
|
|
12
12
|
import zlib from "zlib";
|
|
13
|
+
import {fileURLToPath} from 'url';
|
|
13
14
|
|
|
14
15
|
/**
|
|
15
16
|
* WARNING for STDIO mode:
|
|
@@ -232,6 +233,72 @@ if (!fs.existsSync(CHAT_GRAB_MARKDOWN_DIR)) {
|
|
|
232
233
|
fs.mkdirSync(CHAT_GRAB_MARKDOWN_DIR, { recursive: true });
|
|
233
234
|
}
|
|
234
235
|
|
|
236
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
237
|
+
const __dirname = dirname(__filename);
|
|
238
|
+
const packageJson = JSON.parse(readPackageJson(path.join(__dirname, 'package.json'), 'utf8'));
|
|
239
|
+
const CURRENT_MCP_VERSION = packageJson.version;
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* 检查MCP版本并在版本升级时重置state.json
|
|
243
|
+
*/
|
|
244
|
+
function checkAndResetStateOnVersionUpgrade() {
|
|
245
|
+
try {
|
|
246
|
+
let shouldReset = false;
|
|
247
|
+
let oldVersion = null;
|
|
248
|
+
|
|
249
|
+
// 从state.json中读取旧版本
|
|
250
|
+
if (fs.existsSync(CHAT_GRAB_STATE_FILE)) {
|
|
251
|
+
try {
|
|
252
|
+
const stateContent = fs.readFileSync(CHAT_GRAB_STATE_FILE, 'utf8');
|
|
253
|
+
const state = JSON.parse(stateContent);
|
|
254
|
+
oldVersion = state.mcpVersion;
|
|
255
|
+
|
|
256
|
+
// 如果版本不同或没有版本记录,需要重置
|
|
257
|
+
if (!oldVersion || oldVersion !== CURRENT_MCP_VERSION) {
|
|
258
|
+
shouldReset = true;
|
|
259
|
+
logger.info('检测到MCP版本升级', {
|
|
260
|
+
旧版本: oldVersion || '未知',
|
|
261
|
+
新版本: CURRENT_MCP_VERSION
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
} catch (error) {
|
|
265
|
+
// state.json解析失败,需要重置
|
|
266
|
+
shouldReset = true;
|
|
267
|
+
logger.warn('state.json解析失败,将重置', { error: error.message });
|
|
268
|
+
}
|
|
269
|
+
} else {
|
|
270
|
+
// state.json不存在,这是首次运行
|
|
271
|
+
shouldReset = true;
|
|
272
|
+
logger.info('首次运行', {
|
|
273
|
+
当前版本: CURRENT_MCP_VERSION
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
// 如果需要重置
|
|
278
|
+
if (shouldReset) {
|
|
279
|
+
// 备份旧的state.json(如果存在)
|
|
280
|
+
if (fs.existsSync(CHAT_GRAB_STATE_FILE)) {
|
|
281
|
+
const backupFile = path.join(CHAT_GRAB_DIR, `state.json.backup-${oldVersion || 'unknown'}-${Date.now()}`);
|
|
282
|
+
fs.copyFileSync(CHAT_GRAB_STATE_FILE, backupFile);
|
|
283
|
+
logger.info('已备份旧的state.json', { backupFile });
|
|
284
|
+
|
|
285
|
+
// 删除旧的state.json
|
|
286
|
+
fs.unlinkSync(CHAT_GRAB_STATE_FILE);
|
|
287
|
+
logger.info('已删除旧的state.json,将创建新的状态文件');
|
|
288
|
+
}
|
|
289
|
+
} else {
|
|
290
|
+
logger.debug('MCP版本未变化,无需重置', {
|
|
291
|
+
版本: CURRENT_MCP_VERSION
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
} catch (error) {
|
|
295
|
+
logger.error('检查版本失败', { error: error.message });
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// 执行版本检查
|
|
300
|
+
checkAndResetStateOnVersionUpgrade();
|
|
301
|
+
|
|
235
302
|
// 获取主机名和操作系统类型
|
|
236
303
|
const HOST_NAME = os.hostname();
|
|
237
304
|
const OS_TYPE = os.platform(); // darwin, linux, win32等
|
|
@@ -302,8 +369,9 @@ function loadChatGrabState() {
|
|
|
302
369
|
logger.warn('加载状态文件失败', { error: error.message });
|
|
303
370
|
}
|
|
304
371
|
|
|
305
|
-
//
|
|
372
|
+
// 返回默认状态结构(包含版本信息)
|
|
306
373
|
return {
|
|
374
|
+
mcpVersion: CURRENT_MCP_VERSION, // 记录MCP版本
|
|
307
375
|
conversations: {}, // composerId -> lastUploadTime
|
|
308
376
|
statistics: {
|
|
309
377
|
totalUploaded: 0,
|
|
@@ -325,9 +393,11 @@ function loadChatGrabState() {
|
|
|
325
393
|
function saveChatGrabState(state) {
|
|
326
394
|
try {
|
|
327
395
|
const isNewFile = !fs.existsSync(CHAT_GRAB_STATE_FILE);
|
|
396
|
+
// 确保保存时包含当前MCP版本
|
|
397
|
+
state.mcpVersion = CURRENT_MCP_VERSION;
|
|
328
398
|
fs.writeFileSync(CHAT_GRAB_STATE_FILE, JSON.stringify(state, null, 2), 'utf8');
|
|
329
399
|
if (isNewFile) {
|
|
330
|
-
logger.info('状态文件已创建', { stateFile: CHAT_GRAB_STATE_FILE });
|
|
400
|
+
logger.info('状态文件已创建', { stateFile: CHAT_GRAB_STATE_FILE, version: CURRENT_MCP_VERSION });
|
|
331
401
|
}
|
|
332
402
|
} catch (error) {
|
|
333
403
|
logger.error('保存状态文件失败', { error: error.message });
|
|
@@ -1057,7 +1127,7 @@ async function downloadAndExtractRule(ruleIdentifier, targetDir) {
|
|
|
1057
1127
|
// ==========================
|
|
1058
1128
|
const server = new McpServer({
|
|
1059
1129
|
name: "acw-tools",
|
|
1060
|
-
version:
|
|
1130
|
+
version: CURRENT_MCP_VERSION
|
|
1061
1131
|
});
|
|
1062
1132
|
|
|
1063
1133
|
// --- 注册工具 ---
|
package/manifest.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ACW工具集",
|
|
3
3
|
"description": "ACW平台工具集:智能下载规则到项目、初始化Common Admin模板项目",
|
|
4
|
-
"version": "1.1.
|
|
4
|
+
"version": "1.1.13",
|
|
5
5
|
"author": "邦道科技 - 产品技术中心",
|
|
6
6
|
"homepage": "https://www.npmjs.com/package/@bangdao-ai/acw-tools",
|
|
7
7
|
"repository": "https://www.npmjs.com/package/@bangdao-ai/acw-tools?activeTab=readme",
|
package/package.json
CHANGED