phinix 0.2.7 → 0.2.8
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/dist/analytics/index.d.ts +1 -1
- package/dist/analytics/index.d.ts.map +1 -1
- package/dist/analytics/index.js +1 -1
- package/dist/analytics/index.js.map +1 -1
- package/dist/analytics/tracker.d.ts +4 -0
- package/dist/analytics/tracker.d.ts.map +1 -1
- package/dist/analytics/tracker.js +1 -1
- package/dist/analytics/tracker.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +15 -11
- package/dist/config.js.map +1 -1
- package/dist/tools/triggerFeedback.d.ts +4 -0
- package/dist/tools/triggerFeedback.d.ts.map +1 -1
- package/dist/tools/triggerFeedback.js +49 -6
- package/dist/tools/triggerFeedback.js.map +1 -1
- package/package.json +1 -1
- package/src/config.js +17 -12
- package/src/tools/triggerFeedback.js +55 -7
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @description 埋点统计模块导出入口
|
|
3
3
|
* @author 无浊
|
|
4
4
|
*/
|
|
5
|
-
export { wrapServerWithAnalytics } from './tracker.js';
|
|
5
|
+
export { wrapServerWithAnalytics, SESSION_ID } from './tracker.js';
|
|
6
6
|
export { AnalyticsReporter } from './reporter.js';
|
|
7
7
|
export type { AnalyticsEvent, AnalyticsConfig, ReportResponse } from './types.js';
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/analytics/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC"}
|
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
6
6
|
import type { AnalyticsConfig } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* 会话ID(进程级别唯一)
|
|
9
|
+
*/
|
|
10
|
+
export declare const SESSION_ID: `${string}-${string}-${string}-${string}-${string}`;
|
|
7
11
|
/**
|
|
8
12
|
* 包装 McpServer 实例,添加埋点追踪
|
|
9
13
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.d.ts","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAkB,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlE;;GAEG;AACH,eAAO,MAAM,UAAU,qDAAe,CAAC;AAwBvC;;GAEG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,eAAe,GACtB,IAAI,CAkJN"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD;;GAEG;AACH,MAAM,UAAU,GAAG,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AAqCA,kCAA6C;;;;;;;AAhC7C,+BAA2C"}
|
package/dist/config.js
CHANGED
|
@@ -5,23 +5,27 @@ const __filename = fileURLToPath(import.meta.url);
|
|
|
5
5
|
const __dirname = path.dirname(__filename);
|
|
6
6
|
// 从环境变量或命令行参数获取项目根目录
|
|
7
7
|
function getProjectRoot() {
|
|
8
|
-
//
|
|
8
|
+
// 优先级:环境变量 > 当前工作目录 > 命令行参数
|
|
9
|
+
// 这样的优先级更适合 MCP 客户端通过 env 或 cwd 配置传入工作区路径
|
|
10
|
+
// 1. 优先使用环境变量(从 MCP 客户端配置的 env.PROJECT_ROOT 传入)
|
|
11
|
+
if (process.env.PROJECT_ROOT) {
|
|
12
|
+
return process.env.PROJECT_ROOT;
|
|
13
|
+
}
|
|
14
|
+
// 2. 使用当前工作目录(从 MCP 客户端配置的 cwd 传入)
|
|
15
|
+
const cwd = process.cwd();
|
|
9
16
|
const args = process.argv.slice(2);
|
|
10
|
-
//
|
|
17
|
+
// 检查是否通过命令行参数指定了路径
|
|
11
18
|
const projectRootArg = args.find((arg) => arg.startsWith("--project-root="));
|
|
12
19
|
if (projectRootArg) {
|
|
13
20
|
return projectRootArg.split("=")[1];
|
|
14
21
|
}
|
|
15
|
-
//
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// 检查环境变量
|
|
20
|
-
if (process.env.PROJECT_ROOT) {
|
|
21
|
-
return process.env.PROJECT_ROOT;
|
|
22
|
+
// 检查位置参数(第一个非选项参数)
|
|
23
|
+
const positionalArg = args.find((arg) => !arg.startsWith("--"));
|
|
24
|
+
if (positionalArg) {
|
|
25
|
+
return positionalArg;
|
|
22
26
|
}
|
|
23
|
-
// 默认使用当前工作目录
|
|
24
|
-
return
|
|
27
|
+
// 3. 默认使用当前工作目录
|
|
28
|
+
return cwd;
|
|
25
29
|
}
|
|
26
30
|
export const PROJECT_ROOT = getProjectRoot();
|
|
27
31
|
export { __dirname };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,cAAc;AACd,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,qBAAqB;AACrB,SAAS,cAAc;IACrB,4BAA4B;IAC5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,cAAc;AACd,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAE3C,qBAAqB;AACrB,SAAS,cAAc;IACrB,4BAA4B;IAC5B,0CAA0C;IAE1C,gDAAgD;IAChD,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,mCAAmC;IACnC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAEnC,mBAAmB;IACnB,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7E,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;IAChE,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,gBAAgB;IAChB,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,cAAc,EAAE,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,CAAC;AAErB,SAAS;AACT,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,kDAAkD;IAClD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,OAAO;IAElD,sBAAsB;IACtB,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAC1C,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,oBAAoB;QACzD,CAAC,CAAC;YACE,kDAAkD,EAAG,OAAO;YAC5D,mDAAmD,CAAE,OAAO;SAC7D;IAEL,uBAAuB;IACvB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,IAAI,EAAE,EAAE,CAAC,EAAE,GAAG,CAAC;IAEhF,eAAe;IACf,UAAU,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,GAAG,EAAE,EAAE,CAAC;CACnE,CAAC"}
|
|
@@ -7,7 +7,9 @@ export function triggerFeedback({ componentName }: {
|
|
|
7
7
|
}[];
|
|
8
8
|
data: {
|
|
9
9
|
traceId: `${string}-${string}-${string}-${string}-${string}`;
|
|
10
|
+
sessionId: `${string}-${string}-${string}-${string}-${string}`;
|
|
10
11
|
status: string;
|
|
12
|
+
port: number;
|
|
11
13
|
error?: undefined;
|
|
12
14
|
};
|
|
13
15
|
} | {
|
|
@@ -17,8 +19,10 @@ export function triggerFeedback({ componentName }: {
|
|
|
17
19
|
}[];
|
|
18
20
|
data: {
|
|
19
21
|
traceId: `${string}-${string}-${string}-${string}-${string}`;
|
|
22
|
+
sessionId: `${string}-${string}-${string}-${string}-${string}`;
|
|
20
23
|
status: string;
|
|
21
24
|
error: any;
|
|
25
|
+
port: number;
|
|
22
26
|
};
|
|
23
27
|
}>;
|
|
24
28
|
export namespace triggerFeedbackSchema {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerFeedback.d.ts","sourceRoot":"","sources":["../../src/tools/triggerFeedback.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"triggerFeedback.d.ts","sourceRoot":"","sources":["../../src/tools/triggerFeedback.js"],"names":[],"mappings":"AA+CA;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEC;;;;kBApHiB,KAAK"}
|
|
@@ -1,15 +1,52 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import crypto from "crypto";
|
|
3
3
|
import http from "http";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import os from "os";
|
|
7
|
+
import { PROJECT_ROOT } from "../config.js";
|
|
8
|
+
import { SESSION_ID } from "../analytics/index.js";
|
|
4
9
|
export const triggerFeedbackSchema = {
|
|
5
10
|
componentName: z.string().describe("组件名称"),
|
|
6
11
|
};
|
|
12
|
+
/**
|
|
13
|
+
* 获取全局配置文件路径
|
|
14
|
+
* @returns {string} 全局配置文件路径
|
|
15
|
+
*/
|
|
16
|
+
function getGlobalConfigPath() {
|
|
17
|
+
const homeDir = os.homedir();
|
|
18
|
+
return path.join(homeDir, ".mcp-feedback", "ports.json");
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* 从全局配置文件读取插件端口
|
|
22
|
+
* @param {string} workspacePath - 工作区路径
|
|
23
|
+
* @returns {number|null} 端口号,失败返回 null
|
|
24
|
+
*/
|
|
25
|
+
function getPluginPort(workspacePath) {
|
|
26
|
+
const configPath = getGlobalConfigPath();
|
|
27
|
+
if (!fs.existsSync(configPath)) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
try {
|
|
31
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
32
|
+
const allConfigs = JSON.parse(content);
|
|
33
|
+
// 查找匹配的工作区配置
|
|
34
|
+
const config = allConfigs[workspacePath];
|
|
35
|
+
return config ? config.port : null;
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.error("读取端口配置失败:", error.message);
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
7
42
|
export async function triggerFeedback({ componentName }) {
|
|
8
43
|
// 1. 生成 TraceID
|
|
9
44
|
const traceId = crypto.randomUUID();
|
|
10
|
-
// 2.
|
|
11
|
-
const
|
|
12
|
-
// 3.
|
|
45
|
+
// 2. 获取插件端口(从配置文件读取,失败则使用默认端口 9999)
|
|
46
|
+
const port = getPluginPort(PROJECT_ROOT) || 9999;
|
|
47
|
+
// 3. 构建请求 URL
|
|
48
|
+
const url = `http://127.0.0.1:${port}/trigger-feedback?component=${encodeURIComponent(componentName)}&traceId=${traceId}&sessionId=${SESSION_ID}`;
|
|
49
|
+
// 4. 发送 HTTP 请求 (fire and forget pattern, but we wait for connection to ensure it was sent)
|
|
13
50
|
try {
|
|
14
51
|
await new Promise((resolve, reject) => {
|
|
15
52
|
const req = http.get(url, (res) => {
|
|
@@ -32,12 +69,14 @@ export async function triggerFeedback({ componentName }) {
|
|
|
32
69
|
content: [
|
|
33
70
|
{
|
|
34
71
|
type: "text",
|
|
35
|
-
text: `✅ 已触发反馈机制 (TraceID: ${traceId})`,
|
|
72
|
+
text: `✅ 已触发反馈机制 (TraceID: ${traceId}, SessionID: ${SESSION_ID}, 端口: ${port})`,
|
|
36
73
|
},
|
|
37
74
|
],
|
|
38
75
|
data: {
|
|
39
76
|
traceId,
|
|
77
|
+
sessionId: SESSION_ID,
|
|
40
78
|
status: "triggered",
|
|
79
|
+
port,
|
|
41
80
|
},
|
|
42
81
|
};
|
|
43
82
|
}
|
|
@@ -46,15 +85,19 @@ export async function triggerFeedback({ componentName }) {
|
|
|
46
85
|
content: [
|
|
47
86
|
{
|
|
48
87
|
type: "text",
|
|
49
|
-
text: `⚠️ 触发反馈失败 (TraceID: ${traceId})
|
|
88
|
+
text: `⚠️ 触发反馈失败 (TraceID: ${traceId}, SessionID: ${SESSION_ID})
|
|
89
|
+
PROJECT_ROOT: ${PROJECT_ROOT}
|
|
50
90
|
原因: ${error.message}
|
|
51
|
-
|
|
91
|
+
目标端口: ${port}
|
|
92
|
+
(这通常意味着本地 IDE 插件未启动或端口不可达)`,
|
|
52
93
|
},
|
|
53
94
|
],
|
|
54
95
|
data: {
|
|
55
96
|
traceId,
|
|
97
|
+
sessionId: SESSION_ID,
|
|
56
98
|
status: "failed",
|
|
57
99
|
error: error.message,
|
|
100
|
+
port,
|
|
58
101
|
},
|
|
59
102
|
};
|
|
60
103
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"triggerFeedback.js","sourceRoot":"","sources":["../../src/tools/triggerFeedback.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"triggerFeedback.js","sourceRoot":"","sources":["../../src/tools/triggerFeedback.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;CAC3C,CAAC;AAEF;;;GAGG;AACH,SAAS,mBAAmB;IAC1B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;IAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CAAC,aAAa;IAClC,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;IAEzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACrD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvC,aAAa;QACb,MAAM,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;QACzC,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAE,aAAa,EAAE;IACrD,gBAAgB;IAChB,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAEpC,oCAAoC;IACpC,MAAM,IAAI,GAAG,aAAa,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC;IAEjD,cAAc;IACd,MAAM,GAAG,GAAG,oBAAoB,IAAI,+BAA+B,kBAAkB,CACnF,aAAa,CACd,YAAY,OAAO,cAAc,UAAU,EAAE,CAAC;IAE/C,4FAA4F;IAC5F,IAAI,CAAC;QACH,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,EAAE;gBAChC,oCAAoC;gBACpC,GAAG,CAAC,MAAM,EAAE,CAAC;gBACb,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,8CAA8C;gBAC9C,mBAAmB;gBACnB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;YAEH,WAAW;YACX,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE;gBACxB,GAAG,CAAC,OAAO,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;YACvC,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,OAAO,gBAAgB,UAAU,SAAS,IAAI,GAAG;iBAC/E;aACF;YACD,IAAI,EAAE;gBACJ,OAAO;gBACP,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,WAAW;gBACnB,IAAI;aACL;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,uBAAuB,OAAO,gBAAgB,UAAU;gBACxD,YAAY;MACtB,KAAK,CAAC,OAAO;QACX,IAAI;2BACe;iBAClB;aACF;YACD,IAAI,EAAE;gBACJ,OAAO;gBACP,SAAS,EAAE,UAAU;gBACrB,MAAM,EAAE,QAAQ;gBAChB,KAAK,EAAE,KAAK,CAAC,OAAO;gBACpB,IAAI;aACL;SACF,CAAC;IACJ,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
package/src/config.js
CHANGED
|
@@ -7,27 +7,32 @@ const __dirname = path.dirname(__filename);
|
|
|
7
7
|
|
|
8
8
|
// 从环境变量或命令行参数获取项目根目录
|
|
9
9
|
function getProjectRoot() {
|
|
10
|
-
//
|
|
10
|
+
// 优先级:环境变量 > 当前工作目录 > 命令行参数
|
|
11
|
+
// 这样的优先级更适合 MCP 客户端通过 env 或 cwd 配置传入工作区路径
|
|
12
|
+
|
|
13
|
+
// 1. 优先使用环境变量(从 MCP 客户端配置的 env.PROJECT_ROOT 传入)
|
|
14
|
+
if (process.env.PROJECT_ROOT) {
|
|
15
|
+
return process.env.PROJECT_ROOT;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// 2. 使用当前工作目录(从 MCP 客户端配置的 cwd 传入)
|
|
19
|
+
const cwd = process.cwd();
|
|
11
20
|
const args = process.argv.slice(2);
|
|
12
21
|
|
|
13
|
-
//
|
|
22
|
+
// 检查是否通过命令行参数指定了路径
|
|
14
23
|
const projectRootArg = args.find((arg) => arg.startsWith("--project-root="));
|
|
15
24
|
if (projectRootArg) {
|
|
16
25
|
return projectRootArg.split("=")[1];
|
|
17
26
|
}
|
|
18
27
|
|
|
19
|
-
//
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
// 检查环境变量
|
|
25
|
-
if (process.env.PROJECT_ROOT) {
|
|
26
|
-
return process.env.PROJECT_ROOT;
|
|
28
|
+
// 检查位置参数(第一个非选项参数)
|
|
29
|
+
const positionalArg = args.find((arg) => !arg.startsWith("--"));
|
|
30
|
+
if (positionalArg) {
|
|
31
|
+
return positionalArg;
|
|
27
32
|
}
|
|
28
33
|
|
|
29
|
-
// 默认使用当前工作目录
|
|
30
|
-
return
|
|
34
|
+
// 3. 默认使用当前工作目录
|
|
35
|
+
return cwd;
|
|
31
36
|
}
|
|
32
37
|
|
|
33
38
|
export const PROJECT_ROOT = getProjectRoot();
|
|
@@ -1,21 +1,63 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
import crypto from "crypto";
|
|
3
3
|
import http from "http";
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import path from "path";
|
|
6
|
+
import os from "os";
|
|
7
|
+
import { PROJECT_ROOT } from "../config.js";
|
|
8
|
+
import { SESSION_ID } from "../analytics/index.js";
|
|
4
9
|
|
|
5
10
|
export const triggerFeedbackSchema = {
|
|
6
11
|
componentName: z.string().describe("组件名称"),
|
|
7
12
|
};
|
|
8
13
|
|
|
14
|
+
/**
|
|
15
|
+
* 获取全局配置文件路径
|
|
16
|
+
* @returns {string} 全局配置文件路径
|
|
17
|
+
*/
|
|
18
|
+
function getGlobalConfigPath() {
|
|
19
|
+
const homeDir = os.homedir();
|
|
20
|
+
return path.join(homeDir, ".mcp-feedback", "ports.json");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* 从全局配置文件读取插件端口
|
|
25
|
+
* @param {string} workspacePath - 工作区路径
|
|
26
|
+
* @returns {number|null} 端口号,失败返回 null
|
|
27
|
+
*/
|
|
28
|
+
function getPluginPort(workspacePath) {
|
|
29
|
+
const configPath = getGlobalConfigPath();
|
|
30
|
+
|
|
31
|
+
if (!fs.existsSync(configPath)) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const content = fs.readFileSync(configPath, "utf-8");
|
|
37
|
+
const allConfigs = JSON.parse(content);
|
|
38
|
+
|
|
39
|
+
// 查找匹配的工作区配置
|
|
40
|
+
const config = allConfigs[workspacePath];
|
|
41
|
+
return config ? config.port : null;
|
|
42
|
+
} catch (error) {
|
|
43
|
+
console.error("读取端口配置失败:", error.message);
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
9
48
|
export async function triggerFeedback({ componentName }) {
|
|
10
49
|
// 1. 生成 TraceID
|
|
11
50
|
const traceId = crypto.randomUUID();
|
|
12
51
|
|
|
13
|
-
// 2.
|
|
14
|
-
const
|
|
52
|
+
// 2. 获取插件端口(从配置文件读取,失败则使用默认端口 9999)
|
|
53
|
+
const port = getPluginPort(PROJECT_ROOT) || 9999;
|
|
54
|
+
|
|
55
|
+
// 3. 构建请求 URL
|
|
56
|
+
const url = `http://127.0.0.1:${port}/trigger-feedback?component=${encodeURIComponent(
|
|
15
57
|
componentName
|
|
16
|
-
)}&traceId=${traceId}`;
|
|
58
|
+
)}&traceId=${traceId}&sessionId=${SESSION_ID}`;
|
|
17
59
|
|
|
18
|
-
//
|
|
60
|
+
// 4. 发送 HTTP 请求 (fire and forget pattern, but we wait for connection to ensure it was sent)
|
|
19
61
|
try {
|
|
20
62
|
await new Promise((resolve, reject) => {
|
|
21
63
|
const req = http.get(url, (res) => {
|
|
@@ -41,12 +83,14 @@ export async function triggerFeedback({ componentName }) {
|
|
|
41
83
|
content: [
|
|
42
84
|
{
|
|
43
85
|
type: "text",
|
|
44
|
-
text: `✅ 已触发反馈机制 (TraceID: ${traceId})`,
|
|
86
|
+
text: `✅ 已触发反馈机制 (TraceID: ${traceId}, SessionID: ${SESSION_ID}, 端口: ${port})`,
|
|
45
87
|
},
|
|
46
88
|
],
|
|
47
89
|
data: {
|
|
48
90
|
traceId,
|
|
91
|
+
sessionId: SESSION_ID,
|
|
49
92
|
status: "triggered",
|
|
93
|
+
port,
|
|
50
94
|
},
|
|
51
95
|
};
|
|
52
96
|
} catch (error) {
|
|
@@ -54,15 +98,19 @@ export async function triggerFeedback({ componentName }) {
|
|
|
54
98
|
content: [
|
|
55
99
|
{
|
|
56
100
|
type: "text",
|
|
57
|
-
text: `⚠️ 触发反馈失败 (TraceID: ${traceId})
|
|
101
|
+
text: `⚠️ 触发反馈失败 (TraceID: ${traceId}, SessionID: ${SESSION_ID})
|
|
102
|
+
PROJECT_ROOT: ${PROJECT_ROOT}
|
|
58
103
|
原因: ${error.message}
|
|
59
|
-
|
|
104
|
+
目标端口: ${port}
|
|
105
|
+
(这通常意味着本地 IDE 插件未启动或端口不可达)`,
|
|
60
106
|
},
|
|
61
107
|
],
|
|
62
108
|
data: {
|
|
63
109
|
traceId,
|
|
110
|
+
sessionId: SESSION_ID,
|
|
64
111
|
status: "failed",
|
|
65
112
|
error: error.message,
|
|
113
|
+
port,
|
|
66
114
|
},
|
|
67
115
|
};
|
|
68
116
|
}
|