aws-runtime-bridge 1.7.27 → 1.7.29

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 (69) hide show
  1. package/dist/adapter/ClaudeSdkAdapter.d.ts +5 -0
  2. package/dist/adapter/ClaudeSdkAdapter.d.ts.map +1 -1
  3. package/dist/adapter/ClaudeSdkAdapter.js +20 -6
  4. package/dist/adapter/ClaudeSdkAdapter.test.js +43 -0
  5. package/dist/adapter/CodexSdkAdapter.js +1 -1
  6. package/dist/adapter/OpencodeSdkAdapter.js +2 -2
  7. package/dist/adapter/types.d.ts +13 -4
  8. package/dist/adapter/types.d.ts.map +1 -1
  9. package/dist/index.js +101 -77
  10. package/dist/routes/sessions.js +16 -0
  11. package/dist/routes/terminal.d.ts +19 -1
  12. package/dist/routes/terminal.d.ts.map +1 -1
  13. package/dist/routes/terminal.js +62 -16
  14. package/dist/routes/terminal.test.js +25 -1
  15. package/dist/services/aws-client-agent-mcp.d.ts.map +1 -1
  16. package/dist/services/aws-client-agent-mcp.js +22 -3
  17. package/dist/services/mcp-launch-binding-queue.d.ts.map +1 -1
  18. package/dist/services/mcp-launch-binding-queue.js +8 -1
  19. package/dist/services/mcp-launch-binding-queue.test.js +11 -0
  20. package/dist/services/orphan-monitor.d.ts.map +1 -1
  21. package/dist/services/orphan-monitor.js +16 -5
  22. package/dist/services/runtime-binding.d.ts.map +1 -1
  23. package/dist/services/runtime-binding.js +8 -1
  24. package/dist/services/runtime-binding.test.js +15 -0
  25. package/dist/services/runtime-lifecycle-policy.d.ts +26 -0
  26. package/dist/services/runtime-lifecycle-policy.d.ts.map +1 -0
  27. package/dist/services/runtime-lifecycle-policy.js +34 -0
  28. package/dist/services/runtime-lifecycle-policy.test.d.ts +2 -0
  29. package/dist/services/runtime-lifecycle-policy.test.d.ts.map +1 -0
  30. package/dist/services/runtime-lifecycle-policy.test.js +41 -0
  31. package/dist/services/terminal-persistence.d.ts +12 -0
  32. package/dist/services/terminal-persistence.d.ts.map +1 -1
  33. package/dist/services/terminal-persistence.js +23 -0
  34. package/dist/services/terminal-persistence.test.js +18 -0
  35. package/dist/types.d.ts +8 -0
  36. package/dist/types.d.ts.map +1 -1
  37. package/package/aws-client-agent-mcp/dist/agent-client.d.ts +5 -0
  38. package/package/aws-client-agent-mcp/dist/agent-client.d.ts.map +1 -1
  39. package/package/aws-client-agent-mcp/dist/agent-client.js +30 -3
  40. package/package/aws-client-agent-mcp/dist/agent-client.js.map +1 -1
  41. package/package/aws-client-agent-mcp/dist/agent-client.test.js +118 -0
  42. package/package/aws-client-agent-mcp/dist/agent-client.test.js.map +1 -1
  43. package/package/aws-client-agent-mcp/dist/config.d.ts.map +1 -1
  44. package/package/aws-client-agent-mcp/dist/config.js +10 -1
  45. package/package/aws-client-agent-mcp/dist/config.js.map +1 -1
  46. package/package/aws-client-agent-mcp/dist/config.test.js +10 -0
  47. package/package/aws-client-agent-mcp/dist/config.test.js.map +1 -1
  48. package/package/aws-client-agent-mcp/dist/http-client.d.ts +5 -0
  49. package/package/aws-client-agent-mcp/dist/http-client.d.ts.map +1 -1
  50. package/package/aws-client-agent-mcp/dist/http-client.js +47 -3
  51. package/package/aws-client-agent-mcp/dist/http-client.js.map +1 -1
  52. package/package/aws-client-agent-mcp/dist/http-client.test.js +344 -9
  53. package/package/aws-client-agent-mcp/dist/http-client.test.js.map +1 -1
  54. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts +4 -3
  55. package/package/aws-client-agent-mcp/dist/mcp-server.d.ts.map +1 -1
  56. package/package/aws-client-agent-mcp/dist/mcp-server.js +28 -15
  57. package/package/aws-client-agent-mcp/dist/mcp-server.js.map +1 -1
  58. package/package/aws-client-agent-mcp/dist/mcp-server.test.js +107 -11
  59. package/package/aws-client-agent-mcp/dist/mcp-server.test.js.map +1 -1
  60. package/package/aws-client-agent-mcp/dist/mcp-tools.js +1 -1
  61. package/package/aws-client-agent-mcp/dist/mcp-tools.js.map +1 -1
  62. package/package/aws-client-agent-mcp/dist/types.d.ts +10 -1
  63. package/package/aws-client-agent-mcp/dist/types.d.ts.map +1 -1
  64. package/package/aws-client-agent-mcp/dist/types.js.map +1 -1
  65. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts +5 -0
  66. package/package/aws-client-agent-mcp/dist/websocket-client.d.ts.map +1 -1
  67. package/package/aws-client-agent-mcp/dist/websocket-client.js +26 -0
  68. package/package/aws-client-agent-mcp/dist/websocket-client.js.map +1 -1
  69. package/package.json +1 -1
