@cicctencent/agent-core 0.1.70 → 0.1.72
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/cjs/a2a/client.d.ts +39 -11
- package/dist/cjs/a2a/client.d.ts.map +1 -1
- package/dist/cjs/a2a/client.js +69 -22
- package/dist/cjs/a2a/client.js.map +1 -1
- package/dist/cjs/a2a/rest-client.d.ts +35 -9
- package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
- package/dist/cjs/a2a/rest-client.js +65 -18
- package/dist/cjs/a2a/rest-client.js.map +1 -1
- package/dist/cjs/a2a/rest-runner.d.ts +6 -0
- package/dist/cjs/a2a/rest-runner.d.ts.map +1 -1
- package/dist/cjs/a2a/rest-runner.js +19 -7
- package/dist/cjs/a2a/rest-runner.js.map +1 -1
- package/dist/cjs/a2a/runner.d.ts +6 -0
- package/dist/cjs/a2a/runner.d.ts.map +1 -1
- package/dist/cjs/a2a/runner.js +24 -7
- package/dist/cjs/a2a/runner.js.map +1 -1
- package/dist/cjs/index.d.ts +5 -2
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +15 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/llm/debug.d.ts.map +1 -1
- package/dist/cjs/llm/debug.js +4 -1
- package/dist/cjs/llm/debug.js.map +1 -1
- package/dist/cjs/mcp/base-client.d.ts +19 -4
- package/dist/cjs/mcp/base-client.d.ts.map +1 -1
- package/dist/cjs/mcp/base-client.js +28 -8
- package/dist/cjs/mcp/base-client.js.map +1 -1
- package/dist/cjs/mcp/http-client.d.ts +5 -5
- package/dist/cjs/mcp/http-client.d.ts.map +1 -1
- package/dist/cjs/mcp/http-client.js +26 -21
- package/dist/cjs/mcp/http-client.js.map +1 -1
- package/dist/cjs/mcp/proxy-agent.d.ts +2 -50
- package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -1
- package/dist/cjs/mcp/proxy-agent.js +12 -174
- package/dist/cjs/mcp/proxy-agent.js.map +1 -1
- package/dist/cjs/mcp/stdio-client.d.ts +1 -1
- package/dist/cjs/mcp/stdio-client.d.ts.map +1 -1
- package/dist/cjs/mcp/stdio-client.js +1 -1
- package/dist/cjs/mcp/stdio-client.js.map +1 -1
- package/dist/cjs/mcp/types.d.ts +8 -2
- package/dist/cjs/mcp/types.d.ts.map +1 -1
- package/dist/cjs/tool/delegate.d.ts +12 -1
- package/dist/cjs/tool/delegate.d.ts.map +1 -1
- package/dist/cjs/tool/delegate.js +21 -5
- package/dist/cjs/tool/delegate.js.map +1 -1
- package/dist/cjs/utils/header-vars.d.ts +18 -0
- package/dist/cjs/utils/header-vars.d.ts.map +1 -0
- package/dist/cjs/utils/header-vars.js +71 -0
- package/dist/cjs/utils/header-vars.js.map +1 -0
- package/dist/cjs/utils/proxy-agent.d.ts +53 -0
- package/dist/cjs/utils/proxy-agent.d.ts.map +1 -0
- package/dist/cjs/utils/proxy-agent.js +154 -0
- package/dist/cjs/utils/proxy-agent.js.map +1 -0
- package/dist/cjs/utils/proxy.d.ts +53 -0
- package/dist/cjs/utils/proxy.d.ts.map +1 -0
- package/dist/cjs/utils/proxy.js +148 -0
- package/dist/cjs/utils/proxy.js.map +1 -0
- package/dist/cjs/utils/system-proxy.d.ts +15 -0
- package/dist/cjs/utils/system-proxy.d.ts.map +1 -0
- package/dist/cjs/utils/system-proxy.js +133 -0
- package/dist/cjs/utils/system-proxy.js.map +1 -0
- package/dist/esm/a2a/client.d.ts +39 -11
- package/dist/esm/a2a/client.d.ts.map +1 -1
- package/dist/esm/a2a/client.js +69 -22
- package/dist/esm/a2a/client.js.map +1 -1
- package/dist/esm/a2a/rest-client.d.ts +35 -9
- package/dist/esm/a2a/rest-client.d.ts.map +1 -1
- package/dist/esm/a2a/rest-client.js +65 -18
- package/dist/esm/a2a/rest-client.js.map +1 -1
- package/dist/esm/a2a/rest-runner.d.ts +6 -0
- package/dist/esm/a2a/rest-runner.d.ts.map +1 -1
- package/dist/esm/a2a/rest-runner.js +19 -7
- package/dist/esm/a2a/rest-runner.js.map +1 -1
- package/dist/esm/a2a/runner.d.ts +6 -0
- package/dist/esm/a2a/runner.d.ts.map +1 -1
- package/dist/esm/a2a/runner.js +24 -7
- package/dist/esm/a2a/runner.js.map +1 -1
- package/dist/esm/index.d.ts +5 -2
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +3 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/llm/debug.d.ts.map +1 -1
- package/dist/esm/llm/debug.js +4 -1
- package/dist/esm/llm/debug.js.map +1 -1
- package/dist/esm/mcp/base-client.d.ts +19 -4
- package/dist/esm/mcp/base-client.d.ts.map +1 -1
- package/dist/esm/mcp/base-client.js +28 -8
- package/dist/esm/mcp/base-client.js.map +1 -1
- package/dist/esm/mcp/http-client.d.ts +5 -5
- package/dist/esm/mcp/http-client.d.ts.map +1 -1
- package/dist/esm/mcp/http-client.js +25 -20
- package/dist/esm/mcp/http-client.js.map +1 -1
- package/dist/esm/mcp/proxy-agent.d.ts +2 -50
- package/dist/esm/mcp/proxy-agent.d.ts.map +1 -1
- package/dist/esm/mcp/proxy-agent.js +7 -168
- package/dist/esm/mcp/proxy-agent.js.map +1 -1
- package/dist/esm/mcp/stdio-client.d.ts +1 -1
- package/dist/esm/mcp/stdio-client.d.ts.map +1 -1
- package/dist/esm/mcp/stdio-client.js +1 -1
- package/dist/esm/mcp/stdio-client.js.map +1 -1
- package/dist/esm/mcp/types.d.ts +8 -2
- package/dist/esm/mcp/types.d.ts.map +1 -1
- package/dist/esm/tool/delegate.d.ts +12 -1
- package/dist/esm/tool/delegate.d.ts.map +1 -1
- package/dist/esm/tool/delegate.js +21 -5
- package/dist/esm/tool/delegate.js.map +1 -1
- package/dist/esm/utils/header-vars.d.ts +18 -0
- package/dist/esm/utils/header-vars.d.ts.map +1 -0
- package/dist/esm/utils/header-vars.js +65 -0
- package/dist/esm/utils/header-vars.js.map +1 -0
- package/dist/esm/utils/proxy-agent.d.ts +53 -0
- package/dist/esm/utils/proxy-agent.d.ts.map +1 -0
- package/dist/esm/utils/proxy-agent.js +115 -0
- package/dist/esm/utils/proxy-agent.js.map +1 -0
- package/dist/esm/utils/proxy.d.ts +53 -0
- package/dist/esm/utils/proxy.d.ts.map +1 -0
- package/dist/esm/utils/proxy.js +109 -0
- package/dist/esm/utils/proxy.js.map +1 -0
- package/dist/esm/utils/system-proxy.d.ts +15 -0
- package/dist/esm/utils/system-proxy.d.ts.map +1 -0
- package/dist/esm/utils/system-proxy.js +128 -0
- package/dist/esm/utils/system-proxy.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/base-client.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"base-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/base-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
// ============================================================
|
|
2
2
|
// MCPClientBase — JSON-RPC 2.0 基础层
|
|
3
3
|
// ============================================================
|
|
4
|
+
import { interpolateValue } from "../utils/header-vars.js";
|
|
4
5
|
/**
|
|
5
6
|
* MCPClient 抽象基类
|
|
6
7
|
* 子类只需实现 send() 和 doConnect() / doDisconnect()
|
|
7
8
|
*/
|
|
8
9
|
export class MCPClientBase {
|
|
9
10
|
config;
|
|
11
|
+
/** 默认运行时变量(来自 config.vars) */
|
|
12
|
+
contextVars;
|
|
13
|
+
/** 实际使用的代理地址(由子类在 connect 时解析并写入;stdio 不设置则为 undefined) */
|
|
14
|
+
proxyUrl;
|
|
10
15
|
connected = false;
|
|
11
16
|
requestId = 0;
|
|
12
17
|
/** 调试 trace 回调 */
|
|
@@ -16,6 +21,7 @@ export class MCPClientBase {
|
|
|
16
21
|
// ---- 公共接口 ----
|
|
17
22
|
async connect(config) {
|
|
18
23
|
this.config = config;
|
|
24
|
+
this.contextVars = config.vars;
|
|
19
25
|
this.onDebugTrace = config.onDebugTrace;
|
|
20
26
|
await this.doConnect(config);
|
|
21
27
|
this.connected = true;
|
|
@@ -41,8 +47,8 @@ export class MCPClientBase {
|
|
|
41
47
|
},
|
|
42
48
|
}));
|
|
43
49
|
}
|
|
44
|
-
async callTool(name, args) {
|
|
45
|
-
const result = await this.call('tools/call', { name, arguments: args });
|
|
50
|
+
async callTool(name, args, vars) {
|
|
51
|
+
const result = await this.call('tools/call', { name, arguments: args }, vars);
|
|
46
52
|
if (result?.isError) {
|
|
47
53
|
const errMsg = result.content?.map(c => c.text || '').join('\n') || 'MCP tool returned error';
|
|
48
54
|
throw new Error(errMsg);
|
|
@@ -63,10 +69,24 @@ export class MCPClientBase {
|
|
|
63
69
|
isConnected() {
|
|
64
70
|
return this.connected;
|
|
65
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* 更新运行时变量(如 userId / userMail)。
|
|
74
|
+
* 后续请求(含 callTool 时未单独传入 vars 的情况)将使用更新后的值,
|
|
75
|
+
* 用于注入到 headers / auth 的 ${vars.x} 占位符。
|
|
76
|
+
*/
|
|
77
|
+
setContextVars(vars) {
|
|
78
|
+
this.contextVars = { ...(this.contextVars || {}), ...vars };
|
|
79
|
+
}
|
|
66
80
|
// ---- JSON-RPC 核心 ----
|
|
67
81
|
/** 发送 JSON-RPC 请求并等待响应 */
|
|
68
|
-
call(method, params) {
|
|
82
|
+
call(method, params, vars) {
|
|
69
83
|
const id = ++this.requestId;
|
|
84
|
+
// 合并运行时变量:默认 config.vars(contextVars),本次调用传入的 vars 可覆盖。
|
|
85
|
+
// 关键:合并为局部变量 effectiveVars 并随请求向下传递,绝不写入实例共享字段,
|
|
86
|
+
// 因此同一客户端的并发调用在 vars 上不存在覆盖竞争(消除 vars race)。
|
|
87
|
+
const effectiveVars = { ...this.contextVars, ...(vars || {}) };
|
|
88
|
+
// 对请求参数进行变量插值(${vars.x}/${env.x}/${x}),支持静态参数注入运行时变量
|
|
89
|
+
const resolvedParams = params ? interpolateValue(params, effectiveVars) : params;
|
|
70
90
|
const timeout = this.config.timeout || 30000;
|
|
71
91
|
const startTime = Date.now();
|
|
72
92
|
return new Promise((resolve, reject) => {
|
|
@@ -76,14 +96,14 @@ export class MCPClientBase {
|
|
|
76
96
|
step: method,
|
|
77
97
|
title: `MCP ${method} 超时`,
|
|
78
98
|
duration: `${Date.now() - startTime}ms`,
|
|
79
|
-
request: this.buildDebugRequest(method,
|
|
99
|
+
request: this.buildDebugRequest(method, resolvedParams),
|
|
80
100
|
error: `MCP call '${method}' timed out after ${timeout}ms`,
|
|
81
101
|
});
|
|
82
102
|
reject(new Error(`MCP call '${method}' timed out after ${timeout}ms`));
|
|
83
103
|
}, timeout);
|
|
84
104
|
this.pending.set(id, { resolve, reject, timer, method, startTime });
|
|
85
105
|
try {
|
|
86
|
-
this.send({ jsonrpc: '2.0', id, method, params });
|
|
106
|
+
this.send({ jsonrpc: '2.0', id, method, params: resolvedParams }, effectiveVars);
|
|
87
107
|
}
|
|
88
108
|
catch (e) {
|
|
89
109
|
clearTimeout(timer);
|
|
@@ -92,7 +112,7 @@ export class MCPClientBase {
|
|
|
92
112
|
step: method,
|
|
93
113
|
title: `MCP ${method} 发送失败`,
|
|
94
114
|
duration: `${Date.now() - startTime}ms`,
|
|
95
|
-
request: this.buildDebugRequest(method,
|
|
115
|
+
request: this.buildDebugRequest(method, resolvedParams),
|
|
96
116
|
error: e?.message || String(e),
|
|
97
117
|
exception: { name: e?.name || '', message: e?.message || '', code: e?.code || '' },
|
|
98
118
|
});
|
|
@@ -103,7 +123,7 @@ export class MCPClientBase {
|
|
|
103
123
|
/** 发送 JSON-RPC 通知(无 id,无响应) */
|
|
104
124
|
notify(method, params) {
|
|
105
125
|
try {
|
|
106
|
-
this.send({ jsonrpc: '2.0', id: 0, method, params });
|
|
126
|
+
this.send({ jsonrpc: '2.0', id: 0, method, params }, this.contextVars);
|
|
107
127
|
}
|
|
108
128
|
catch {
|
|
109
129
|
// 通知失败静默忽略
|
|
@@ -151,7 +171,7 @@ export class MCPClientBase {
|
|
|
151
171
|
if (!this.onDebugTrace)
|
|
152
172
|
return;
|
|
153
173
|
try {
|
|
154
|
-
this.onDebugTrace(trace);
|
|
174
|
+
this.onDebugTrace({ ...trace, proxy: this.proxyUrl });
|
|
155
175
|
}
|
|
156
176
|
catch { /* ignore */ }
|
|
157
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../../src/mcp/base-client.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,mCAAmC;AACnC,+DAA+D;
|
|
1
|
+
{"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../../src/mcp/base-client.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,mCAAmC;AACnC,+DAA+D;AAK/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkB3D;;;GAGG;AACH,MAAM,OAAgB,aAAa;IACvB,MAAM,CAAmB;IACnC,8BAA8B;IACpB,WAAW,CAA2B;IAChD,2DAA2D;IACjD,QAAQ,CAAU;IAClB,SAAS,GAAG,KAAK,CAAC;IACpB,SAAS,GAAG,CAAC,CAAC;IACtB,kBAAkB;IACR,YAAY,CAA0B;IAChD,0EAA0E;IAClE,OAAO,GAAG,IAAI,GAAG,EAMrB,CAAC;IAiBL,iBAAiB;IAEjB,KAAK,CAAC,OAAO,CAAC,MAAuB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QACxC,MAAM,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAEtB,WAAW;QACX,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;YAC5B,eAAe,EAAE,YAAY;YAC7B,YAAY,EAAE,EAAE;YAChB,UAAU,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE;SACrD,CAAC,CAAC;QACH,UAAU;QACV,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAsB,CAAC;QACtE,IAAI,CAAC,MAAM,EAAE,KAAK;YAAE,OAAO,EAAE,CAAC;QAE9B,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;YACnC,IAAI,EAAE,UAAmB;YACzB,QAAQ,EAAE;gBACR,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE;gBAChC,UAAU,EAAE,CAAC,CAAC,WAAW,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE;aAChE;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY,EAAE,IAA6B,EAAE,IAA8B;QACxF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,IAAI,CAG3E,CAAC;QAEF,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,yBAAyB,CAAC;YAC9F,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC;QAED,SAAS;QACT,OAAO,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACjF,CAAC;IAED,UAAU;QACR,aAAa;QACb,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACnC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACH,cAAc,CAAC,IAA6B;QAC1C,IAAI,CAAC,WAAW,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9D,CAAC;IAED,wBAAwB;IAExB,0BAA0B;IAChB,IAAI,CAAC,MAAc,EAAE,MAAgC,EAAE,IAA8B;QAC7F,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5B,wDAAwD;QACxD,gDAAgD;QAChD,6CAA6C;QAC7C,MAAM,aAAa,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QAC/D,qDAAqD;QACrD,MAAM,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACjF,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC;QAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,OAAO,MAAM,KAAK;oBACzB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;oBACvC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC;oBACvD,KAAK,EAAE,aAAa,MAAM,qBAAqB,OAAO,IAAI;iBAC3D,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,MAAM,qBAAqB,OAAO,IAAI,CAAC,CAAC,CAAC;YACzE,CAAC,EAAE,OAAO,CAAC,CAAC;YAEZ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;YAEpE,IAAI,CAAC;gBACH,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,EAAE,aAAa,CAAC,CAAC;YACnF,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,MAAM;oBACZ,KAAK,EAAE,OAAO,MAAM,OAAO;oBAC3B,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;oBACvC,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc,CAAC;oBACvD,KAAK,EAAE,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC;oBAC9B,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE;iBACnF,CAAC,CAAC;gBACH,MAAM,CAAC,CAAC,CAAC,CAAC;YACZ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+BAA+B;IACrB,MAAM,CAAC,MAAc,EAAE,MAAgC;QAC/D,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,WAAW;QACb,CAAC;IACH,CAAC;IAED,6BAA6B;IACnB,cAAc,CAAC,IAAqB;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC7B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;QAEhD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,OAAO;gBACnC,QAAQ,EAAE,GAAG,QAAQ,IAAI;gBACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/C,OAAO,EAAE,IAAI;gBACb,KAAK,EAAE,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;aAC7D,CAAC,CAAC;YACH,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACnF,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,KAAK,EAAE,OAAO,OAAO,CAAC,MAAM,KAAK;gBACjC,QAAQ,EAAE,GAAG,QAAQ,IAAI;gBACzB,OAAO,EAAE,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC;gBAC/C,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,iBAAiB,CAAC,MAAc,EAAE,MAAgC;QACxE,OAAO;YACL,GAAG,EAAG,IAAI,CAAC,MAAc,CAAC,QAAQ,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE;YACjF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,EAAE;YACrE,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,EAAE;SACvD,CAAC;IACJ,CAAC;IAES,cAAc,CAAC,KAAwJ;QAC/K,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC;YAAC,IAAI,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAS,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;IAC9F,CAAC;CACF"}
|
|
@@ -3,21 +3,21 @@ import type { MCPServerConfig } from './types.js';
|
|
|
3
3
|
export declare class HttpMCPClient extends MCPClientBase {
|
|
4
4
|
private endpoint;
|
|
5
5
|
private sessionId?;
|
|
6
|
-
private
|
|
7
|
-
/**
|
|
8
|
-
private
|
|
6
|
+
private proxyDispatcher?;
|
|
7
|
+
/** 用户自定义请求头模板(值可含 ${vars.x} / ${env.x} 占位符,发送时解析) */
|
|
8
|
+
private headerTemplates?;
|
|
9
9
|
/** 结构化鉴权配置 */
|
|
10
10
|
private authConfig?;
|
|
11
11
|
protected doConnect(config: MCPServerConfig): Promise<void>;
|
|
12
12
|
protected doDisconnect(): void;
|
|
13
|
-
/** 根据 auth
|
|
13
|
+
/** 根据 auth 配置生成鉴权请求头(value 支持 ${vars.x} / ${env.x} 模板)。vars 随请求显式传入,避免共享状态。 */
|
|
14
14
|
private buildAuthHeaders;
|
|
15
15
|
protected send(request: {
|
|
16
16
|
jsonrpc: string;
|
|
17
17
|
id: number;
|
|
18
18
|
method: string;
|
|
19
19
|
params?: Record<string, unknown>;
|
|
20
|
-
}): void;
|
|
20
|
+
}, vars?: Record<string, unknown>): void;
|
|
21
21
|
/** 解析 SSE 文本块中的 JSON-RPC 响应 */
|
|
22
22
|
private parseSSE;
|
|
23
23
|
private headersToObject;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"http-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAIlD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,qDAAqD;IACrD,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,cAAc;IACd,OAAO,CAAC,UAAU,CAAC,CAAiD;cACpD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjE,SAAS,CAAC,YAAY,IAAI,IAAI;IAS9B,+EAA+E;IAC/E,OAAO,CAAC,gBAAgB;IAmBxB,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgHhJ,+BAA+B;IAC/B,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;CAe3B"}
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// HttpMCPClient — HTTP / SSE 传输的 MCP 客户端
|
|
3
3
|
// ============================================================
|
|
4
4
|
import { MCPClientBase } from "./base-client.js";
|
|
5
|
-
import { resolveProxyAgentForCategory } from "
|
|
5
|
+
import { resolveProxyAgentForCategory, createProxyDispatcher } from "../utils/proxy.js";
|
|
6
|
+
import { interpolateHeaderValue, resolveHeaderTemplates } from "../utils/header-vars.js";
|
|
6
7
|
export class HttpMCPClient extends MCPClientBase {
|
|
7
8
|
endpoint = '';
|
|
8
9
|
sessionId;
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
|
|
10
|
+
proxyDispatcher;
|
|
11
|
+
/** 用户自定义请求头模板(值可含 ${vars.x} / ${env.x} 占位符,发送时解析) */
|
|
12
|
+
headerTemplates;
|
|
12
13
|
/** 结构化鉴权配置 */
|
|
13
14
|
authConfig;
|
|
14
15
|
async doConnect(config) {
|
|
@@ -17,37 +18,40 @@ export class HttpMCPClient extends MCPClientBase {
|
|
|
17
18
|
}
|
|
18
19
|
this.endpoint = config.endpoint;
|
|
19
20
|
this.proxyUrl = resolveProxyAgentForCategory(config.proxyCategory, 'MCP:HTTP');
|
|
20
|
-
this.
|
|
21
|
+
this.proxyDispatcher = await createProxyDispatcher(this.proxyUrl);
|
|
22
|
+
this.headerTemplates = config.headers;
|
|
21
23
|
this.authConfig = config.auth;
|
|
22
24
|
this.onDebugTrace = config.onDebugTrace;
|
|
23
25
|
}
|
|
24
26
|
doDisconnect() {
|
|
25
27
|
this.endpoint = '';
|
|
26
28
|
this.sessionId = undefined;
|
|
27
|
-
this.
|
|
29
|
+
this.headerTemplates = undefined;
|
|
28
30
|
this.authConfig = undefined;
|
|
29
31
|
this.proxyUrl = undefined;
|
|
32
|
+
this.proxyDispatcher = undefined;
|
|
30
33
|
}
|
|
31
|
-
/** 根据 auth
|
|
32
|
-
buildAuthHeaders() {
|
|
34
|
+
/** 根据 auth 配置生成鉴权请求头(value 支持 ${vars.x} / ${env.x} 模板)。vars 随请求显式传入,避免共享状态。 */
|
|
35
|
+
buildAuthHeaders(vars) {
|
|
33
36
|
if (!this.authConfig)
|
|
34
37
|
return {};
|
|
35
38
|
const { type, value, name } = this.authConfig;
|
|
39
|
+
const resolved = interpolateHeaderValue(value, vars);
|
|
36
40
|
switch (type) {
|
|
37
41
|
case 'bearer':
|
|
38
|
-
return { Authorization: `Bearer ${
|
|
42
|
+
return { Authorization: `Bearer ${resolved}` };
|
|
39
43
|
case 'basic':
|
|
40
44
|
// value 已是 base64(user:pass) 编码
|
|
41
|
-
return { Authorization: `Basic ${
|
|
45
|
+
return { Authorization: `Basic ${resolved}` };
|
|
42
46
|
case 'apiKey':
|
|
43
|
-
return { [name || 'X-API-Key']:
|
|
47
|
+
return { [name || 'X-API-Key']: resolved };
|
|
44
48
|
case 'custom':
|
|
45
|
-
return { [name || 'X-Custom-Auth']:
|
|
49
|
+
return { [name || 'X-Custom-Auth']: resolved };
|
|
46
50
|
default:
|
|
47
51
|
return {};
|
|
48
52
|
}
|
|
49
53
|
}
|
|
50
|
-
send(request) {
|
|
54
|
+
send(request, vars) {
|
|
51
55
|
// 通知(id=0)不需要响应,用 fire-and-forget
|
|
52
56
|
const isNotification = request.id === 0;
|
|
53
57
|
const headers = {
|
|
@@ -59,22 +63,23 @@ export class HttpMCPClient extends MCPClientBase {
|
|
|
59
63
|
headers['Mcp-Session-Id'] = this.sessionId;
|
|
60
64
|
}
|
|
61
65
|
// 注入结构化鉴权头(优先于自定义 headers,确保鉴权不被覆盖)
|
|
62
|
-
Object.assign(headers, this.buildAuthHeaders());
|
|
63
|
-
//
|
|
64
|
-
|
|
65
|
-
|
|
66
|
+
Object.assign(headers, this.buildAuthHeaders(vars));
|
|
67
|
+
// 注入用户自定义请求头(最后注入,允许覆盖默认值;支持 ${vars.x}/${env.x} 模板)
|
|
68
|
+
// vars 随本次请求显式传入,同一客户端并发调用互不干扰
|
|
69
|
+
if (this.headerTemplates) {
|
|
70
|
+
Object.assign(headers, resolveHeaderTemplates(this.headerTemplates, vars));
|
|
66
71
|
}
|
|
67
72
|
const body = JSON.stringify(request);
|
|
68
73
|
const startTime = Date.now();
|
|
69
|
-
// 使用 Node.js
|
|
74
|
+
// 使用 undici ProxyAgent dispatcher 支持代理(Node.js 原生 fetch 不支持 proxy 选项)
|
|
70
75
|
const fetchOptions = {
|
|
71
76
|
method: 'POST',
|
|
72
77
|
headers,
|
|
73
78
|
body,
|
|
74
79
|
signal: isNotification ? AbortSignal.timeout(10000) : undefined,
|
|
75
80
|
};
|
|
76
|
-
if (this.
|
|
77
|
-
fetchOptions.
|
|
81
|
+
if (this.proxyDispatcher)
|
|
82
|
+
fetchOptions.dispatcher = this.proxyDispatcher;
|
|
78
83
|
fetch(this.endpoint, fetchOptions).then(async (res) => {
|
|
79
84
|
if (isNotification)
|
|
80
85
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AAE/D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"http-client.js","sourceRoot":"","sources":["../../../src/mcp/http-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,51 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export type ProxyMode
|
|
3
|
-
/** 单分类代理配置 */
|
|
4
|
-
export interface ProxyCategoryConfig {
|
|
5
|
-
mode: ProxyMode;
|
|
6
|
-
/** mode='custom' 时的代理 URL */
|
|
7
|
-
url?: string;
|
|
8
|
-
}
|
|
9
|
-
/** 分类代理设置(LLM / MCP / Fetch 各自独立) */
|
|
10
|
-
export interface ProxySettings {
|
|
11
|
-
llm: ProxyCategoryConfig;
|
|
12
|
-
mcp: ProxyCategoryConfig;
|
|
13
|
-
fetch: ProxyCategoryConfig;
|
|
14
|
-
}
|
|
15
|
-
/** 默认代理设置:全部分类走系统代理 */
|
|
16
|
-
export declare const DEFAULT_PROXY_SETTINGS: ProxySettings;
|
|
17
|
-
/**
|
|
18
|
-
* 从 Windows 注册表读取系统代理配置
|
|
19
|
-
* 仅 Windows 平台生效,其他平台返回 undefined
|
|
20
|
-
* 结果缓存,避免重复查询注册表
|
|
21
|
-
*/
|
|
22
|
-
export declare function getWindowsSystemProxy(): string | undefined;
|
|
23
|
-
/** 清除系统代理缓存(设置变更时可调用) */
|
|
24
|
-
export declare function clearSystemProxyCache(): void;
|
|
25
|
-
/**
|
|
26
|
-
* 获取系统代理 URL
|
|
27
|
-
* 优先级:环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY > macOS scutil > Windows 注册表
|
|
28
|
-
*/
|
|
29
|
-
export declare function getSystemProxyUrl(): string | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* 根据分类代理配置解析代理 URL
|
|
32
|
-
*
|
|
33
|
-
* - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
|
|
34
|
-
* - `mode='custom'`:使用用户指定的代理 URL
|
|
35
|
-
* - `mode='direct'`:不走代理,返回 undefined
|
|
36
|
-
*
|
|
37
|
-
* 返回的 URL 可直接传给 Node.js 22.17+ 内置 fetch() 的 proxy 选项,
|
|
38
|
-
* 支持 http://、https://、socks4://、socks5:// 协议。
|
|
39
|
-
*
|
|
40
|
-
* @param category 分类代理配置
|
|
41
|
-
* @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
|
|
42
|
-
* @returns 代理 URL 字符串,无代理时返回 undefined
|
|
43
|
-
*/
|
|
44
|
-
export declare function resolveProxyAgentForCategory(category?: ProxyCategoryConfig, label?: string): string | undefined;
|
|
45
|
-
/**
|
|
46
|
-
* 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
|
|
47
|
-
*
|
|
48
|
-
* @returns 代理 URL 字符串,无代理时返回 undefined
|
|
49
|
-
*/
|
|
50
|
-
export declare function resolveProxyUrlForCategory(category?: ProxyCategoryConfig): string | undefined;
|
|
1
|
+
export { DEFAULT_PROXY_SETTINGS, resolveProxyAgentForCategory, createProxyDispatcher, resolveProxyUrlForCategory, } from '../utils/proxy.js';
|
|
2
|
+
export type { ProxyAgentType, ProxyMode, ProxyCategoryConfig, ProxySettings, } from '../utils/proxy.js';
|
|
51
3
|
//# sourceMappingURL=proxy-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-agent.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy-agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"proxy-agent.d.ts","sourceRoot":"","sources":["../../../src/mcp/proxy-agent.ts"],"names":[],"mappings":"AASA,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC;AAE3B,YAAY,EACV,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,aAAa,GACd,MAAM,mBAAmB,CAAC"}
|
|
@@ -1,171 +1,10 @@
|
|
|
1
1
|
// ============================================================
|
|
2
|
-
//
|
|
2
|
+
// Deprecated re-export shim
|
|
3
3
|
// ============================================================
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
};
|
|
11
|
-
// ---- macOS 系统代理检测 ----
|
|
12
|
-
/**
|
|
13
|
-
* 从 macOS 系统偏好设置读取代理配置
|
|
14
|
-
* 通过 scutil --proxy 查询,仅 macOS 平台生效
|
|
15
|
-
*/
|
|
16
|
-
function getMacOSSystemProxy() {
|
|
17
|
-
if (process.platform !== 'darwin')
|
|
18
|
-
return undefined;
|
|
19
|
-
try {
|
|
20
|
-
const output = execSync('scutil --proxy', { encoding: 'utf-8', timeout: 3000 });
|
|
21
|
-
const parsed = {};
|
|
22
|
-
// scutil 输出格式: " Key : Value"
|
|
23
|
-
for (const line of output.split('\n')) {
|
|
24
|
-
const m = line.trim().match(/^(\w+)\s*:\s*(.+)$/);
|
|
25
|
-
if (m)
|
|
26
|
-
parsed[m[1]] = m[2].trim();
|
|
27
|
-
}
|
|
28
|
-
// 优先 HTTPS 代理,其次 HTTP 代理,最后 SOCKS 代理
|
|
29
|
-
if (parsed['HTTPSEnable'] === '1' && parsed['HTTPSProxy']) {
|
|
30
|
-
const port = parsed['HTTPSPort'] || '443';
|
|
31
|
-
const url = `http://${parsed['HTTPSProxy']}:${port}`;
|
|
32
|
-
console.debug(`[Proxy] macOS system HTTPS proxy detected: ${url}`);
|
|
33
|
-
return url;
|
|
34
|
-
}
|
|
35
|
-
if (parsed['HTTPEnable'] === '1' && parsed['HTTPProxy']) {
|
|
36
|
-
const port = parsed['HTTPPort'] || '80';
|
|
37
|
-
const url = `http://${parsed['HTTPProxy']}:${port}`;
|
|
38
|
-
console.debug(`[Proxy] macOS system HTTP proxy detected: ${url}`);
|
|
39
|
-
return url;
|
|
40
|
-
}
|
|
41
|
-
if (parsed['SOCKSEnable'] === '1' && parsed['SOCKSProxy']) {
|
|
42
|
-
const port = parsed['SOCKSPort'] || '1080';
|
|
43
|
-
const url = `socks5://${parsed['SOCKSProxy']}:${port}`;
|
|
44
|
-
console.debug(`[Proxy] macOS system SOCKS proxy detected: ${url}`);
|
|
45
|
-
return url;
|
|
46
|
-
}
|
|
47
|
-
return undefined;
|
|
48
|
-
}
|
|
49
|
-
catch {
|
|
50
|
-
return undefined;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
53
|
-
// ---- Windows 系统代理检测 ----
|
|
54
|
-
let _cachedSystemProxy = null;
|
|
55
|
-
/**
|
|
56
|
-
* 从 Windows 注册表读取系统代理配置
|
|
57
|
-
* 仅 Windows 平台生效,其他平台返回 undefined
|
|
58
|
-
* 结果缓存,避免重复查询注册表
|
|
59
|
-
*/
|
|
60
|
-
export function getWindowsSystemProxy() {
|
|
61
|
-
if (_cachedSystemProxy !== null)
|
|
62
|
-
return _cachedSystemProxy || undefined;
|
|
63
|
-
if (process.platform !== 'win32') {
|
|
64
|
-
_cachedSystemProxy = undefined;
|
|
65
|
-
return undefined;
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
const regPath = 'HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings';
|
|
69
|
-
const output = execSync(`reg query "${regPath}" /v ProxyEnable`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
|
|
70
|
-
const enabledMatch = output.match(/ProxyEnable\s+REG_DWORD\s+0x(\d+)/i);
|
|
71
|
-
if (!enabledMatch || enabledMatch[1] === '0') {
|
|
72
|
-
_cachedSystemProxy = undefined;
|
|
73
|
-
return undefined;
|
|
74
|
-
}
|
|
75
|
-
const serverOutput = execSync(`reg query "${regPath}" /v ProxyServer`, { encoding: 'utf-8', timeout: 3000, windowsHide: true });
|
|
76
|
-
const serverMatch = serverOutput.match(/ProxyServer\s+REG_SZ\s+(.+)/i);
|
|
77
|
-
if (!serverMatch) {
|
|
78
|
-
_cachedSystemProxy = undefined;
|
|
79
|
-
return undefined;
|
|
80
|
-
}
|
|
81
|
-
const proxyServer = serverMatch[1].trim();
|
|
82
|
-
// Windows 代理可能是 ip:port 格式,需要补全协议
|
|
83
|
-
const proxyUrl = proxyServer.includes('://') ? proxyServer : `http://${proxyServer}`;
|
|
84
|
-
_cachedSystemProxy = proxyUrl;
|
|
85
|
-
console.debug(`[Proxy] Windows system proxy detected: ${proxyUrl}`);
|
|
86
|
-
return proxyUrl;
|
|
87
|
-
}
|
|
88
|
-
catch {
|
|
89
|
-
_cachedSystemProxy = undefined;
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/** 清除系统代理缓存(设置变更时可调用) */
|
|
94
|
-
export function clearSystemProxyCache() {
|
|
95
|
-
_cachedSystemProxy = null;
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* 获取系统代理 URL
|
|
99
|
-
* 优先级:环境变量 HTTPS_PROXY / HTTP_PROXY / ALL_PROXY > macOS scutil > Windows 注册表
|
|
100
|
-
*/
|
|
101
|
-
export function getSystemProxyUrl() {
|
|
102
|
-
return process.env.HTTPS_PROXY
|
|
103
|
-
|| process.env.https_proxy
|
|
104
|
-
|| process.env.HTTP_PROXY
|
|
105
|
-
|| process.env.http_proxy
|
|
106
|
-
|| process.env.ALL_PROXY
|
|
107
|
-
|| process.env.all_proxy
|
|
108
|
-
|| getMacOSSystemProxy()
|
|
109
|
-
|| getWindowsSystemProxy();
|
|
110
|
-
}
|
|
111
|
-
// ---- Proxy URL 解析 ----
|
|
112
|
-
/**
|
|
113
|
-
* 根据分类代理配置解析代理 URL
|
|
114
|
-
*
|
|
115
|
-
* - `mode='system'`:自动检测系统代理(环境变量 + macOS scutil + Windows 注册表)
|
|
116
|
-
* - `mode='custom'`:使用用户指定的代理 URL
|
|
117
|
-
* - `mode='direct'`:不走代理,返回 undefined
|
|
118
|
-
*
|
|
119
|
-
* 返回的 URL 可直接传给 Node.js 22.17+ 内置 fetch() 的 proxy 选项,
|
|
120
|
-
* 支持 http://、https://、socks4://、socks5:// 协议。
|
|
121
|
-
*
|
|
122
|
-
* @param category 分类代理配置
|
|
123
|
-
* @param label 日志标签(如 'LLM', 'MCP', 'Fetch')
|
|
124
|
-
* @returns 代理 URL 字符串,无代理时返回 undefined
|
|
125
|
-
*/
|
|
126
|
-
export function resolveProxyAgentForCategory(category, label = 'Proxy') {
|
|
127
|
-
if (!category)
|
|
128
|
-
return undefined;
|
|
129
|
-
let proxyUrl;
|
|
130
|
-
switch (category.mode) {
|
|
131
|
-
case 'direct':
|
|
132
|
-
console.debug(`[${label}] proxy mode: direct (no proxy)`);
|
|
133
|
-
return undefined;
|
|
134
|
-
case 'custom':
|
|
135
|
-
if (!category.url) {
|
|
136
|
-
console.debug(`[${label}] proxy mode: custom but no URL configured, falling back to direct`);
|
|
137
|
-
return undefined;
|
|
138
|
-
}
|
|
139
|
-
proxyUrl = category.url;
|
|
140
|
-
break;
|
|
141
|
-
case 'system':
|
|
142
|
-
default:
|
|
143
|
-
proxyUrl = getSystemProxyUrl();
|
|
144
|
-
if (!proxyUrl) {
|
|
145
|
-
console.debug(`[${label}] proxy mode: system, no system proxy detected`);
|
|
146
|
-
return undefined;
|
|
147
|
-
}
|
|
148
|
-
break;
|
|
149
|
-
}
|
|
150
|
-
console.debug(`[${label}] using proxy: ${proxyUrl}`);
|
|
151
|
-
return proxyUrl;
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* 获取分类代理的有效 URL(用于 axios 等 HTTP 客户端)
|
|
155
|
-
*
|
|
156
|
-
* @returns 代理 URL 字符串,无代理时返回 undefined
|
|
157
|
-
*/
|
|
158
|
-
export function resolveProxyUrlForCategory(category) {
|
|
159
|
-
if (!category)
|
|
160
|
-
return undefined;
|
|
161
|
-
switch (category.mode) {
|
|
162
|
-
case 'direct':
|
|
163
|
-
return undefined;
|
|
164
|
-
case 'custom':
|
|
165
|
-
return category.url || undefined;
|
|
166
|
-
case 'system':
|
|
167
|
-
default:
|
|
168
|
-
return getSystemProxyUrl();
|
|
169
|
-
}
|
|
170
|
-
}
|
|
4
|
+
//
|
|
5
|
+
// 通用代理逻辑已迁移至 utils/proxy.ts。
|
|
6
|
+
// 此文件仅保留作为向后兼容的浅层 re-export,避免外部深层导入
|
|
7
|
+
// (如 `agent-core/mcp/proxy-agent`)失效。新代码请改为从
|
|
8
|
+
// `utils/proxy` 导入。
|
|
9
|
+
export { DEFAULT_PROXY_SETTINGS, resolveProxyAgentForCategory, createProxyDispatcher, resolveProxyUrlForCategory, } from "../utils/proxy.js";
|
|
171
10
|
//# sourceMappingURL=proxy-agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-agent.js","sourceRoot":"","sources":["../../../src/mcp/proxy-agent.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"proxy-agent.js","sourceRoot":"","sources":["../../../src/mcp/proxy-agent.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAC/D,EAAE;AACF,6BAA6B;AAC7B,qCAAqC;AACrC,6CAA6C;AAC7C,oBAAoB;AAEpB,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,mBAAmB,CAAC"}
|
|
@@ -10,7 +10,7 @@ export declare class StdioMCPClient extends MCPClientBase {
|
|
|
10
10
|
id: number;
|
|
11
11
|
method: string;
|
|
12
12
|
params?: Record<string, unknown>;
|
|
13
|
-
}): void;
|
|
13
|
+
}, _vars?: Record<string, unknown>): void;
|
|
14
14
|
private flushBuffer;
|
|
15
15
|
}
|
|
16
16
|
//# sourceMappingURL=stdio-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/stdio-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,cAAe,SAAQ,aAAa;IAC/C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAM;cACJ,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFjE,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"stdio-client.d.ts","sourceRoot":"","sources":["../../../src/mcp/stdio-client.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,qBAAa,cAAe,SAAQ,aAAa;IAC/C,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,MAAM,CAAM;cACJ,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAkFjE,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAiCjJ,OAAO,CAAC,WAAW;CAkBpB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../../src/mcp/stdio-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"stdio-client.js","sourceRoot":"","sources":["../../../src/mcp/stdio-client.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,2CAA2C;AAC3C,+DAA+D;AAE/D,OAAO,EAAE,KAAK,EAAqB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGjD,MAAM,OAAO,cAAe,SAAQ,aAAa;IACvC,OAAO,GAAwB,IAAI,CAAC;IACpC,MAAM,GAAG,EAAE,CAAC;IACV,KAAK,CAAC,SAAS,CAAC,MAAuB;QAC/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;QACpE,CAAC;QACD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;QAExC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAQ,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;gBACtD,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;gBAC9C,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;aAChC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YAErB,OAAO;YACP,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,MAAM,MAAM,GAAG,qBAAqB,MAAM,CAAC,IAAI,8BAA8B,CAAC;gBAC9E,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,gBAAgB;oBACvB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;oBACvC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;oBAC/H,KAAK,EAAE,MAAM;iBACd,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,CAAC,EAAE,KAAK,CAAC,CAAC;YAEV,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;gBACrB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,kBAAkB;oBACzB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;oBACvC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;oBAC/H,OAAO,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE;iBAC5B,CAAC,CAAC;gBACH,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;gBACxB,YAAY,CAAC,KAAK,CAAC,CAAC;gBACpB,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,eAAe;oBACrB,KAAK,EAAE,kBAAkB;oBACzB,QAAQ,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI;oBACvC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE;oBAC/H,KAAK,EAAE,GAAG,CAAC,OAAO;oBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAG,GAAW,CAAC,IAAI,EAAE;iBAC7E,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACnF,CAAC,CAAC,CAAC;YAEH,4BAA4B;YAC5B,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACzC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAChC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,CAAC,CAAC,CAAC;YAEH,cAAc;YACd,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;gBACpC,IAAI,GAAG;oBAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;YAEH,iDAAiD;YACjD,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,GAA0B,EAAE,EAAE;gBACtD,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CAAC,QAAQ,MAAM,CAAC,IAAI,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACpE,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;gBACxB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;oBACnB,OAAO,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,IAAI,8BAA8B,IAAI,EAAE,CAAC,CAAC;oBACtE,2BAA2B;oBAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAES,YAAY;QACpB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACnB,CAAC;IAES,IAAI,CAAC,OAA0F,EAAE,KAA+B;QACxI,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;YACnC,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI,EAAE,OAAO,CAAC,MAAM;gBACpB,KAAK,EAAE,aAAa,OAAO,CAAC,MAAM,OAAO;gBACzC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;gBAC7F,KAAK,EAAE,mCAAmC;aAC3C,CAAC,CAAC;YACH,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,yDAAyD;QACzD,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;YACrB,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YACzG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3C,IAAI,GAAG,IAAK,GAA6B,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC3D,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,IAAI,kBAAkB,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,cAAc,CAAC;oBAClB,IAAI,EAAE,OAAO,CAAC,MAAM;oBACpB,KAAK,EAAE,aAAa,OAAO,CAAC,MAAM,OAAO;oBACzC,OAAO,EAAE,EAAE,GAAG,EAAE,SAAS,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBAC7F,KAAK,EAAE,GAAG,CAAC,OAAO;oBAClB,SAAS,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAG,GAA6B,CAAC,IAAI,EAAE;iBAC/F,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;IAEP,WAAW;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,YAAY;QAE7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACjC,8BAA8B;gBAC9B,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC3C,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,aAAa;YACf,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
|