@cicctencent/agent-core 0.1.70 → 0.1.73

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.
Files changed (151) hide show
  1. package/dist/cjs/a2a/client.d.ts +39 -11
  2. package/dist/cjs/a2a/client.d.ts.map +1 -1
  3. package/dist/cjs/a2a/client.js +69 -22
  4. package/dist/cjs/a2a/client.js.map +1 -1
  5. package/dist/cjs/a2a/rest-client.d.ts +35 -9
  6. package/dist/cjs/a2a/rest-client.d.ts.map +1 -1
  7. package/dist/cjs/a2a/rest-client.js +65 -18
  8. package/dist/cjs/a2a/rest-client.js.map +1 -1
  9. package/dist/cjs/a2a/rest-runner.d.ts +6 -0
  10. package/dist/cjs/a2a/rest-runner.d.ts.map +1 -1
  11. package/dist/cjs/a2a/rest-runner.js +19 -7
  12. package/dist/cjs/a2a/rest-runner.js.map +1 -1
  13. package/dist/cjs/a2a/runner.d.ts +6 -0
  14. package/dist/cjs/a2a/runner.d.ts.map +1 -1
  15. package/dist/cjs/a2a/runner.js +24 -7
  16. package/dist/cjs/a2a/runner.js.map +1 -1
  17. package/dist/cjs/index.d.ts +5 -2
  18. package/dist/cjs/index.d.ts.map +1 -1
  19. package/dist/cjs/index.js +15 -10
  20. package/dist/cjs/index.js.map +1 -1
  21. package/dist/cjs/interaction/service.d.ts +14 -0
  22. package/dist/cjs/interaction/service.d.ts.map +1 -1
  23. package/dist/cjs/interaction/service.js +114 -31
  24. package/dist/cjs/interaction/service.js.map +1 -1
  25. package/dist/cjs/interaction/store.d.ts +1 -0
  26. package/dist/cjs/interaction/store.d.ts.map +1 -1
  27. package/dist/cjs/interaction/store.js +10 -0
  28. package/dist/cjs/interaction/store.js.map +1 -1
  29. package/dist/cjs/interaction/types.d.ts +5 -1
  30. package/dist/cjs/interaction/types.d.ts.map +1 -1
  31. package/dist/cjs/interaction/types.js.map +1 -1
  32. package/dist/cjs/llm/debug.d.ts.map +1 -1
  33. package/dist/cjs/llm/debug.js +4 -1
  34. package/dist/cjs/llm/debug.js.map +1 -1
  35. package/dist/cjs/mcp/base-client.d.ts +19 -4
  36. package/dist/cjs/mcp/base-client.d.ts.map +1 -1
  37. package/dist/cjs/mcp/base-client.js +28 -8
  38. package/dist/cjs/mcp/base-client.js.map +1 -1
  39. package/dist/cjs/mcp/http-client.d.ts +5 -5
  40. package/dist/cjs/mcp/http-client.d.ts.map +1 -1
  41. package/dist/cjs/mcp/http-client.js +26 -21
  42. package/dist/cjs/mcp/http-client.js.map +1 -1
  43. package/dist/cjs/mcp/proxy-agent.d.ts +2 -50
  44. package/dist/cjs/mcp/proxy-agent.d.ts.map +1 -1
  45. package/dist/cjs/mcp/proxy-agent.js +12 -174
  46. package/dist/cjs/mcp/proxy-agent.js.map +1 -1
  47. package/dist/cjs/mcp/stdio-client.d.ts +1 -1
  48. package/dist/cjs/mcp/stdio-client.d.ts.map +1 -1
  49. package/dist/cjs/mcp/stdio-client.js +1 -1
  50. package/dist/cjs/mcp/stdio-client.js.map +1 -1
  51. package/dist/cjs/mcp/types.d.ts +8 -2
  52. package/dist/cjs/mcp/types.d.ts.map +1 -1
  53. package/dist/cjs/tool/ask-user.d.ts.map +1 -1
  54. package/dist/cjs/tool/ask-user.js +2 -0
  55. package/dist/cjs/tool/ask-user.js.map +1 -1
  56. package/dist/cjs/tool/delegate.d.ts +12 -1
  57. package/dist/cjs/tool/delegate.d.ts.map +1 -1
  58. package/dist/cjs/tool/delegate.js +21 -5
  59. package/dist/cjs/tool/delegate.js.map +1 -1
  60. package/dist/cjs/utils/header-vars.d.ts +18 -0
  61. package/dist/cjs/utils/header-vars.d.ts.map +1 -0
  62. package/dist/cjs/utils/header-vars.js +71 -0
  63. package/dist/cjs/utils/header-vars.js.map +1 -0
  64. package/dist/cjs/utils/proxy-agent.d.ts +53 -0
  65. package/dist/cjs/utils/proxy-agent.d.ts.map +1 -0
  66. package/dist/cjs/utils/proxy-agent.js +154 -0
  67. package/dist/cjs/utils/proxy-agent.js.map +1 -0
  68. package/dist/cjs/utils/proxy.d.ts +53 -0
  69. package/dist/cjs/utils/proxy.d.ts.map +1 -0
  70. package/dist/cjs/utils/proxy.js +148 -0
  71. package/dist/cjs/utils/proxy.js.map +1 -0
  72. package/dist/cjs/utils/system-proxy.d.ts +15 -0
  73. package/dist/cjs/utils/system-proxy.d.ts.map +1 -0
  74. package/dist/cjs/utils/system-proxy.js +133 -0
  75. package/dist/cjs/utils/system-proxy.js.map +1 -0
  76. package/dist/esm/a2a/client.d.ts +39 -11
  77. package/dist/esm/a2a/client.d.ts.map +1 -1
  78. package/dist/esm/a2a/client.js +69 -22
  79. package/dist/esm/a2a/client.js.map +1 -1
  80. package/dist/esm/a2a/rest-client.d.ts +35 -9
  81. package/dist/esm/a2a/rest-client.d.ts.map +1 -1
  82. package/dist/esm/a2a/rest-client.js +65 -18
  83. package/dist/esm/a2a/rest-client.js.map +1 -1
  84. package/dist/esm/a2a/rest-runner.d.ts +6 -0
  85. package/dist/esm/a2a/rest-runner.d.ts.map +1 -1
  86. package/dist/esm/a2a/rest-runner.js +19 -7
  87. package/dist/esm/a2a/rest-runner.js.map +1 -1
  88. package/dist/esm/a2a/runner.d.ts +6 -0
  89. package/dist/esm/a2a/runner.d.ts.map +1 -1
  90. package/dist/esm/a2a/runner.js +24 -7
  91. package/dist/esm/a2a/runner.js.map +1 -1
  92. package/dist/esm/index.d.ts +5 -2
  93. package/dist/esm/index.d.ts.map +1 -1
  94. package/dist/esm/index.js +3 -1
  95. package/dist/esm/index.js.map +1 -1
  96. package/dist/esm/interaction/service.d.ts +14 -0
  97. package/dist/esm/interaction/service.d.ts.map +1 -1
  98. package/dist/esm/interaction/service.js +114 -31
  99. package/dist/esm/interaction/service.js.map +1 -1
  100. package/dist/esm/interaction/store.d.ts +1 -0
  101. package/dist/esm/interaction/store.d.ts.map +1 -1
  102. package/dist/esm/interaction/store.js +10 -0
  103. package/dist/esm/interaction/store.js.map +1 -1
  104. package/dist/esm/interaction/types.d.ts +5 -1
  105. package/dist/esm/interaction/types.d.ts.map +1 -1
  106. package/dist/esm/interaction/types.js.map +1 -1
  107. package/dist/esm/llm/debug.d.ts.map +1 -1
  108. package/dist/esm/llm/debug.js +4 -1
  109. package/dist/esm/llm/debug.js.map +1 -1
  110. package/dist/esm/mcp/base-client.d.ts +19 -4
  111. package/dist/esm/mcp/base-client.d.ts.map +1 -1
  112. package/dist/esm/mcp/base-client.js +28 -8
  113. package/dist/esm/mcp/base-client.js.map +1 -1
  114. package/dist/esm/mcp/http-client.d.ts +5 -5
  115. package/dist/esm/mcp/http-client.d.ts.map +1 -1
  116. package/dist/esm/mcp/http-client.js +25 -20
  117. package/dist/esm/mcp/http-client.js.map +1 -1
  118. package/dist/esm/mcp/proxy-agent.d.ts +2 -50
  119. package/dist/esm/mcp/proxy-agent.d.ts.map +1 -1
  120. package/dist/esm/mcp/proxy-agent.js +7 -168
  121. package/dist/esm/mcp/proxy-agent.js.map +1 -1
  122. package/dist/esm/mcp/stdio-client.d.ts +1 -1
  123. package/dist/esm/mcp/stdio-client.d.ts.map +1 -1
  124. package/dist/esm/mcp/stdio-client.js +1 -1
  125. package/dist/esm/mcp/stdio-client.js.map +1 -1
  126. package/dist/esm/mcp/types.d.ts +8 -2
  127. package/dist/esm/mcp/types.d.ts.map +1 -1
  128. package/dist/esm/tool/ask-user.d.ts.map +1 -1
  129. package/dist/esm/tool/ask-user.js +2 -0
  130. package/dist/esm/tool/ask-user.js.map +1 -1
  131. package/dist/esm/tool/delegate.d.ts +12 -1
  132. package/dist/esm/tool/delegate.d.ts.map +1 -1
  133. package/dist/esm/tool/delegate.js +21 -5
  134. package/dist/esm/tool/delegate.js.map +1 -1
  135. package/dist/esm/utils/header-vars.d.ts +18 -0
  136. package/dist/esm/utils/header-vars.d.ts.map +1 -0
  137. package/dist/esm/utils/header-vars.js +65 -0
  138. package/dist/esm/utils/header-vars.js.map +1 -0
  139. package/dist/esm/utils/proxy-agent.d.ts +53 -0
  140. package/dist/esm/utils/proxy-agent.d.ts.map +1 -0
  141. package/dist/esm/utils/proxy-agent.js +115 -0
  142. package/dist/esm/utils/proxy-agent.js.map +1 -0
  143. package/dist/esm/utils/proxy.d.ts +53 -0
  144. package/dist/esm/utils/proxy.d.ts.map +1 -0
  145. package/dist/esm/utils/proxy.js +109 -0
  146. package/dist/esm/utils/proxy.js.map +1 -0
  147. package/dist/esm/utils/system-proxy.d.ts +15 -0
  148. package/dist/esm/utils/system-proxy.d.ts.map +1 -0
  149. package/dist/esm/utils/system-proxy.js +128 -0
  150. package/dist/esm/utils/system-proxy.js.map +1 -0
  151. package/package.json +1 -1
