aws-runtime-bridge 1.1.1 → 1.1.2

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 (97) hide show
  1. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +166 -0
  2. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -0
  3. package/package/aws-client-agent-mcp/dist/agent-client.js +602 -0
  4. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -0
  5. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts +2 -0
  6. package/package/aws-client-agent-mcp/dist/agent-client.test.d.ts.map +1 -0
  7. package/package/aws-client-agent-mcp/dist/agent-client.test.js +534 -0
  8. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +1 -0
  9. package/package/aws-client-agent-mcp/dist/config.d.ts +22 -0
  10. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -0
  11. package/package/aws-client-agent-mcp/dist/config.js +106 -0
  12. package/package/aws-client-agent-mcp/dist/config.js.map +1 -0
  13. package/package/aws-client-agent-mcp/dist/config.test.d.ts +2 -0
  14. package/package/aws-client-agent-mcp/dist/config.test.d.ts.map +1 -0
  15. package/package/aws-client-agent-mcp/dist/config.test.js +139 -0
  16. package/package/aws-client-agent-mcp/dist/config.test.js.map +1 -0
  17. package/package/aws-client-agent-mcp/dist/constants.d.ts +15 -0
  18. package/package/aws-client-agent-mcp/dist/constants.d.ts.map +1 -0
  19. package/package/aws-client-agent-mcp/dist/constants.js +19 -0
  20. package/package/aws-client-agent-mcp/dist/constants.js.map +1 -0
  21. package/package/aws-client-agent-mcp/dist/http-client.d.ts +28 -0
  22. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -0
  23. package/package/aws-client-agent-mcp/dist/http-client.js +96 -0
  24. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -0
  25. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts +2 -0
  26. package/package/aws-client-agent-mcp/dist/http-client.test.d.ts.map +1 -0
  27. package/package/aws-client-agent-mcp/dist/http-client.test.js +228 -0
  28. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +1 -0
  29. package/package/aws-client-agent-mcp/dist/index.d.ts +14 -0
  30. package/package/aws-client-agent-mcp/dist/index.d.ts.map +1 -0
  31. package/package/aws-client-agent-mcp/dist/index.js +30 -0
  32. package/package/aws-client-agent-mcp/dist/index.js.map +1 -0
  33. package/package/aws-client-agent-mcp/dist/logger.d.ts +7 -0
  34. package/package/aws-client-agent-mcp/dist/logger.d.ts.map +1 -0
  35. package/package/aws-client-agent-mcp/dist/logger.js +19 -0
  36. package/package/aws-client-agent-mcp/dist/logger.js.map +1 -0
  37. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +77 -0
  38. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -0
  39. package/package/aws-client-agent-mcp/dist/mcp-server.js +438 -0
  40. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -0
  41. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts +2 -0
  42. package/package/aws-client-agent-mcp/dist/mcp-server.test.d.ts.map +1 -0
  43. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +624 -0
  44. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -0
  45. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts +78 -0
  46. package/package/aws-client-agent-mcp/dist/mcp-tools.d.ts.map +1 -0
  47. package/package/aws-client-agent-mcp/dist/mcp-tools.js +420 -0
  48. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -0
  49. package/package/aws-client-agent-mcp/dist/memory-store.d.ts +61 -0
  50. package/package/aws-client-agent-mcp/dist/memory-store.d.ts.map +1 -0
  51. package/package/aws-client-agent-mcp/dist/memory-store.js +268 -0
  52. package/package/aws-client-agent-mcp/dist/memory-store.js.map +1 -0
  53. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts +2 -0
  54. package/package/aws-client-agent-mcp/dist/memory-store.test.d.ts.map +1 -0
  55. package/package/aws-client-agent-mcp/dist/memory-store.test.js +164 -0
  56. package/package/aws-client-agent-mcp/dist/memory-store.test.js.map +1 -0
  57. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts +87 -0
  58. package/package/aws-client-agent-mcp/dist/message-buffer.d.ts.map +1 -0
  59. package/package/aws-client-agent-mcp/dist/message-buffer.js +185 -0
  60. package/package/aws-client-agent-mcp/dist/message-buffer.js.map +1 -0
  61. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts +2 -0
  62. package/package/aws-client-agent-mcp/dist/message-buffer.test.d.ts.map +1 -0
  63. package/package/aws-client-agent-mcp/dist/message-buffer.test.js +44 -0
  64. package/package/aws-client-agent-mcp/dist/message-buffer.test.js.map +1 -0
  65. package/package/aws-client-agent-mcp/dist/messageContent.d.ts +53 -0
  66. package/package/aws-client-agent-mcp/dist/messageContent.d.ts.map +1 -0
  67. package/package/aws-client-agent-mcp/dist/messageContent.js +125 -0
  68. package/package/aws-client-agent-mcp/dist/messageContent.js.map +1 -0
  69. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts +3 -0
  70. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.d.ts.map +1 -0
  71. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js +50 -0
  72. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.js.map +1 -0
  73. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts +2 -0
  74. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.d.ts.map +1 -0
  75. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js +90 -0
  76. package/package/aws-client-agent-mcp/dist/runtime-launch-binding.test.js.map +1 -0
  77. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts +66 -0
  78. package/package/aws-client-agent-mcp/dist/status-reporter.d.ts.map +1 -0
  79. package/package/aws-client-agent-mcp/dist/status-reporter.js +237 -0
  80. package/package/aws-client-agent-mcp/dist/status-reporter.js.map +1 -0
  81. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts +2 -0
  82. package/package/aws-client-agent-mcp/dist/status-reporter.test.d.ts.map +1 -0
  83. package/package/aws-client-agent-mcp/dist/status-reporter.test.js +19 -0
  84. package/package/aws-client-agent-mcp/dist/status-reporter.test.js.map +1 -0
  85. package/package/aws-client-agent-mcp/dist/types.d.ts +309 -0
  86. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -0
  87. package/package/aws-client-agent-mcp/dist/types.js +9 -0
  88. package/package/aws-client-agent-mcp/dist/types.js.map +1 -0
  89. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +94 -0
  90. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -0
  91. package/package/aws-client-agent-mcp/dist/websocket-client.js +316 -0
  92. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -0
  93. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts +2 -0
  94. package/package/aws-client-agent-mcp/dist/websocket-client.test.d.ts.map +1 -0
  95. package/package/aws-client-agent-mcp/dist/websocket-client.test.js +191 -0
  96. package/package/aws-client-agent-mcp/dist/websocket-client.test.js.map +1 -0
  97. package/package.json +1 -1