@@ -7,6 +7,13 @@ const DEFAULT_MCP_HTTP_REQUEST_TIMEOUT_MS = 120_000;
7
7
  function repairDuplicatePort(raw) {
8
8
  return raw.replace(/^((?:https?|wss?):\/\/(?:\[[^\]]+\]|[^/:?#]+):\d+):\d+(?=\/|$)/i, "$1");
9
9
  }
10
+ function canonicalizeSchedulerHostname(hostname) {
11
+ const normalized = hostname.toLowerCase();
12
+ if (normalized === "localhost" || normalized === "::1" || normalized === "[::1]") {
13
+ return "127.0.0.1";
14
+ }
15
+ return normalized;
16
+ }
10
17
  function normalizeMcpHttpUrl(value, options = {}) {
11
18
  const raw = String(value || "").trim();
12
19
  if (!raw) {
@@ -24,7 +31,7 @@ function normalizeMcpHttpUrl(value, options = {}) {
24
31
  else {
25
32
  url.protocol = url.protocol.toLowerCase();
26
33
  }
27
- url.hostname = url.hostname.toLowerCase();
34
+ url.hostname = canonicalizeSchedulerHostname(url.hostname);
28
35
  const basePath = options.fromAgentWebSocketUrl
29
36
  ? url.pathname.replace(/\/ws\/agent\/?$/, "")
30
37
  : url.pathname;
@@ -54,16 +61,27 @@ export class HttpClient {
54
61
  */
55
62
  async callTool(toolName, args) {
56
63
  await this.ensureRuntimeAccessToken();
64
+ const rejectedRuntimeAccessToken = this.serverConfig.runtimeAccessToken || "";
57
65
  let response = await this.executeToolRequest(toolName, args);
58
66
  if (response.status === 401 && this.serverConfig.runtimeBridgeBaseUrl) {
59
- logger.warn(`[HttpClient] MCP Tool ${toolName} 返回 401,正在强制刷新 runtime token 后重试一次`);
60
- await this.requestRuntimeAccessToken(true);
67
+ if (rejectedRuntimeAccessToken &&
68
+ this.serverConfig.runtimeAccessToken &&
69
+ this.serverConfig.runtimeAccessToken !== rejectedRuntimeAccessToken) {
70
+ logger.warn(`[HttpClient] MCP Tool ${toolName} 返回 401,检测到 runtime token 已被并发刷新,直接使用新 token 重试一次`);
71
+ }
72
+ else {
73
+ logger.warn(`[HttpClient] MCP Tool ${toolName} 返回 401,正在强制刷新 runtime token 后重试一次`);
74
+ await this.requestRuntimeAccessToken(true);
75
+ }
61
76
  response = await this.executeToolRequest(toolName, args);
62
77
  }
63
78
  if (!response.ok) {
64
79
  throw new Error(`MCP tool call failed: ${response.status} ${response.statusText}`);
65
80
  }
66
81
  const result = (await response.json());
82
+ if (typeof result.error === "string" && result.error.trim().length > 0) {
83
+ throw new Error(`MCP tool ${toolName} failed: ${result.error}`);
84
+ }
67
85
  return result;
68
86
  }
69
87
  /**
@@ -140,6 +158,32 @@ export class HttpClient {
140
158
  * 主流程:向 loopback bridge 请求 token -> 校验响应载荷 -> 写回共享 serverConfig 供 HTTP 与 WebSocket 复用。
141
159
  */
142
160
  async requestRuntimeAccessToken(forceRefresh) {
161
+ while (true) {
162
+ const activeRefresh = this.serverConfig.runtimeAccessTokenRefreshPromise;
163
+ if (!activeRefresh) {
164
+ break;
165
+ }
166
+ const activeRefreshForce = this.serverConfig.runtimeAccessTokenRefreshForce;
167
+ await activeRefresh;
168
+ if (!forceRefresh || activeRefreshForce || this.serverConfig.runtimeAccessTokenRefreshPromise) {
169
+ return;
170
+ }
171
+ }
172
+ this.serverConfig.runtimeAccessTokenRefreshForce = forceRefresh;
173
+ this.serverConfig.runtimeAccessTokenRefreshPromise = this.performRuntimeAccessTokenRequest(forceRefresh);
174
+ try {
175
+ await this.serverConfig.runtimeAccessTokenRefreshPromise;
176
+ }
177
+ finally {
178
+ this.serverConfig.runtimeAccessTokenRefreshPromise = undefined;
179
+ this.serverConfig.runtimeAccessTokenRefreshForce = undefined;
180
+ }
181
+ }
182
+ /**
183
+ * 执行实际 runtime token 请求。
184
+ * 主流程:由 requestRuntimeAccessToken 做单飞保护 -> 当前方法只负责调用 bridge 并写回共享 token。
185
+ */
186
+ async performRuntimeAccessTokenRequest(forceRefresh) {
143
187
  const runtimeBridgeBaseUrl = this.serverConfig.runtimeBridgeBaseUrl;
144
188
  if (!runtimeBridgeBaseUrl) {
145
189
  throw new Error("runtimeBridgeBaseUrl is required");
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAarC,MAAM,mCAAmC,GAAG,OAAO,CAAC;AAEpD,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAChB,iEAAiE,EACjE,IAAI,CACL,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAc,EAAE,UAA+C,EAAE;IAC5F,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC9B,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;YAC3B,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YACnC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC5C,CAAC;QACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,OAAO,CAAC,qBAAqB;YAC5C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;YAC7C,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC;QACjB,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC3C,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC;QAC9C,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;QAChB,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;QACd,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,UAAU,GAAG,CAAC,OAAO,CAAC,qBAAqB;YAC/C,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;YAC1C,CAAC,CAAC,QAAQ,CACX,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,WAAW,CAAC;IAClF,CAAC;AACH,CAAC;AAED,MAAM,OAAO,UAAU;IACb,YAAY,CAAe;IAC3B,UAAU,CAAS;IAE3B,YAAY,YAA0B;QACpC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,IAA6B;QAE7B,MAAM,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAEtC,IAAI,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAE7D,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,oBAAoB,EAAE,CAAC;YACtE,MAAM,CAAC,IAAI,CACT,yBAAyB,QAAQ,oCAAoC,CACtE,CAAC;YACF,MAAM,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;YAC3C,QAAQ,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,yBAAyB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAClE,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAoB,CAAC;QAE1D,OAAO,MAAW,CAAC;IACrB,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,kBAAkB,CAC9B,QAAgB,EAChB,IAA6B;QAE7B,OAAO,MAAM,IAAI,CAAC,gBAAgB,CAChC,IAAI,CAAC,UAAU,EACf;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACnC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,IAAI;aAChB,CAAC;SACH,EACD,YAAY,QAAQ,EAAE,CACvB,CAAC;IACJ,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,gBAAgB,CAC5B,GAAW,EACX,IAAiB,EACjB,aAAqB;QAErB,MAAM,SAAS,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;QAEhE,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;gBACtB,GAAG,IAAI;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,IAAI,KAAK,CAAC,GAAG,aAAa,oBAAoB,SAAS,IAAI,CAAC,CAAC;YACrE,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAEO,uBAAuB;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC;QAC7D,IACE,OAAO,UAAU,KAAK,QAAQ;YAC9B,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC;YAC3B,UAAU,GAAG,CAAC,EACd,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QACD,OAAO,mCAAmC,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACK,mBAAmB;QACzB,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;SACnC,CAAC;QAEF,IAAI,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;YACzC,OAAO,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;YAClE,OAAO,CAAC,aAAa;gBACnB,UAAU,IAAI,CAAC,YAAY,CAAC,kBAAkB,EAAE,CAAC;QACrD,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,KAAK,CAAC,wBAAwB;QACpC,IACE,IAAI,CAAC,YAAY,CAAC,kBAAkB;YACpC,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAoB,EACvC,CAAC;YACD,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB,CAAC,YAAqB;QAC3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC;QACpE,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,gCAAgC,CAAC;QACvF,MAAM,CAAC,IAAI,CACT,YAAY;YACV,CAAC,CAAC,iEAAiE;YACnE,CAAC,CAAC,wEAAwE,CAC7E,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC1C,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,MAAM;gBAChC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,SAAS;gBACtC,YAAY;aACb,CAAC;SACH,EACD,uBAAuB,CACxB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,IAAI,KAAK,CACb,wDAAwD,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CACtI,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAgC,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,6CAA6C,CAAC,CAAC;QAClF,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IACpE,CAAC;IAED;;OAEG;IACK,iBAAiB;QACvB,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;QAChD,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YACnD,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;QAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;YACrE,qBAAqB,EAAE,IAAI;SAC5B,CAAC,CAAC;QACH,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"http-client.js","sourceRoot":"","sources":["../src/http-client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
1
  import assert from 'node:assert/strict';
2
+ import { EventEmitter } from 'node:events';
2
3
  import { afterEach, beforeEach, describe, it, mock } from 'node:test';
4
+ import WebSocket from 'ws';
3
5
  import { HttpClient } from './http-client.js';
6
+ import { WebSocketClient } from './websocket-client.js';
7
+ class FakeSocket extends EventEmitter {
8
+ readyState = WebSocket.CONNECTING;
9
+ send() { }
10
+ close() {
11
+ this.readyState = WebSocket.CLOSED;
12
+ }
13
+ terminate() {
14
+ this.readyState = WebSocket.CLOSED;
15
+ }
16
+ }
4
17
  describe('HttpClient', () => {
5
18
  const originalFetch = global.fetch;
6
19
  let fetchCalls = [];
@@ -62,7 +75,7 @@ describe('HttpClient', () => {
62
75
  maxReconnectAttempts: -1,
63
76
  };
64
77
  const client = new HttpClient(config);
65
- assert.equal(client.getMcpHttpUrl(), 'http://localhost:8080/mcp/call');
78
+ assert.equal(client.getMcpHttpUrl(), 'http://127.0.0.1:8080/mcp/call');
66
79
  });
67
80
  it('derives HTTP URL from WebSocket URL (wss://)', () => {
68
81
  const config = {
@@ -83,7 +96,7 @@ describe('HttpClient', () => {
83
96
  mcpHttpUrl: '',
84
97
  };
85
98
  const client = new HttpClient(config);
86
- assert.equal(client.getMcpHttpUrl(), 'http://localhost:8080/mcp/call');
99
+ assert.equal(client.getMcpHttpUrl(), 'http://127.0.0.1:8080/mcp/call');
87
100
  });
88
101
  it('handles whitespace-only mcpHttpUrl', () => {
89
102
  const config = {
@@ -94,7 +107,7 @@ describe('HttpClient', () => {
94
107
  mcpHttpUrl: ' ',
95
108
  };
96
109
  const client = new HttpClient(config);
97
- assert.equal(client.getMcpHttpUrl(), 'http://localhost:8080/mcp/call');
110
+ assert.equal(client.getMcpHttpUrl(), 'http://127.0.0.1:8080/mcp/call');
98
111
  });
99
112
  it('repairs duplicated ports from configured mcpHttpUrl', () => {
100
113
  const config = {
@@ -142,7 +155,7 @@ describe('HttpClient', () => {
142
155
  await client.callTool('test-tool', { arg1: 'value1' });
143
156
  assert.equal(fetchCalls.length, 1);
144
157
  const [url, options] = fetchCalls[0];
145
- assert.equal(url, 'http://localhost:8080/mcp/call');
158
+ assert.equal(url, 'http://127.0.0.1:8080/mcp/call');
146
159
  assert.equal(options.method, 'POST');
147
160
  assert.equal(options.headers['Content-Type'], 'application/json');
148
161
  assert.equal(options.headers['X-Runtime-Token'], 'runtime-token');
@@ -192,7 +205,7 @@ describe('HttpClient', () => {
192
205
  });
193
206
  await assert.rejects(() => client.callTool('test-tool', {}), /MCP tool call failed: 500 Internal Server Error/);
194
207
  });
195
- it('returns structured error payload when result contains error field', async () => {
208
+ it('throws a clear tool error when result contains error field', async () => {
196
209
  const config = {
197
210
  serverUrl: 'ws://localhost:8080/ws/agent',
198
211
  heartbeatInterval: 15000,
@@ -204,8 +217,7 @@ describe('HttpClient', () => {
204
217
  ok: true,
205
218
  json: async () => ({ error: 'Tool execution failed' }),
206
219
  });
207
- const result = await client.callTool('test-tool', {});
208
- assert.deepEqual(result, { error: 'Tool execution failed' });
220
+ await assert.rejects(() => client.callTool('test-tool', {}), /MCP tool test-tool failed: Tool execution failed/);
209
221
  });
210
222
  it('handles 401 unauthorized response', async () => {
211
223
  const config = {
@@ -235,7 +247,7 @@ describe('HttpClient', () => {
235
247
  const client = new HttpClient(config);
236
248
  global.fetch = async (url, options) => {
237
249
  fetchCalls.push([url.toString(), options]);
238
- if (url.toString() === 'http://localhost:8080/mcp/call' && fetchCalls.length === 1) {
250
+ if (url.toString() === 'http://127.0.0.1:8080/mcp/call' && fetchCalls.length === 1) {
239
251
  return {
240
252
  ok: false,
241
253
  status: 401,
@@ -270,6 +282,329 @@ describe('HttpClient', () => {
270
282
  assert.equal(fetchCalls[2][1].headers['X-Runtime-Token'], 'fresh-token');
271
283
  assert.equal(config.runtimeAccessToken, 'fresh-token');
272
284
  });
285
+ it('shares one forced runtime token refresh across concurrent 401 responses', async () => {
286
+ const config = {
287
+ serverUrl: 'ws://localhost:8080/ws/agent',
288
+ heartbeatInterval: 15000,
289
+ reconnectInterval: 200,
290
+ maxReconnectAttempts: -1,
291
+ userId: 'user-1',
292
+ runtimeAccessToken: 'stale-token',
293
+ runtimeBridgeBaseUrl: 'http://127.0.0.1:18081',
294
+ };
295
+ const client = new HttpClient(config);
296
+ const staleTokenCalls = new Set();
297
+ global.fetch = async (url, options) => {
298
+ fetchCalls.push([url.toString(), options]);
299
+ if (url.toString() === 'http://127.0.0.1:18081/runtime/binding/request-token') {
300
+ await new Promise((resolve) => setTimeout(resolve, 10));
301
+ return {
302
+ ok: true,
303
+ status: 200,
304
+ statusText: 'OK',
305
+ json: async () => ({ ok: true, runtimeAccessToken: 'fresh-token' }),
306
+ };
307
+ }
308
+ const body = JSON.parse(String(options?.body || '{}'));
309
+ const token = options.headers['X-Runtime-Token'];
310
+ if (token === 'stale-token') {
311
+ staleTokenCalls.add(body.tool || '');
312
+ return {
313
+ ok: false,
314
+ status: 401,
315
+ statusText: 'Unauthorized',
316
+ };
317
+ }
318
+ return {
319
+ ok: true,
320
+ status: 200,
321
+ statusText: 'OK',
322
+ json: async () => ({ tool: body.tool, token }),
323
+ };
324
+ };
325
+ const [first, second] = await Promise.all([
326
+ client.callTool('get_memory_stats', { agentId: 'agent-1' }),
327
+ client.callTool('discover_group_rooms', { agentId: 'agent-1' }),
328
+ ]);
329
+ assert.deepEqual(first, { tool: 'get_memory_stats', token: 'fresh-token' });
330
+ assert.deepEqual(second, { tool: 'discover_group_rooms', token: 'fresh-token' });
331
+ assert.deepEqual(staleTokenCalls, new Set(['get_memory_stats', 'discover_group_rooms']));
332
+ assert.equal(fetchCalls.filter(([url]) => url === 'http://127.0.0.1:18081/runtime/binding/request-token').length, 1);
333
+ assert.equal(config.runtimeAccessToken, 'fresh-token');
334
+ });
335
+ it('shares one initial runtime token request across concurrent calls without a token', async () => {
336
+ const config = {
337
+ serverUrl: 'ws://localhost:8080/ws/agent',
338
+ heartbeatInterval: 15000,
339
+ reconnectInterval: 200,
340
+ maxReconnectAttempts: -1,
341
+ userId: 'user-1',
342
+ runtimeBridgeBaseUrl: 'http://127.0.0.1:18081',
343
+ };
344
+ const client = new HttpClient(config);
345
+ global.fetch = async (url, options) => {
346
+ fetchCalls.push([url.toString(), options]);
347
+ if (url.toString() === 'http://127.0.0.1:18081/runtime/binding/request-token') {
348
+ await new Promise((resolve) => setTimeout(resolve, 10));
349
+ return {
350
+ ok: true,
351
+ status: 200,
352
+ statusText: 'OK',
353
+ json: async () => ({ ok: true, runtimeAccessToken: 'startup-token' }),
354
+ };
355
+ }
356
+ const body = JSON.parse(String(options?.body || '{}'));
357
+ return {
358
+ ok: true,
359
+ status: 200,
360
+ statusText: 'OK',
361
+ json: async () => ({ tool: body.tool, token: options.headers['X-Runtime-Token'] }),
362
+ };
363
+ };
364
+ const [first, second] = await Promise.all([
365
+ client.callTool('get_memory_stats', { agentId: 'agent-1' }),
366
+ client.callTool('discover_group_rooms', { agentId: 'agent-1' }),
367
+ ]);
368
+ assert.deepEqual(first, { tool: 'get_memory_stats', token: 'startup-token' });
369
+ assert.deepEqual(second, { tool: 'discover_group_rooms', token: 'startup-token' });
370
+ assert.equal(fetchCalls.filter(([url]) => url === 'http://127.0.0.1:18081/runtime/binding/request-token').length, 1);
371
+ assert.equal(fetchCalls[0][1].body, JSON.stringify({
372
+ userId: 'user-1',
373
+ serverUrl: 'ws://localhost:8080/ws/agent',
374
+ forceRefresh: false,
375
+ }));
376
+ assert.equal(config.runtimeAccessToken, 'startup-token');
377
+ });
378
+ it('clears failed runtime token refresh so later calls can retry', async () => {
379
+ const config = {
380
+ serverUrl: 'ws://localhost:8080/ws/agent',
381
+ heartbeatInterval: 15000,
382
+ reconnectInterval: 200,
383
+ maxReconnectAttempts: -1,
384
+ userId: 'user-1',
385
+ runtimeBridgeBaseUrl: 'http://127.0.0.1:18081',
386
+ };
387
+ const client = new HttpClient(config);
388
+ let tokenRequestCount = 0;
389
+ global.fetch = async (url, options) => {
390
+ fetchCalls.push([url.toString(), options]);
391
+ if (url.toString() === 'http://127.0.0.1:18081/runtime/binding/request-token') {
392
+ tokenRequestCount += 1;
393
+ if (tokenRequestCount === 1) {
394
+ return {
395
+ ok: false,
396
+ status: 503,
397
+ statusText: 'Service Unavailable',
398
+ text: async () => 'bridge unavailable',
399
+ };
400
+ }
401
+ return {
402
+ ok: true,
403
+ status: 200,
404
+ statusText: 'OK',
405
+ json: async () => ({ ok: true, runtimeAccessToken: 'recovered-token' }),
406
+ };
407
+ }
408
+ return {
409
+ ok: true,
410
+ status: 200,
411
+ statusText: 'OK',
412
+ json: async () => ({ token: options.headers['X-Runtime-Token'] }),
413
+ };
414
+ };
415
+ await assert.rejects(() => client.callTool('get_memory_stats', { agentId: 'agent-1' }), /Failed to request runtime token from runtime-bridge: 503 Service Unavailable - bridge unavailable/);
416
+ const result = await client.callTool('get_memory_stats', { agentId: 'agent-1' });
417
+ assert.deepEqual(result, { token: 'recovered-token' });
418
+ assert.equal(tokenRequestCount, 2);
419
+ assert.equal(config.runtimeAccessToken, 'recovered-token');
420
+ });
421
+ it('shares one runtime token refresh between HTTP tools and websocket recovery', async () => {
422
+ const config = {
423
+ serverUrl: 'ws://localhost:8080/ws/agent',
424
+ heartbeatInterval: 1000,
425
+ heartbeatTimeout: 3000,
426
+ reconnectInterval: 10,
427
+ maxReconnectAttempts: 2,
428
+ userId: 'user-1',
429
+ runtimeAccessToken: 'stale-token',
430
+ runtimeBridgeBaseUrl: 'http://127.0.0.1:18081',
431
+ };
432
+ const httpClient = new HttpClient(config);
433
+ let tokenRequestCount = 0;
434
+ let websocketAttempt = 0;
435
+ const websocketUrls = [];
436
+ let releaseRefresh;
437
+ const refreshGate = new Promise((resolve) => {
438
+ releaseRefresh = resolve;
439
+ });
440
+ global.fetch = async (url, options) => {
441
+ fetchCalls.push([url.toString(), options]);
442
+ if (url.toString() === 'http://127.0.0.1:18081/runtime/binding/request-token') {
443
+ tokenRequestCount += 1;
444
+ await refreshGate;
445
+ return {
446
+ ok: true,
447
+ status: 200,
448
+ statusText: 'OK',
449
+ json: async () => ({ ok: true, runtimeAccessToken: 'shared-fresh-token' }),
450
+ };
451
+ }
452
+ const body = JSON.parse(String(options?.body || '{}'));
453
+ const token = options.headers['X-Runtime-Token'];
454
+ if (token === 'stale-token') {
455
+ return {
456
+ ok: false,
457
+ status: 401,
458
+ statusText: 'Unauthorized',
459
+ };
460
+ }
461
+ return {
462
+ ok: true,
463
+ status: 200,
464
+ statusText: 'OK',
465
+ json: async () => ({ tool: body.tool, token }),
466
+ };
467
+ };
468
+ const wsClient = new WebSocketClient(config, (url) => {
469
+ websocketUrls.push(url);
470
+ websocketAttempt += 1;
471
+ const socket = new FakeSocket();
472
+ setImmediate(() => {
473
+ socket.readyState = WebSocket.OPEN;
474
+ socket.emit('open');
475
+ if (websocketAttempt === 1) {
476
+ socket.readyState = WebSocket.CLOSED;
477
+ socket.emit('close', 1008, Buffer.from('policy violation'));
478
+ }
479
+ });
480
+ return socket;
481
+ });
482
+ try {
483
+ wsClient.on('error', () => {
484
+ // suppress unhandled error event in test environment
485
+ });
486
+ const websocketConnected = wsClient.connect('agent-1');
487
+ const httpCall = httpClient.callTool('get_memory_stats', { agentId: 'agent-1' });
488
+ await new Promise((resolve, reject) => {
489
+ const timer = setTimeout(() => reject(new Error('expected both refresh waiters')), 500);
490
+ const interval = setInterval(() => {
491
+ if (tokenRequestCount === 1 && config.runtimeAccessTokenRefreshPromise) {
492
+ clearInterval(interval);
493
+ clearTimeout(timer);
494
+ resolve();
495
+ }
496
+ }, 5);
497
+ });
498
+ const websocketReconnected = new Promise((resolve, reject) => {
499
+ const timer = setTimeout(() => reject(new Error('expected websocket reconnect')), 500);
500
+ wsClient.on('connected', () => {
501
+ if (websocketAttempt >= 2) {
502
+ clearTimeout(timer);
503
+ resolve();
504
+ }
505
+ });
506
+ });
507
+ releaseRefresh?.();
508
+ const result = await httpCall;
509
+ await websocketConnected;
510
+ await websocketReconnected;
511
+ assert.deepEqual(result, { tool: 'get_memory_stats', token: 'shared-fresh-token' });
512
+ assert.equal(tokenRequestCount, 1);
513
+ assert.equal(config.runtimeAccessToken, 'shared-fresh-token');
514
+ assert.equal(new URL(websocketUrls[1] || '').searchParams.get('runtimeAccessToken'), 'shared-fresh-token');
515
+ }
516
+ finally {
517
+ releaseRefresh?.();
518
+ wsClient.disconnect();
519
+ }
520
+ });
521
+ it('shares one forced refresh among multiple waiters after an initial non-forced refresh', async () => {
522
+ const config = {
523
+ serverUrl: 'ws://localhost:8080/ws/agent',
524
+ heartbeatInterval: 15000,
525
+ reconnectInterval: 200,
526
+ maxReconnectAttempts: -1,
527
+ userId: 'user-1',
528
+ runtimeBridgeBaseUrl: 'http://127.0.0.1:18081',
529
+ };
530
+ const initialClient = new HttpClient(config);
531
+ const forceClient = new HttpClient(config);
532
+ let tokenRequestCount = 0;
533
+ let forceRequestCount = 0;
534
+ let releaseInitialRefresh;
535
+ const initialRefreshGate = new Promise((resolve) => {
536
+ releaseInitialRefresh = resolve;
537
+ });
538
+ global.fetch = async (url, options) => {
539
+ fetchCalls.push([url.toString(), options]);
540
+ if (url.toString() === 'http://127.0.0.1:18081/runtime/binding/request-token') {
541
+ tokenRequestCount += 1;
542
+ const body = JSON.parse(String(options?.body || '{}'));
543
+ if (body.forceRefresh) {
544
+ forceRequestCount += 1;
545
+ await new Promise((resolve) => setTimeout(resolve, 10));
546
+ return {
547
+ ok: true,
548
+ status: 200,
549
+ statusText: 'OK',
550
+ json: async () => ({ ok: true, runtimeAccessToken: 'forced-token' }),
551
+ };
552
+ }
553
+ await initialRefreshGate;
554
+ return {
555
+ ok: true,
556
+ status: 200,
557
+ statusText: 'OK',
558
+ json: async () => ({ ok: true, runtimeAccessToken: 'initial-token' }),
559
+ };
560
+ }
561
+ const body = JSON.parse(String(options?.body || '{}'));
562
+ const token = options.headers['X-Runtime-Token'];
563
+ if (token === 'initial-token') {
564
+ return {
565
+ ok: false,
566
+ status: 401,
567
+ statusText: 'Unauthorized',
568
+ };
569
+ }
570
+ return {
571
+ ok: true,
572
+ status: 200,
573
+ statusText: 'OK',
574
+ json: async () => ({ tool: body.tool, token }),
575
+ };
576
+ };
577
+ try {
578
+ const initialCall = initialClient.callTool('get_profile', { agentId: 'agent-1' });
579
+ await new Promise((resolve, reject) => {
580
+ const timer = setTimeout(() => reject(new Error('expected initial refresh to start')), 500);
581
+ const interval = setInterval(() => {
582
+ if (tokenRequestCount === 1 && config.runtimeAccessTokenRefreshPromise) {
583
+ clearInterval(interval);
584
+ clearTimeout(timer);
585
+ resolve();
586
+ }
587
+ }, 5);
588
+ });
589
+ const firstForceCall = forceClient.callTool('get_memory_stats', { agentId: 'agent-1' });
590
+ const secondForceCall = forceClient.callTool('discover_group_rooms', { agentId: 'agent-1' });
591
+ releaseInitialRefresh?.();
592
+ const [initialResult, firstForceResult, secondForceResult] = await Promise.all([
593
+ initialCall,
594
+ firstForceCall,
595
+ secondForceCall,
596
+ ]);
597
+ assert.deepEqual(initialResult, { tool: 'get_profile', token: 'forced-token' });
598
+ assert.deepEqual(firstForceResult, { tool: 'get_memory_stats', token: 'forced-token' });
599
+ assert.deepEqual(secondForceResult, { tool: 'discover_group_rooms', token: 'forced-token' });
600
+ assert.equal(tokenRequestCount, 2);
601
+ assert.equal(forceRequestCount, 1);
602
+ assert.equal(config.runtimeAccessToken, 'forced-token');
603
+ }
604
+ finally {
605
+ releaseInitialRefresh?.();
606
+ }
607
+ });
273
608
  it('does not retry 401 more than once after forced token refresh', async () => {
274
609
  const config = {
275
610
  serverUrl: 'ws://localhost:8080/ws/agent',
@@ -298,7 +633,7 @@ describe('HttpClient', () => {
298
633
  };
299
634
  await assert.rejects(() => client.callTool('my_task', { agentId: 'agent-1' }), /MCP tool call failed: 401 Unauthorized/);
300
635
  assert.equal(fetchCalls.length, 3);
301
- assert.equal(fetchCalls.filter(([url]) => url === 'http://localhost:8080/mcp/call').length, 2);
636
+ assert.equal(fetchCalls.filter(([url]) => url === 'http://127.0.0.1:8080/mcp/call').length, 2);
302
637
  assert.equal(fetchCalls.filter(([url]) => url === 'http://127.0.0.1:18081/runtime/binding/request-token').length, 1);
303
638
  });
304
639
  it('handles 404 not found response', async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"http-client.test.js","sourceRoot":"","sources":["../src/http-client.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAO9C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IACnC,IAAI,UAAU,GAAqC,EAAE,CAAC;IAEtD,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAA2B,EAAE,OAAqB,EAAE,EAAE;YAC1E,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAA0B,CAAC,CAAC,CAAC;YAC9D,OAAO;gBACL,EAAE,EAAE,IAAI;gBACR,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;aAC9B,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QAC7B,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;QAC9C,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,6BAA6B;aAC1C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;YAC1D,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,oBAAoB;aACjC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,qBAAqB;aAClC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,6BAA6B,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,mCAAmC;gBAC9C,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,qCAAqC,CAAC,CAAC;QAC9E,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,EAAE;aACf,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,KAAK;aAClB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,qCAAqC;aAClD,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,mCAAmC;gBAC9C,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,gCAAgC,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,UAAU,EAAE,wBAAwB;aACrC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YACtC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,iCAAiC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;QACxB,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;YAC7D,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,kBAAkB,EAAE,eAAe;aACpC,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAEvD,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,gCAAgC,CAAC,CAAC;YACpD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,eAAe,CAAC,CAAC;YAClE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;YACpE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEvC,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAClC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;aACxC,CAAA,CAAC;YAEf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,uBAAuB;aACvB,CAAA,CAAC;YAEf,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EACtC,iDAAiD,CAClD,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mEAAmE,EAAE,KAAK,IAAI,EAAE;YACjF,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,IAAI;gBACR,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC;aAC1C,CAAA,CAAC;YAEf,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;YAEtD,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,cAAc;aACd,CAAA,CAAC;YAEf,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EACtC,wCAAwC,CACzC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;YACrE,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,MAAM,EAAE,QAAQ;gBAChB,kBAAkB,EAAE,aAAa;gBACjC,oBAAoB,EAAE,wBAAwB;aAC/C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAA2B,EAAE,OAAqB,EAAE,EAAE;gBAC1E,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAA0B,CAAC,CAAC,CAAC;gBAC9D,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,gCAAgC,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnF,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,MAAM,EAAE,GAAG;wBACX,UAAU,EAAE,cAAc;qBACf,CAAC;gBAChB,CAAC;gBACD,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,sDAAsD,EAAE,CAAC;oBAC9E,OAAO;wBACL,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,GAAG;wBACX,UAAU,EAAE,IAAI;wBAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;qBACxD,CAAC;gBAChB,CAAC;gBACD,OAAO;oBACL,EAAE,EAAE,IAAI;oBACR,MAAM,EAAE,GAAG;oBACX,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;iBAC5B,CAAC;YAChB,CAAC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC9C,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,sDAAsD,CAAC,CAAC;YACvF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjD,MAAM,EAAE,QAAQ;gBAChB,SAAS,EAAE,8BAA8B;gBACzC,YAAY,EAAE,IAAI;aACnB,CAAC,CAAC,CAAC;YACJ,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,aAAa,CAAC,CAAC;YACzE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,kBAAkB,EAAE,aAAa,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;YAC5E,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,kBAAkB,EAAE,aAAa;gBACjC,oBAAoB,EAAE,wBAAwB;aAC/C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAA2B,EAAE,OAAqB,EAAE,EAAE;gBAC1E,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAA0B,CAAC,CAAC,CAAC;gBAC9D,IAAI,GAAG,CAAC,QAAQ,EAAE,KAAK,sDAAsD,EAAE,CAAC;oBAC9E,OAAO;wBACL,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,GAAG;wBACX,UAAU,EAAE,IAAI;wBAChB,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,aAAa,EAAE,CAAC;qBACxD,CAAC;gBAChB,CAAC;gBACD,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,MAAM,EAAE,GAAG;oBACX,UAAU,EAAE,cAAc;iBACf,CAAC;YAChB,CAAC,CAAC;YAEF,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,EACxD,wCAAwC,CACzC,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,gCAAgC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YAC/F,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,sDAAsD,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC1B,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,GAAG;gBACX,UAAU,EAAE,WAAW;aACX,CAAA,CAAC;YAEf,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,EACzC,qCAAqC,CACtC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,KAAK,IAAI,EAAE;YACtC,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;aACzB,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,IAAI,EAAE;gBACxB,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EACtC,eAAe,CAChB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;YACjE,MAAM,MAAM,GAAiB;gBAC3B,SAAS,EAAE,8BAA8B;gBACzC,iBAAiB,EAAE,KAAK;gBACxB,iBAAiB,EAAE,GAAG;gBACtB,oBAAoB,EAAE,CAAC,CAAC;gBACxB,uBAAuB,EAAE,EAAE;aAC5B,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;YAEtC,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAA2B,EAAE,OAAqB,EAAE,EAAE;gBAC1E,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,OAA0B,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,IAAI,OAAO,CAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;oBACtD,OAAO,EAAE,MAAM,EAAE,gBAAgB,CAC/B,OAAO,EACP,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,EAC5C,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;gBACJ,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,MAAM,MAAM,CAAC,OAAO,CAClB,GAAG,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,EAAE,CAAC,EACtC,yCAAyC,CAC1C,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACnC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,YAAY,WAAW,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"http-client.test.js","sourceRoot":"","sources":["../src/http-client.test.ts"],"names":[],"mappings":"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"}
@@ -123,11 +123,12 @@ export declare class McpServer {
123
123
  private handleSendPrivate;
124
124
  private handlePollMessage;
125
125
  /**
126
- * 在有界等待窗口内持续补拉未读消息。
127
- * 主流程:计算剩余等待时间 -> 用后端长轮询阻塞补拉 -> 空返回时短暂退避 -> 到期返回空结果释放模型 turn。
126
+ * 持续补拉未读消息直到有消息可返回。
127
+ * 主流程:用有限后端长轮询分片阻塞补拉 -> 空返回时短暂退避 -> 继续等待,避免 poll_message 空轮询唤醒模型。
128
+ * 注意:poll_message 是 Agent 主循环的永久阻塞入口,不能恢复为按总时长限时返回空结果。
128
129
  */
129
130
  private hydrateUnreadMessagesUntilAvailable;
130
- private resolvePollMessageMaxWaitMs;
131
+ private resolvePollMessageBlockWaitMs;
131
132
  private resolvePollMessageEmptyRetryDelayMs;
132
133
  /**
133
134
  * 解析正整数环境变量。