@@ -2,6 +2,8 @@
2
2
  // InteractionService — 用户交互请求管理
3
3
  // 管理 pending 交互请求,支持暂停/恢复 Agent 运行
4
4
  // ============================================================
5
+ /** 跨进程轮询间隔(毫秒) */
6
+ const CROSS_PROCESS_POLL_INTERVAL_MS = 1000;
5
7
  /**
6
8
  * InteractionService — 管理用户交互请求的生命周期
7
9
  *
@@ -20,19 +22,85 @@ export class InteractionService {
20
22
  this.store = store;
21
23
  this.defaultTimeoutMs = defaultTimeoutMs;
22
24
  }
25
+ /**
26
+ * 清理 waiter:清除超时和轮询定时器,从 map 中删除并返回
27
+ */
28
+ clearWaiter(requestId) {
29
+ const waiter = this.waiters.get(requestId);
30
+ if (waiter) {
31
+ clearTimeout(waiter.timeout);
32
+ clearInterval(waiter.pollInterval);
33
+ if (waiter.abortSignal && waiter.abortListener) {
34
+ waiter.abortSignal.removeEventListener('abort', waiter.abortListener);
35
+ }
36
+ this.waiters.delete(requestId);
37
+ }
38
+ return waiter;
39
+ }
23
40
  /**
24
41
  * 创建交互请求并返回 Promise,等待用户回答
25
42
  */