@@ -0,0 +1,438 @@
1
+ /**
2
+ * MCP Server 实现
3
+ * 提供 MCP Tools 供 AI Agent 调用
4
+ */
5
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
6
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
7
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
+ import { AgentClient } from "./agent-client.js";
9
+ import { MCP_SERVER_NAME, MCP_SERVER_VERSION, REGISTER_RETRY_INTERVAL_MS, } from "./constants.js";
10
+ import { MessageBuffer } from "./message-buffer.js";
11
+ import { logger } from "./logger.js";
12
+ import { MCP_TOOLS } from "./mcp-tools.js";
13
+ export class McpServer {
14
+ server;
15
+ agentClient;
16
+ messageBuffer;
17
+ constructor() {
18
+ this.agentClient = new AgentClient();
19
+ this.messageBuffer = new MessageBuffer();
20
+ this.server = new Server({
21
+ name: MCP_SERVER_NAME,
22
+ version: MCP_SERVER_VERSION,
23
+ }, {
24
+ capabilities: {
25
+ tools: {},
26
+ },
27
+ });
28
+ this.setupHandlers();
29
+ }
30
+ setupHandlers() {
31
+ this.server.setRequestHandler(ListToolsRequestSchema, async () => {
32
+ return { tools: MCP_TOOLS };
33
+ });
34
+ this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
35
+ const { name, arguments: args } = request.params;
36
+ try {
37
+ const result = await this.handleToolCall(name, args);
38
+ return {
39
+ content: [
40
+ {
41
+ type: "text",
42
+ text: JSON.stringify(result, null, 2),
43
+ },
44
+ ],
45
+ };
46
+ }
47
+ catch (error) {
48
+ const errorMessage = error instanceof Error ? error.message : String(error);
49
+ return {
50
+ content: [
51
+ {
52
+ type: "text",
53
+ text: JSON.stringify({ error: errorMessage }, null, 2),
54
+ },
55
+ ],
56
+ isError: true,
57
+ };
58
+ }
59
+ });
60
+ }
61
+ /**
62
+ * 处理工具调用
63
+ */
64
+ async handleToolCall(name, args) {
65
+ // 报告工具调用状态
66
+ const statusReporter = this.agentClient.getStatusReporter();
67
+ if (statusReporter) {
68
+ statusReporter.reportToolUse(name, args);
69
+ }
70
+ try {
71
+ const result = await this.executeToolCall(name, args);
72
+ // 工具调用完成后,恢复等待输入状态
73
+ if (statusReporter) {
74
+ statusReporter.reportWaitingInput();
75
+ }
76
+ return result;
77
+ }
78
+ catch (error) {
79
+ // 工具调用失败,报告错误状态
80
+ if (statusReporter) {
81
+ statusReporter.reportError();
82
+ }
83
+ throw error;
84
+ }
85
+ }
86
+ /**
87
+ * 执行具体的工具调用
88
+ */
89
+ async executeToolCall(name, args) {
90
+ switch (name) {
91
+ case "get_colleague":
92
+ return await this.agentClient.discoverColleagues();
93
+ case "get_group_rooms":
94
+ return await this.agentClient.discoverGroupRooms();
95
+ case "get_profile": {
96
+ return await this.agentClient.getProfile();
97
+ }
98
+ case "get_status":
99
+ return this.agentClient.getState();
100
+ case "hire_colleague":
101
+ return await this.handleHireColleague(args);
102
+ case "hire_colleagues_batch":
103
+ return await this.handleHireColleaguesBatch(args);
104
+ case "send_group":
105
+ return await this.handleSendGroup(args);
106
+ case "send_private":
107
+ return await this.handleSendPrivate(args);
108
+ case "poll_message":
109
+ return await this.handlePollMessage();
110
+ case "get_message":
111
+ return this.handleGetMessage();
112
+ case "get_dm_history":
113
+ return await this.handleGetDmHistory(args);
114
+ case "get_group_history":
115
+ return await this.handleGetGroupHistory(args);
116
+ case "my_task":
117
+ return await this.agentClient.getMyTasks();
118
+ case "start_task":
119
+ return await this.handleStartTask(args);
120
+ case "submit_task_result":
121
+ return await this.handleSubmitTaskResult(args);
122
+ case "reject_task":
123
+ return await this.handleRejectTask(args);
124
+ case "terminate_task":
125
+ return await this.handleTerminateTask(args);
126
+ default:
127
+ throw new Error(`未知工具: ${name}`);
128
+ }
129
+ }
130
+ // ============ 工具处理方法 ============
131
+ async handleSendGroup(args) {
132
+ if (!args.content || typeof args.content !== "string") {
133
+ throw new Error("content 参数是必需的");
134
+ }
135
+ return await this.agentClient.sendGroupMessage(args.content, args.projectName, args.roomId);
136
+ }
137
+ async handleHireColleague(args) {
138
+ if (!args.workspacePath || typeof args.workspacePath !== "string") {
139
+ throw new Error("workspacePath 参数是必需的");
140
+ }
141
+ return await this.agentClient.hireColleague(args);
142
+ }
143
+ async handleHireColleaguesBatch(args) {
144
+ if (!Array.isArray(args.items) || args.items.length === 0) {
145
+ throw new Error("items 参数是必需的,且至少包含一个招聘项");
146
+ }
147
+ args.items.forEach((item, index) => {
148
+ if (!item.workspacePath || typeof item.workspacePath !== "string") {
149
+ throw new Error(`items[${index}].workspacePath 参数是必需的`);
150
+ }
151
+ });
152
+ return await this.agentClient.hireColleaguesBatch(args);
153
+ }
154
+ async handleSendPrivate(args) {
155
+ if (!args.targetId || typeof args.targetId !== "string") {
156
+ throw new Error("targetId 参数是必需的");
157
+ }
158
+ if (!args.content || typeof args.content !== "string") {
159
+ throw new Error("content 参数是必需的");
160
+ }
161
+ return await this.agentClient.sendDirectMessage(args.targetId, args.content, args.waitReply, args.replyToCallId, args.timeoutMs);
162
+ }
163
+ async handlePollMessage() {
164
+ await this.hydrateUnreadMessagesIfNeeded();
165
+ // 提前获取一次活跃任务列表:只要有流程线任务,就立即返回一条动态系统提醒。
166
+ // 该提醒不进入 MessageBuffer,也不会持久化到服务端。
167
+ const activeTasks = await this.fetchActiveTasks();
168
+ if (activeTasks.length > 0) {
169
+ const messages = this.messageBuffer.get();
170
+ const taskNotification = this.buildTaskNotification(activeTasks);
171
+ messages.directMessages.unshift(taskNotification);
172
+ return {
173
+ directMessages: messages.directMessages,
174
+ groupMessages: messages.groupMessages,
175
+ fromBuffer: true,
176
+ };
177
+ }
178
+ // 设置消息到达回调:当 poll 等待中有消息到达时,立即报告状态变化
179
+ const statusReporter = this.agentClient.getStatusReporter();
180
+ if (statusReporter) {
181
+ this.messageBuffer.setOnMessageArrived(() => {
182
+ logger.info("[McpServer] poll 等待中收到消息,立即报告思考状态");
183
+ statusReporter.reportThinking();
184
+ });
185
+ }
186
+ const messages = await this.messageBuffer.poll();
187
+ // 清除消息到达回调
188
+ this.messageBuffer.setOnMessageArrived(null);
189
+ return {
190
+ directMessages: messages.directMessages,
191
+ groupMessages: messages.groupMessages,
192
+ fromBuffer: true,
193
+ };
194
+ }
195
+ /**
196
+ * 获取当前 Agent 的活跃任务(PENDING 待处理 / PROCESSING 处理中)列表
197
+ */
198
+ async fetchActiveTasks() {
199
+ try {
200
+ const tasks = await this.agentClient.getMyTasks();
201
+ if (!Array.isArray(tasks) || tasks.length === 0)
202
+ return [];
203
+ return tasks.filter((t) => t &&
204
+ typeof t === "object" &&
205
+ (t.nodeStatus === "PENDING" ||
206
+ t.nodeStatus === "PROCESSING"));
207
+ }
208
+ catch (error) {
209
+ logger.warn("[McpServer] 获取活跃任务失败:", error);
210
+ return [];
211
+ }
212
+ }
213
+ /**
214
+ * 根据活跃任务列表构建系统提示 DirectMessage。
215
+ * 注意:此系统提示无需持久化,每次 poll_message 时动态生成。
216
+ */
217
+ buildTaskNotification(activeTasks) {
218
+ const pendingTasks = activeTasks.filter((t) => t.nodeStatus === "PENDING");
219
+ const processingTasks = activeTasks.filter((t) => t.nodeStatus === "PROCESSING");
220
+ const parts = [];
221
+ if (pendingTasks.length > 0) {
222
+ const pendingNames = pendingTasks
223
+ .map((t) => t.taskName || "未知任务")
224
+ .join("、");
225
+ parts.push(`${pendingTasks.length} 个待处理任务:${pendingNames}`);
226
+ }
227
+ if (processingTasks.length > 0) {
228
+ const processingNames = processingTasks
229
+ .map((t) => t.taskName || "未知任务")
230
+ .join("、");
231
+ parts.push(`${processingTasks.length} 个处理中任务:${processingNames}`);
232
+ }
233
+ const contentParts = parts.join(";");
234
+ const promptParts = [];
235
+ if (pendingTasks.length > 0) {
236
+ promptParts.push("你有一个或多个流程线任务等待处理,请使用 my_task 工具获取任务详情,并使用 start_task 开始处理");
237
+ }
238
+ if (processingTasks.length > 0) {
239
+ promptParts.push("你有一个或多个正在处理中的任务,请继续完成或使用 submit_task_result 提交结果");
240
+ }
241
+ logger.info(`[McpServer] 检测到 ${pendingTasks.length} 个待处理任务,${processingTasks.length} 个处理中任务,已注入系统提示消息`);
242
+ return {
243
+ msgId: `task-notify-${Date.now()}`,
244
+ senderId: "MCP-System",
245
+ senderName: "系统",
246
+ receiverId: this.agentClient.getState()?.agentId || "",
247
+ content: `你有任务需要关注!${contentParts}。${promptParts.join(";")}。`,
248
+ requireReply: false,
249
+ prompt: `这是一条系统任务提醒消息(自动生成,无需持久化)。${promptParts.join(";")}。`,
250
+ timestamp: new Date().toISOString(),
251
+ };
252
+ }
253
+ async handleGetMessage() {
254
+ await this.hydrateUnreadMessagesIfNeeded();
255
+ const activeTasks = await this.fetchActiveTasks();
256
+ const messages = this.messageBuffer.get();
257
+ if (activeTasks.length > 0) {
258
+ const taskNotification = this.buildTaskNotification(activeTasks);
259
+ messages.directMessages.unshift(taskNotification);
260
+ }
261
+ return {
262
+ directMessages: messages.directMessages,
263
+ groupMessages: messages.groupMessages,
264
+ fromBuffer: this.messageBuffer.size() > 0,
265
+ };
266
+ }
267
+ /**
268
+ * 在本地缓冲区为空时,从服务端补拉离线期间积累的未读消息。
269
+ * 这样 Agent 重启或重连后,poll_message/get_message 仍能取到持久化未读消息。
270
+ */
271
+ async hydrateUnreadMessagesIfNeeded() {
272
+ if (this.messageBuffer.size() > 0) {
273
+ return;
274
+ }
275
+ try {
276
+ const unreadMessages = await this.agentClient.fetchUnreadMessages();
277
+ const filteredGroupMessages = unreadMessages.groupMessages.filter((message) => !this.isSelfSentGroupMessage(message));
278
+ if (unreadMessages.directMessages.length === 0 &&
279
+ unreadMessages.groupMessages.length === 0) {
280
+ return;
281
+ }
282
+ unreadMessages.directMessages.forEach((message) => {
283
+ this.messageBuffer.push(message);
284
+ });
285
+ filteredGroupMessages.forEach((message) => {
286
+ this.messageBuffer.push(message);
287
+ });
288
+ logger.info(`[McpServer] 已补拉未读消息,私聊: ${unreadMessages.directMessages.length},群聊: ${filteredGroupMessages.length}`);
289
+ }
290
+ catch (error) {
291
+ logger.error("[McpServer] 补拉未读消息失败:", error);
292
+ }
293
+ }
294
+ async handleGetDmHistory(args) {
295
+ return await this.agentClient.getDmHistory(args.targetUserId, args.limit, args.since);
296
+ }
297
+ async handleGetGroupHistory(args) {
298
+ return await this.agentClient.getGroupHistory(args.limit, args.roomId, args.since);
299
+ }
300
+ async handleSubmitTaskResult(args) {
301
+ if (!args.nodeId || typeof args.nodeId !== "string") {
302
+ throw new Error("nodeId 参数是必需的");
303
+ }
304
+ if (!args.outputPayload || typeof args.outputPayload !== "string") {
305
+ throw new Error("outputPayload 参数是必需的");
306
+ }
307
+ return await this.agentClient.submitTaskResult(args.nodeId, args.outputPayload);
308
+ }
309
+ async handleStartTask(args) {
310
+ if (!args.nodeId || typeof args.nodeId !== "string") {
311
+ throw new Error("nodeId 参数是必需的");
312
+ }
313
+ return await this.agentClient.startTask(args.nodeId);
314
+ }
315
+ async handleRejectTask(args) {
316
+ if (!args.nodeId || typeof args.nodeId !== "string") {
317
+ throw new Error("nodeId 参数是必需的");
318
+ }
319
+ if (!args.reason || typeof args.reason !== "string") {
320
+ throw new Error("reason 参数是必需的");
321
+ }
322
+ return await this.agentClient.rejectTask(args.nodeId, args.reason);
323
+ }
324
+ async handleTerminateTask(args) {
325
+ if (!args.taskInstanceId || typeof args.taskInstanceId !== "string") {
326
+ throw new Error("taskInstanceId 参数是必需的");
327
+ }
328
+ if (!args.reason || typeof args.reason !== "string") {
329
+ throw new Error("reason 参数是必需的");
330
+ }
331
+ return await this.agentClient.terminateTask(args.taskInstanceId, args.reason);
332
+ }
333
+ /**
334
+ * 处理接收到的消息(WebSocket 推送)
335
+ */
336
+ async handleIncomingMessage(message) {
337
+ if (!this.shouldBufferIncomingMessage(message)) {
338
+ logger.info("[McpServer] 忽略当前 Agent 自己发送的群消息,避免 get_message 回环");
339
+ return undefined;
340
+ }
341
+ logger.info(`[McpServer] 收到消息: ${message.content?.substring(0, 50) || "(无内容)"}`);
342
+ this.messageBuffer.push(message);
343
+ return undefined;
344
+ }
345
+ /**
346
+ * 判断消息是否应该进入本地缓冲区。
347
+ * 当前仅过滤当前 Agent 自己发送的群消息,避免 send_group 后被 get_message 再次读到。
348
+ */
349
+ shouldBufferIncomingMessage(message) {
350
+ if (!this.isGroupMessage(message)) {
351
+ return true;
352
+ }
353
+ return !this.isSelfSentGroupMessage(message);
354
+ }
355
+ /**
356
+ * 判断是否为群消息。
357
+ * 通过 msgId 类型进行收窄,便于后续安全执行群消息专属过滤逻辑。
358
+ */
359
+ isGroupMessage(message) {
360
+ return typeof message.msgId === "number";
361
+ }
362
+ /**
363
+ * 判断群消息是否由当前 Agent 自己发送。
364
+ * 主流程:读取当前 Agent 状态 -> 比较 senderId -> 返回过滤结果。
365
+ */
366
+ isSelfSentGroupMessage(message) {
367
+ const currentAgentId = this.getCurrentAgentId();
368
+ return !!currentAgentId && message.senderId === currentAgentId;
369
+ }
370
+ /**
371
+ * 安全读取当前 Agent ID。
372
+ * 测试替身或异常场景下如果 agentClient 未提供 getState,则返回 null,避免影响消息主流程。
373
+ */
374
+ getCurrentAgentId() {
375
+ const maybeAgentClient = this.agentClient;
376
+ if (typeof maybeAgentClient.getState !== "function") {
377
+ return null;
378
+ }
379
+ return maybeAgentClient.getState().agentId ?? null;
380
+ }
381
+ // ============ 生命周期 ============
382
+ async start() {
383
+ const transport = new StdioServerTransport();
384
+ await this.server.connect(transport);
385
+ await this.agentClient.initialize();
386
+ logger.info("[McpServer] MCP Server 已启动,等待连接...");
387
+ logger.info(`[McpServer] 可用工具: ${MCP_TOOLS.map((t) => t.name).join(", ")}`);
388
+ logger.info(`[McpServer] 工作目录: ${process.env.AWS_WORKSPACE_PATH || process.cwd()}`);
389
+ await this.autoRegister();
390
+ }
391
+ async autoRegister() {
392
+ const agentConfig = this.agentClient.getAgentConfig();
393
+ logger.info(`[McpServer] 角色: "${agentConfig.roleName}"`);
394
+ logger.info(`[McpServer] AgentID: "${agentConfig.agentId || "(自动分配)"}"`);
395
+ logger.info("[McpServer] 正在请求调度中心注册...");
396
+ let retryCount = 0;
397
+ while (true) {
398
+ try {
399
+ const result = await this.agentClient.register();
400
+ logger.info(`[McpServer] 注册成功: ${result.displayName} (${result.agentId})`);
401
+ logger.info(`[McpServer] 状态: ${result.status}`);
402
+ // 注册成功后自动启动消息监听
403
+ this.startListeningInternal();
404
+ logger.info("[McpServer] 消息监听已自动启动");
405
+ // 报告 Agent 已启动并等待输入
406
+ const statusReporter = this.agentClient.getStatusReporter();
407
+ if (statusReporter) {
408
+ statusReporter.reportWaitingInput();
409
+ }
410
+ return;
411
+ }
412
+ catch (error) {
413
+ const errorMessage = error instanceof Error ? error.message : String(error);
414
+ retryCount++;
415
+ logger.warn(`[McpServer] 注册失败,等待重试... (${retryCount}次): ${errorMessage}`);
416
+ await this.delay(REGISTER_RETRY_INTERVAL_MS);
417
+ }
418
+ }
419
+ }
420
+ /**
421
+ * 内部方法:启动消息监听(不返回 MCP 响应)
422
+ */
423
+ startListeningInternal() {
424
+ logger.info("[McpServer] startListeningInternal 被调用");
425
+ this.agentClient.start(this.handleIncomingMessage.bind(this), {
426
+ pollMode: false,
427
+ profileHandler: (profile) => {
428
+ // 收到 Profile 信息后,存储到消息缓冲区
429
+ logger.info(`[McpServer] profileHandler 被调用,displayName: ${profile.displayName}`);
430
+ this.messageBuffer.setProfileMessage(profile);
431
+ },
432
+ });
433
+ }
434
+ delay(ms) {
435
+ return new Promise((resolve) => setTimeout(resolve, ms));
436
+ }
437
+ }
438
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mcp-server.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.test.d.ts","sourceRoot":"","sources":["../src/mcp-server.test.ts"],"names":[],"mappings":""}