26
43
  requestInteraction(params) {
27
44
  const request = this.createInteraction(params);
28
45
  return new Promise((resolve, reject) => {
46
+ let settled = false;
47
+ // 包装 resolve/reject:调用时自动清理 timeout、pollInterval 和 abortListener,保证资源一定释放
48
+ const safeResolve = (answer) => {
49
+ if (settled)
50
+ return;
51
+ settled = true;
52
+ this.clearWaiter(request.requestId);
53
+ resolve(answer);
54
+ };
55
+ const safeReject = (reason) => {
56
+ if (settled)
57
+ return;
58
+ settled = true;
59
+ this.clearWaiter(request.requestId);
60
+ reject(reason);
61
+ };
62
+ if (params.abortSignal?.aborted) {
63
+ this.store.update(request.requestId, { status: 'cancelled' });
64
+ safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
65
+ return;
66
+ }
29
67
  const timeout = setTimeout(() => {
30
- this.waiters.delete(request.requestId);
31
- request.status = 'expired';
32
68
  this.store.update(request.requestId, { status: 'expired' });
33
- reject(new Error(`Interaction request ${request.requestId} timed out after ${request.timeoutMs}ms`));
69
+ safeReject(new Error(`Interaction request ${request.requestId} timed out after ${request.timeoutMs}ms`));
34
70
  }, request.timeoutMs);
35
- this.waiters.set(request.requestId, { resolve, reject, timeout });
71
+ // 跨进程轮询:定期检测 store 中状态变化(其他进程 answer/cancel 后触发)
72
+ const pollInterval = setInterval(() => {
73
+ const current = this.store.get(request.requestId);
74
+ if (!current)
75
+ return; // 可能还未写入,忽略
76
+ if (current.status === 'answered') {
77
+ safeResolve(current.answer ?? { requestId: request.requestId, action: 'submit' });
78
+ }
79
+ else if (current.status === 'cancelled') {
80
+ safeReject(new Error(`Interaction request ${request.requestId} was cancelled`));
81
+ }
82
+ else if (current.status === 'expired') {
83
+ safeReject(new Error(`Interaction request ${request.requestId} expired`));
84
+ }
85
+ }, CROSS_PROCESS_POLL_INTERVAL_MS);
86
+ const abortListener = params.abortSignal
87
+ ? () => {
88
+ this.store.update(request.requestId, { status: 'cancelled' });
89
+ safeReject(new Error(`Interaction request ${request.requestId} was cancelled by abort`));
90
+ }
91
+ : undefined;
92
+ if (params.abortSignal && abortListener) {
93
+ params.abortSignal.addEventListener('abort', abortListener, { once: true });
94
+ }
95
+ // 存入 waiter 的是 safeResolve/safeReject,外部调用时自动清理定时器
96
+ this.waiters.set(request.requestId, {
97
+ resolve: safeResolve,
98
+ reject: safeReject,
99
+ timeout,
100
+ pollInterval,
101
+ abortSignal: params.abortSignal,
102
+ abortListener,
103
+ });
36
104
  // 通知前端:创建请求后立即触发 emit 回调,将 interaction-request 事件推送到 SSE,
37
105
  // 否则前端永远收不到交互请求,用户无法作答,最终工具执行超时。
38
106
  try {
@@ -73,40 +141,39 @@ export class InteractionService {
73
141
  }
74
142
  /**
75
143
  * 回答交互请求
144
+ * 先更新 store(跨进程可见),再尝试 resolve 本地 waiter。
145
+ * 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
76
146
  */
77
147
  answerInteraction(requestId, answer) {
78
148
  const request = this.store.get(requestId);
79
149
  if (!request || request.status !== 'pending')
80
150
  return false;
151
+ // 先更新 store(跨进程可见),包含 answer 数据供轮询方读取
152
+ this.store.update(requestId, { status: 'answered', answeredAt: Date.now(), answer });
153
+ // 尝试 resolve 本地 waiter(同进程立即响应);safeResolve 会自动清理定时器
81
154
  const waiter = this.waiters.get(requestId);
82
- if (!waiter)
83
- return false;
84
- // 清除超时
85
- clearTimeout(waiter.timeout);
86
- this.waiters.delete(requestId);
87
- // 更新状态
88
- request.status = 'answered';
89
- request.answeredAt = Date.now();
90
- this.store.update(requestId, { status: 'answered', answeredAt: Date.now() });
91
- // 解析 Promise
92
- waiter.resolve(answer);
155
+ if (waiter) {
156
+ waiter.resolve(answer);
157
+ }
158
+ // 即使没有本地 waiter(跨进程场景),store 已更新,轮询方会检测到
93
159
  return true;
94
160
  }
95
161
  /**
96
162
  * 取消交互请求
163
+ * 先更新 store(跨进程可见),再尝试 reject 本地 waiter。
164
+ * 即使本地 waiter 不存在(跨进程场景),store 已更新,轮询方会检测到。
97
165
  */
98
166
  cancelInteraction(requestId) {
99
167
  const request = this.store.get(requestId);
100
168
  if (!request || request.status !== 'pending')
101
169
  return false;
102
- const waiter = this.waiters.get(requestId);
103
- if (!waiter)
104
- return false;
105
- clearTimeout(waiter.timeout);
106
- this.waiters.delete(requestId);
107
- request.status = 'cancelled';
170
+ // 先更新 store
108
171
  this.store.update(requestId, { status: 'cancelled' });
109
- waiter.reject(new Error(`Interaction request ${requestId} was cancelled`));
172
+ // 尝试 reject 本地 waiter;safeReject 会自动清理定时器
173
+ const waiter = this.waiters.get(requestId);
174
+ if (waiter) {
175
+ waiter.reject(new Error(`Interaction request ${requestId} was cancelled`));
176
+ }
110
177
  return true;
111
178
  }
112
179
  /**
@@ -130,6 +197,15 @@ export class InteractionService {
130
197
  this.cancelInteraction(req.requestId);
131
198
  }
132
199
  }
200
+ /**
201
+ * 取消线程下所有 pending 请求(包含使用子会话 ID 创建的交互)
202
+ */
203
+ cancelAllForThread(threadId) {
204
+ const pending = this.store.listPendingByThread(threadId);
205
+ for (const req of pending) {
206
+ this.cancelInteraction(req.requestId);
207
+ }
208
+ }
133
209
  /**
134
210
  * 清理已完成/已过期/已取消的请求
135
211
  */
@@ -137,25 +213,32 @@ export class InteractionService {
137
213
  let count = 0;
138
214
  const now = Date.now();
139
215
  // 遍历所有 waiter(它们对应的都是 pending 请求)
140
- for (const [requestId, waiter] of this.waiters) {
216
+ for (const [requestId] of this.waiters) {
141
217
  const request = this.store.get(requestId);
142
218
  if (!request) {
143
- clearTimeout(waiter.timeout);
144
- this.waiters.delete(requestId);
219
+ // 请求已被删除,reject 并自动清理定时器
220
+ this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} not found during cleanup`));
221
+ count++;
222
+ continue;
223
+ }
224
+ if (request.status === 'answered') {
225
+ this.waiters.get(requestId)?.resolve(request.answer ?? { requestId, action: 'submit' });
226
+ count++;
227
+ continue;
228
+ }
229
+ if (request.status === 'cancelled') {
230
+ this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} was cancelled`));
145
231
  count++;
146
232
  continue;
147
233
  }
148
- if (request.status !== 'pending') {
149
- clearTimeout(waiter.timeout);
150
- this.waiters.delete(requestId);
234
+ if (request.status === 'expired') {
235
+ this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired`));
151
236
  count++;
152
237
  continue;
153
238
  }
154
239
  if (now - request.createdAt > olderThanMs) {
155
- clearTimeout(waiter.timeout);
156
- this.waiters.delete(requestId);
157
240
  this.store.update(requestId, { status: 'expired' });
158
- waiter.reject(new Error(`Interaction request ${requestId} expired during cleanup`));
241
+ this.waiters.get(requestId)?.reject(new Error(`Interaction request ${requestId} expired during cleanup`));
159
242
  count++;
160
243
  }
161
244
  }
@@ -1 +1 @@
1
- {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../../src/interaction/service.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export declare class InMemoryInteractionStore implements InteractionStore {
4
4
  save(request: InteractionRequest): void;
5
5
  get(requestId: string): InteractionRequest | undefined;
6
6
  listPending(sessionId: string): InteractionRequest[];
7
+ listPendingByThread(threadId: string | number): InteractionRequest[];
7
8
  update(requestId: string, updates: Partial<InteractionRequest>): void;
8
9
  delete(requestId: string): void;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEvE,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,QAAQ,CAAyC;IAEzD,IAAI,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAIvC,GAAG,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAKtD,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAUpD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,kBAAkB,EAAE;IAWpE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,GAAG,IAAI;IAOrE,MAAM,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGhC"}
@@ -19,6 +19,16 @@ export class InMemoryInteractionStore {
19
19
  }
20
20
  return results.sort((a, b) => b.createdAt - a.createdAt);
21
21
  }
22
+ listPendingByThread(threadId) {
23
+ const normalizedThreadId = String(threadId);
24
+ const results = [];
25
+ for (const r of this.requests.values()) {
26
+ if (r.threadId != null && String(r.threadId) === normalizedThreadId && r.status === 'pending') {
27
+ results.push({ ...r });
28
+ }
29
+ }
30
+ return results.sort((a, b) => b.createdAt - a.createdAt);
31
+ }
22
32
  update(requestId, updates) {
23
33
  const existing = this.requests.get(requestId);
24
34
  if (existing) {
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAI/D,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../../src/interaction/store.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,kCAAkC;AAClC,+DAA+D;AAI/D,MAAM,OAAO,wBAAwB;IAC3B,QAAQ,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEzD,IAAI,CAAC,OAA2B;QAC9B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,SAAiB;QACnB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClC,CAAC;IAED,WAAW,CAAC,SAAiB;QAC3B,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,mBAAmB,CAAC,QAAyB;QAC3C,MAAM,kBAAkB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAyB,EAAE,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,kBAAkB,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC9F,OAAO,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,CAAC,SAAiB,EAAE,OAAoC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC9C,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;CACF"}
@@ -51,6 +51,8 @@ export interface InteractionRequest {
51
51
  createdAt: number;
52
52
  /** 回答时间(毫秒时间戳) */
53
53
  answeredAt?: number;
54
+ /** 用户回答(answered 状态时存在,跨进程轮询方通过此字段获取答案) */
55
+ answer?: InteractionAnswer;
54
56
  /** 扩展字段(上层可附加任意数据,如 permissionId 用于权限审批联动) */
55
57
  meta?: Record<string, unknown>;
56
58
  }
@@ -68,7 +70,7 @@ export interface InteractionAnswer {
68
70
  /** 交互请求事件(SSE 发送给前端) */
69
71
  export interface InteractionRequestEvent {
70
72
  type: 'interaction-request';
71
- data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt'>;
73
+ data: Omit<InteractionRequest, 'status' | 'createdAt' | 'answeredAt' | 'answer'>;
72
74
  }
73
75
  /** 交互回答事件(SSE 发送给前端,通知前端该请求已处理) */
74
76
  export interface InteractionAnswerEvent {
@@ -87,6 +89,8 @@ export interface InteractionStore {
87
89
  get(requestId: string): InteractionRequest | undefined;
88
90
  /** 获取会话下所有 pending 请求 */
89
91
  listPending(sessionId: string): InteractionRequest[];
92
+ /** 获取线程下所有 pending 请求(用于取消主会话及子会话交互) */
93
+ listPendingByThread(threadId: string | number): InteractionRequest[];
90
94
  /** 更新交互请求状态 */
91
95
  update(requestId: string, updates: Partial<InteractionRequest>): void;
92
96
  /** 删除交互请求 */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;AAyG/D,kBAAkB;AAClB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/interaction/types.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,4BAA4B;AAC5B,6BAA6B;AAC7B,+DAA+D;AA6G/D,kBAAkB;AAClB,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEjE,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS/E;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAqDnB"}
1
+ {"version":3,"file":"debug.d.ts","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAgB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGjE,qDAAqD;AACrD,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,gBAAgB,CAAC;CAC5B;AAED,uCAAuC;AACvC,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAM/C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS/E;AAED,MAAM,WAAW,uBAAuB;IACtC,eAAe;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW;IACX,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB;IACpB,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,kCAAkC;IAClC,QAAQ,CAAC,EAAE,YAAY,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,IAAI,EAAE,uBAAuB,GAC5B,OAAO,CAAC,QAAQ,CAAC,CAwDnB"}
@@ -5,6 +5,7 @@
5
5
  // 提供统一的 fetch 包装(fetchWithDiagnostics),在调试模式下捕获
6
6
  // 请求域名、解析到的目标 IP(DNS)、代理配置、耗时、HTTP 状态等信息,
7
7
  // 并通过 LLMDebugCallback 抛给上层(LLMCaller → AgentEvent)。
8
+ import { createProxyDispatcher } from "../utils/proxy.js";
8
9
  /** 从 URL 中提取 host(含端口),解析失败返回原始 URL */
9
10
  export function extractHost(url) {
10
11
  try {
@@ -57,13 +58,15 @@ export async function fetchWithDiagnostics(url, init, opts) {
57
58
  else
58
59
  externalSignal.addEventListener('abort', () => controller.abort(), { once: true });
59
60
  }
61
+ // 创建 ProxyAgent dispatcher(仅在有代理时)
62
+ const dispatcher = await createProxyDispatcher(opts.proxy);
60
63
  let res;
61
64
  let errMsg;
62
65
  try {
63
66
  res = await fetch(url, {
64
67
  ...init,
65
68
  signal: controller.signal,
66
- ...(opts.proxy ? { proxy: opts.proxy } : {}),
69
+ ...(dispatcher ? { dispatcher } : {}),
67
70
  });
68
71
  }
69
72
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/llm/debug.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,yBAAyB;AACzB,+DAA+D;AAC/D,EAAE;AACF,gDAAgD;AAChD,0CAA0C;AAC1C,qDAAqD;AAGrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAQ1D,uCAAuC;AACvC,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAc;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxC,yEAAyE;QACzE,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAE,MAA8B,CAAC,OAAO,CAAC;IACvF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAiBD;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,GAAW,EACX,IAAsC,EACtC,IAA6B;IAE7B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,UAA8B,CAAC;IACnC,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;QACzB,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;IAC3C,IAAI,cAAc,EAAE,CAAC;QACnB,IAAI,cAAc,CAAC,OAAO;YAAE,UAAU,CAAC,KAAK,EAAE,CAAC;;YAC1C,cAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,mCAAmC;IACnC,MAAM,UAAU,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAE3D,IAAI,GAAyB,CAAC;IAC9B,IAAI,MAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YACrB,GAAG,IAAI;YACP,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvB,CAAC,CAAC;IACpB,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,MAAM,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAiB;gBACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,GAAG;gBACH,MAAM;gBACN,UAAU;gBACV,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK;gBACvB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,MAAM,EAAG,IAAI,CAAC,MAAiB,IAAI,MAAM;gBACzC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;gBAC9B,UAAU,EAAE,GAAG,EAAE,MAAM;gBACvB,EAAE,EAAE,GAAG,EAAE,EAAE;gBACX,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,OAAO;gBAClC,KAAK,EAAE,MAAM;aACd,CAAC;YACF,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -25,6 +25,10 @@ interface JsonRpcResponse {
25
25
  */
26
26
  export declare abstract class MCPClientBase implements MCPClient {
27
27
  protected config: MCPServerConfig;
28
+ /** 默认运行时变量(来自 config.vars) */
29
+ protected contextVars?: Record<string, unknown>;
30
+ /** 实际使用的代理地址(由子类在 connect 时解析并写入;stdio 不设置则为 undefined) */
31
+ protected proxyUrl?: string;
28
32
  protected connected: boolean;
29
33
  private requestId;
30
34
  /** 调试 trace 回调 */
@@ -35,15 +39,25 @@ export declare abstract class MCPClientBase implements MCPClient {
35
39
  protected abstract doConnect(config: MCPServerConfig): Promise<void>;
36
40
  /** 断开物理连接 */
37
41
  protected abstract doDisconnect(): void;
38
- /** 发送 JSON-RPC 消息到 MCP 服务端 */
39
- protected abstract send(request: JsonRpcRequest): void;
42
+ /**
43
+ * 发送 JSON-RPC 消息到 MCP 服务端
44
+ * @param vars 本次请求生效的运行时变量(contextVars + 调用时传入的 vars 合并),随请求显式传递,
45
+ * 不作为实例共享状态,从而消除同一客户端并发调用时的 vars race。
46
+ */
47
+ protected abstract send(request: JsonRpcRequest, vars?: Record<string, unknown>): void;
40
48
  connect(config: MCPServerConfig): Promise<void>;
41
49
  listTools(): Promise<ToolDefinition[]>;
42
- callTool(name: string, args: Record<string, unknown>): Promise<string>;
50
+ callTool(name: string, args: Record<string, unknown>, vars?: Record<string, unknown>): Promise<string>;
43
51
  disconnect(): void;
44
52
  isConnected(): boolean;
53
+ /**
54
+ * 更新运行时变量(如 userId / userMail)。
55
+ * 后续请求(含 callTool 时未单独传入 vars 的情况)将使用更新后的值,
56
+ * 用于注入到 headers / auth 的 ${vars.x} 占位符。
57
+ */
58
+ setContextVars(vars: Record<string, unknown>): void;
45
59
  /** 发送 JSON-RPC 请求并等待响应 */
46
- protected call(method: string, params?: Record<string, unknown>): Promise<unknown>;
60
+ protected call(method: string, params?: Record<string, unknown>, vars?: Record<string, unknown>): Promise<unknown>;
47
61
  /** 发送 JSON-RPC 通知(无 id,无响应) */
48
62
  protected notify(method: string, params?: Record<string, unknown>): void;
49
63
  /** 子类收到 JSON-RPC 响应时调用此方法 */
@@ -58,6 +72,7 @@ export declare abstract class MCPClientBase implements MCPClient {
58
72
  payload?: any;
59
73
  error?: string;
60
74
  exception?: any;
75
+ proxy?: string;
61
76
  }): void;
62
77
  }
63
78
  export {};
@@ -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;AAE/D,kBAAkB;AAClB,UAAU,cAAc;IACtB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,kBAAkB;AAClB,UAAU,eAAe;IACvB,OAAO,EAAE,KAAK,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;CAC3D;AAED;;;GAGG;AACH,8BAAsB,aAAc,YAAW,SAAS;IACtD,SAAS,CAAC,MAAM,EAAG,eAAe,CAAC;IACnC,SAAS,CAAC,SAAS,UAAS;IAC5B,OAAO,CAAC,SAAS,CAAK;IACtB,kBAAkB;IAClB,SAAS,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAChD,0EAA0E;IAC1E,OAAO,CAAC,OAAO,CAMV;IAIL,aAAa;IACb,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAEpE,aAAa;IACb,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAEvC,8BAA8B;IAC9B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIhD,OAAO,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C,SAAS,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IActC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAe5E,UAAU,IAAI,IAAI;IAWlB,WAAW,IAAI,OAAO;IAMtB,0BAA0B;IAC1B,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAsClF,+BAA+B;IAC/B,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAQxE,6BAA6B;IAC7B,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI;IA+BrD,OAAO,CAAC,iBAAiB;IASzB,SAAS,CAAC,cAAc,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,QAAQ,CAAC,EAAE,GAAG,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,GAAG,CAAA;KAAE,GAAG,IAAI;CAIzK"}
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, params),
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, params),
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":"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"}
1
+ {"version":3,"file":"base-client.js","sourceRoot":"","sources":["../../../src/mcp/base-client.ts"],"names":[],"mappings":"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"}
@@ -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 proxyUrl?;
7
- /** 用户自定义请求头(如 Authorization) */
8
- private customHeaders?;
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;AAGlD,qBAAa,aAAc,SAAQ,aAAa;IAC9C,OAAO,CAAC,QAAQ,CAAM;IACtB,OAAO,CAAC,SAAS,CAAC,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,gCAAgC;IAChC,OAAO,CAAC,aAAa,CAAC,CAAyB;IAC/C,cAAc;IACd,OAAO,CAAC,UAAU,CAAC,CAAiD;cACpD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAWjE,SAAS,CAAC,YAAY,IAAI,IAAI;IAQ9B,wBAAwB;IACxB,OAAO,CAAC,gBAAgB;IAkBxB,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;IA+GhH,+BAA+B;IAC/B,OAAO,CAAC,QAAQ;IAmBhB,OAAO,CAAC,eAAe;IAMvB,OAAO,CAAC,kBAAkB;CAe3B"}
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"}