agentdog 1.1.0

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 (291) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +244 -0
  3. package/dist/adapters/adapter-factory.d.ts +21 -0
  4. package/dist/adapters/adapter-factory.d.ts.map +1 -0
  5. package/dist/adapters/adapter-factory.js +157 -0
  6. package/dist/adapters/adapter-factory.js.map +1 -0
  7. package/dist/adapters/http-sse-adapter.d.ts +49 -0
  8. package/dist/adapters/http-sse-adapter.d.ts.map +1 -0
  9. package/dist/adapters/http-sse-adapter.js +485 -0
  10. package/dist/adapters/http-sse-adapter.js.map +1 -0
  11. package/dist/adapters/stdio-adapter.d.ts +69 -0
  12. package/dist/adapters/stdio-adapter.d.ts.map +1 -0
  13. package/dist/adapters/stdio-adapter.js +664 -0
  14. package/dist/adapters/stdio-adapter.js.map +1 -0
  15. package/dist/adapters/streamable-http-adapter.d.ts +38 -0
  16. package/dist/adapters/streamable-http-adapter.d.ts.map +1 -0
  17. package/dist/adapters/streamable-http-adapter.js +321 -0
  18. package/dist/adapters/streamable-http-adapter.js.map +1 -0
  19. package/dist/ai-gateway/anthropic-errors.d.ts +4 -0
  20. package/dist/ai-gateway/anthropic-errors.d.ts.map +1 -0
  21. package/dist/ai-gateway/anthropic-errors.js +17 -0
  22. package/dist/ai-gateway/anthropic-errors.js.map +1 -0
  23. package/dist/ai-gateway/auth.d.ts +3 -0
  24. package/dist/ai-gateway/auth.d.ts.map +1 -0
  25. package/dist/ai-gateway/auth.js +14 -0
  26. package/dist/ai-gateway/auth.js.map +1 -0
  27. package/dist/ai-gateway/auth.test.d.ts +2 -0
  28. package/dist/ai-gateway/auth.test.d.ts.map +1 -0
  29. package/dist/ai-gateway/auth.test.js +57 -0
  30. package/dist/ai-gateway/auth.test.js.map +1 -0
  31. package/dist/ai-gateway/count-tokens.d.ts +5 -0
  32. package/dist/ai-gateway/count-tokens.d.ts.map +1 -0
  33. package/dist/ai-gateway/count-tokens.js +37 -0
  34. package/dist/ai-gateway/count-tokens.js.map +1 -0
  35. package/dist/ai-gateway/count-tokens.test.d.ts +2 -0
  36. package/dist/ai-gateway/count-tokens.test.d.ts.map +1 -0
  37. package/dist/ai-gateway/count-tokens.test.js +19 -0
  38. package/dist/ai-gateway/count-tokens.test.js.map +1 -0
  39. package/dist/ai-gateway/dialects.d.ts +4 -0
  40. package/dist/ai-gateway/dialects.d.ts.map +1 -0
  41. package/dist/ai-gateway/dialects.js +15 -0
  42. package/dist/ai-gateway/dialects.js.map +1 -0
  43. package/dist/ai-gateway/gateway-server.d.ts +15 -0
  44. package/dist/ai-gateway/gateway-server.d.ts.map +1 -0
  45. package/dist/ai-gateway/gateway-server.js +121 -0
  46. package/dist/ai-gateway/gateway-server.js.map +1 -0
  47. package/dist/ai-gateway/integration.test.d.ts +2 -0
  48. package/dist/ai-gateway/integration.test.d.ts.map +1 -0
  49. package/dist/ai-gateway/integration.test.js +205 -0
  50. package/dist/ai-gateway/integration.test.js.map +1 -0
  51. package/dist/ai-gateway/ir/anthropic-in.d.ts +3 -0
  52. package/dist/ai-gateway/ir/anthropic-in.d.ts.map +1 -0
  53. package/dist/ai-gateway/ir/anthropic-in.js +121 -0
  54. package/dist/ai-gateway/ir/anthropic-in.js.map +1 -0
  55. package/dist/ai-gateway/ir/anthropic-in.test.d.ts +2 -0
  56. package/dist/ai-gateway/ir/anthropic-in.test.d.ts.map +1 -0
  57. package/dist/ai-gateway/ir/anthropic-in.test.js +93 -0
  58. package/dist/ai-gateway/ir/anthropic-in.test.js.map +1 -0
  59. package/dist/ai-gateway/ir/anthropic-sse.d.ts +22 -0
  60. package/dist/ai-gateway/ir/anthropic-sse.d.ts.map +1 -0
  61. package/dist/ai-gateway/ir/anthropic-sse.js +200 -0
  62. package/dist/ai-gateway/ir/anthropic-sse.js.map +1 -0
  63. package/dist/ai-gateway/ir/anthropic-sse.test.d.ts +2 -0
  64. package/dist/ai-gateway/ir/anthropic-sse.test.d.ts.map +1 -0
  65. package/dist/ai-gateway/ir/anthropic-sse.test.js +101 -0
  66. package/dist/ai-gateway/ir/anthropic-sse.test.js.map +1 -0
  67. package/dist/ai-gateway/ir/gemini-out.d.ts +20 -0
  68. package/dist/ai-gateway/ir/gemini-out.d.ts.map +1 -0
  69. package/dist/ai-gateway/ir/gemini-out.js +218 -0
  70. package/dist/ai-gateway/ir/gemini-out.js.map +1 -0
  71. package/dist/ai-gateway/ir/gemini-out.test.d.ts +2 -0
  72. package/dist/ai-gateway/ir/gemini-out.test.d.ts.map +1 -0
  73. package/dist/ai-gateway/ir/gemini-out.test.js +125 -0
  74. package/dist/ai-gateway/ir/gemini-out.test.js.map +1 -0
  75. package/dist/ai-gateway/ir/openai-out.d.ts +17 -0
  76. package/dist/ai-gateway/ir/openai-out.d.ts.map +1 -0
  77. package/dist/ai-gateway/ir/openai-out.js +226 -0
  78. package/dist/ai-gateway/ir/openai-out.js.map +1 -0
  79. package/dist/ai-gateway/ir/openai-out.test.d.ts +2 -0
  80. package/dist/ai-gateway/ir/openai-out.test.d.ts.map +1 -0
  81. package/dist/ai-gateway/ir/openai-out.test.js +144 -0
  82. package/dist/ai-gateway/ir/openai-out.test.js.map +1 -0
  83. package/dist/ai-gateway/ir/types.d.ts +77 -0
  84. package/dist/ai-gateway/ir/types.d.ts.map +1 -0
  85. package/dist/ai-gateway/ir/types.js +4 -0
  86. package/dist/ai-gateway/ir/types.js.map +1 -0
  87. package/dist/ai-gateway/ir-channel.d.ts +15 -0
  88. package/dist/ai-gateway/ir-channel.d.ts.map +1 -0
  89. package/dist/ai-gateway/ir-channel.js +120 -0
  90. package/dist/ai-gateway/ir-channel.js.map +1 -0
  91. package/dist/ai-gateway/model-router.d.ts +11 -0
  92. package/dist/ai-gateway/model-router.d.ts.map +1 -0
  93. package/dist/ai-gateway/model-router.js +27 -0
  94. package/dist/ai-gateway/model-router.js.map +1 -0
  95. package/dist/ai-gateway/model-router.test.d.ts +2 -0
  96. package/dist/ai-gateway/model-router.test.d.ts.map +1 -0
  97. package/dist/ai-gateway/model-router.test.js +43 -0
  98. package/dist/ai-gateway/model-router.test.js.map +1 -0
  99. package/dist/ai-gateway/passthrough.d.ts +9 -0
  100. package/dist/ai-gateway/passthrough.d.ts.map +1 -0
  101. package/dist/ai-gateway/passthrough.js +81 -0
  102. package/dist/ai-gateway/passthrough.js.map +1 -0
  103. package/dist/ai-gateway/passthrough.test.d.ts +2 -0
  104. package/dist/ai-gateway/passthrough.test.d.ts.map +1 -0
  105. package/dist/ai-gateway/passthrough.test.js +108 -0
  106. package/dist/ai-gateway/passthrough.test.js.map +1 -0
  107. package/dist/ai-gateway/upstream/model-lister.d.ts +13 -0
  108. package/dist/ai-gateway/upstream/model-lister.d.ts.map +1 -0
  109. package/dist/ai-gateway/upstream/model-lister.js +61 -0
  110. package/dist/ai-gateway/upstream/model-lister.js.map +1 -0
  111. package/dist/ai-gateway/upstream/provider-client.d.ts +20 -0
  112. package/dist/ai-gateway/upstream/provider-client.d.ts.map +1 -0
  113. package/dist/ai-gateway/upstream/provider-client.js +76 -0
  114. package/dist/ai-gateway/upstream/provider-client.js.map +1 -0
  115. package/dist/ai-gateway/upstream/provider-client.test.d.ts +2 -0
  116. package/dist/ai-gateway/upstream/provider-client.test.d.ts.map +1 -0
  117. package/dist/ai-gateway/upstream/provider-client.test.js +69 -0
  118. package/dist/ai-gateway/upstream/provider-client.test.js.map +1 -0
  119. package/dist/cli/cli-main.d.ts +7 -0
  120. package/dist/cli/cli-main.d.ts.map +1 -0
  121. package/dist/cli/cli-main.js +116 -0
  122. package/dist/cli/cli-main.js.map +1 -0
  123. package/dist/cli/cli-router.d.ts +20 -0
  124. package/dist/cli/cli-router.d.ts.map +1 -0
  125. package/dist/cli/cli-router.js +271 -0
  126. package/dist/cli/cli-router.js.map +1 -0
  127. package/dist/cli/cli-utils.d.ts +30 -0
  128. package/dist/cli/cli-utils.d.ts.map +1 -0
  129. package/dist/cli/cli-utils.js +219 -0
  130. package/dist/cli/cli-utils.js.map +1 -0
  131. package/dist/cli/commands/audit-commands.d.ts +30 -0
  132. package/dist/cli/commands/audit-commands.d.ts.map +1 -0
  133. package/dist/cli/commands/audit-commands.js +417 -0
  134. package/dist/cli/commands/audit-commands.js.map +1 -0
  135. package/dist/cli/commands/autostart-command.d.ts +21 -0
  136. package/dist/cli/commands/autostart-command.d.ts.map +1 -0
  137. package/dist/cli/commands/autostart-command.js +243 -0
  138. package/dist/cli/commands/autostart-command.js.map +1 -0
  139. package/dist/cli/commands/autostart-command.test.d.ts +2 -0
  140. package/dist/cli/commands/autostart-command.test.d.ts.map +1 -0
  141. package/dist/cli/commands/autostart-command.test.js +35 -0
  142. package/dist/cli/commands/autostart-command.test.js.map +1 -0
  143. package/dist/cli/commands/config-commands.d.ts +30 -0
  144. package/dist/cli/commands/config-commands.d.ts.map +1 -0
  145. package/dist/cli/commands/config-commands.js +1013 -0
  146. package/dist/cli/commands/config-commands.js.map +1 -0
  147. package/dist/cli/commands/daemon-commands.d.ts +76 -0
  148. package/dist/cli/commands/daemon-commands.d.ts.map +1 -0
  149. package/dist/cli/commands/daemon-commands.js +451 -0
  150. package/dist/cli/commands/daemon-commands.js.map +1 -0
  151. package/dist/cli/commands/detect-commands.d.ts +17 -0
  152. package/dist/cli/commands/detect-commands.d.ts.map +1 -0
  153. package/dist/cli/commands/detect-commands.js +293 -0
  154. package/dist/cli/commands/detect-commands.js.map +1 -0
  155. package/dist/cli/commands/diagnose-commands.d.ts +19 -0
  156. package/dist/cli/commands/diagnose-commands.d.ts.map +1 -0
  157. package/dist/cli/commands/diagnose-commands.js +326 -0
  158. package/dist/cli/commands/diagnose-commands.js.map +1 -0
  159. package/dist/cli/commands/optimize-commands.d.ts +14 -0
  160. package/dist/cli/commands/optimize-commands.d.ts.map +1 -0
  161. package/dist/cli/commands/optimize-commands.js +189 -0
  162. package/dist/cli/commands/optimize-commands.js.map +1 -0
  163. package/dist/cli/commands/proxy-command.d.ts +27 -0
  164. package/dist/cli/commands/proxy-command.d.ts.map +1 -0
  165. package/dist/cli/commands/proxy-command.js +212 -0
  166. package/dist/cli/commands/proxy-command.js.map +1 -0
  167. package/dist/cli/commands/start-command.d.ts +22 -0
  168. package/dist/cli/commands/start-command.d.ts.map +1 -0
  169. package/dist/cli/commands/start-command.js +275 -0
  170. package/dist/cli/commands/start-command.js.map +1 -0
  171. package/dist/config/config-manager.d.ts +125 -0
  172. package/dist/config/config-manager.d.ts.map +1 -0
  173. package/dist/config/config-manager.js +569 -0
  174. package/dist/config/config-manager.js.map +1 -0
  175. package/dist/config/config-manager.test.d.ts +2 -0
  176. package/dist/config/config-manager.test.d.ts.map +1 -0
  177. package/dist/config/config-manager.test.js +209 -0
  178. package/dist/config/config-manager.test.js.map +1 -0
  179. package/dist/core/auto-config-generator.d.ts +55 -0
  180. package/dist/core/auto-config-generator.d.ts.map +1 -0
  181. package/dist/core/auto-config-generator.js +278 -0
  182. package/dist/core/auto-config-generator.js.map +1 -0
  183. package/dist/core/mcpdog-server.d.ts +49 -0
  184. package/dist/core/mcpdog-server.d.ts.map +1 -0
  185. package/dist/core/mcpdog-server.js +552 -0
  186. package/dist/core/mcpdog-server.js.map +1 -0
  187. package/dist/core/protocol-detector.d.ts +56 -0
  188. package/dist/core/protocol-detector.d.ts.map +1 -0
  189. package/dist/core/protocol-detector.js +365 -0
  190. package/dist/core/protocol-detector.js.map +1 -0
  191. package/dist/daemon/daemon-client.d.ts +34 -0
  192. package/dist/daemon/daemon-client.d.ts.map +1 -0
  193. package/dist/daemon/daemon-client.js +130 -0
  194. package/dist/daemon/daemon-client.js.map +1 -0
  195. package/dist/daemon/daemon-client.test.d.ts +2 -0
  196. package/dist/daemon/daemon-client.test.d.ts.map +1 -0
  197. package/dist/daemon/daemon-client.test.js +77 -0
  198. package/dist/daemon/daemon-client.test.js.map +1 -0
  199. package/dist/daemon/daemon-info.d.ts +7 -0
  200. package/dist/daemon/daemon-info.d.ts.map +1 -0
  201. package/dist/daemon/daemon-info.js +34 -0
  202. package/dist/daemon/daemon-info.js.map +1 -0
  203. package/dist/daemon/daemon-info.test.d.ts +2 -0
  204. package/dist/daemon/daemon-info.test.d.ts.map +1 -0
  205. package/dist/daemon/daemon-info.test.js +57 -0
  206. package/dist/daemon/daemon-info.test.js.map +1 -0
  207. package/dist/daemon/daemon-web-server.ai.test.d.ts +2 -0
  208. package/dist/daemon/daemon-web-server.ai.test.d.ts.map +1 -0
  209. package/dist/daemon/daemon-web-server.ai.test.js +119 -0
  210. package/dist/daemon/daemon-web-server.ai.test.js.map +1 -0
  211. package/dist/daemon/daemon-web-server.d.ts +59 -0
  212. package/dist/daemon/daemon-web-server.d.ts.map +1 -0
  213. package/dist/daemon/daemon-web-server.js +1236 -0
  214. package/dist/daemon/daemon-web-server.js.map +1 -0
  215. package/dist/daemon/daemon-web-server.test.d.ts +2 -0
  216. package/dist/daemon/daemon-web-server.test.d.ts.map +1 -0
  217. package/dist/daemon/daemon-web-server.test.js +93 -0
  218. package/dist/daemon/daemon-web-server.test.js.map +1 -0
  219. package/dist/daemon/mcpdog-daemon.d.ts +42 -0
  220. package/dist/daemon/mcpdog-daemon.d.ts.map +1 -0
  221. package/dist/daemon/mcpdog-daemon.js +302 -0
  222. package/dist/daemon/mcpdog-daemon.js.map +1 -0
  223. package/dist/daemon/stdio-proxy.d.ts +17 -0
  224. package/dist/daemon/stdio-proxy.d.ts.map +1 -0
  225. package/dist/daemon/stdio-proxy.js +143 -0
  226. package/dist/daemon/stdio-proxy.js.map +1 -0
  227. package/dist/index.d.ts +14 -0
  228. package/dist/index.d.ts.map +1 -0
  229. package/dist/index.js +198 -0
  230. package/dist/index.js.map +1 -0
  231. package/dist/intent-analyzer.d.ts +27 -0
  232. package/dist/intent-analyzer.d.ts.map +1 -0
  233. package/dist/intent-analyzer.js +140 -0
  234. package/dist/intent-analyzer.js.map +1 -0
  235. package/dist/logging/server-log-manager.d.ts +75 -0
  236. package/dist/logging/server-log-manager.d.ts.map +1 -0
  237. package/dist/logging/server-log-manager.js +185 -0
  238. package/dist/logging/server-log-manager.js.map +1 -0
  239. package/dist/mcp-registry.d.ts +35 -0
  240. package/dist/mcp-registry.d.ts.map +1 -0
  241. package/dist/mcp-registry.js +166 -0
  242. package/dist/mcp-registry.js.map +1 -0
  243. package/dist/middleware/auth.d.ts +5 -0
  244. package/dist/middleware/auth.d.ts.map +1 -0
  245. package/dist/middleware/auth.js +81 -0
  246. package/dist/middleware/auth.js.map +1 -0
  247. package/dist/mock-tool-database.d.ts +41 -0
  248. package/dist/mock-tool-database.d.ts.map +1 -0
  249. package/dist/mock-tool-database.js +461 -0
  250. package/dist/mock-tool-database.js.map +1 -0
  251. package/dist/proxy-server-manager.d.ts +11 -0
  252. package/dist/proxy-server-manager.d.ts.map +1 -0
  253. package/dist/proxy-server-manager.js +144 -0
  254. package/dist/proxy-server-manager.js.map +1 -0
  255. package/dist/router/tool-router.d.ts +61 -0
  256. package/dist/router/tool-router.d.ts.map +1 -0
  257. package/dist/router/tool-router.js +539 -0
  258. package/dist/router/tool-router.js.map +1 -0
  259. package/dist/router/tool-router.test.d.ts +2 -0
  260. package/dist/router/tool-router.test.d.ts.map +1 -0
  261. package/dist/router/tool-router.test.js +113 -0
  262. package/dist/router/tool-router.test.js.map +1 -0
  263. package/dist/streamable-http-server.d.ts +27 -0
  264. package/dist/streamable-http-server.d.ts.map +1 -0
  265. package/dist/streamable-http-server.js +302 -0
  266. package/dist/streamable-http-server.js.map +1 -0
  267. package/dist/tool-finder.d.ts +21 -0
  268. package/dist/tool-finder.d.ts.map +1 -0
  269. package/dist/tool-finder.js +86 -0
  270. package/dist/tool-finder.js.map +1 -0
  271. package/dist/tool-recommender.d.ts +23 -0
  272. package/dist/tool-recommender.d.ts.map +1 -0
  273. package/dist/tool-recommender.js +200 -0
  274. package/dist/tool-recommender.js.map +1 -0
  275. package/dist/types/index.d.ts +145 -0
  276. package/dist/types/index.d.ts.map +1 -0
  277. package/dist/types/index.js +2 -0
  278. package/dist/types/index.js.map +1 -0
  279. package/dist/utils/server-name-validator.d.ts +47 -0
  280. package/dist/utils/server-name-validator.d.ts.map +1 -0
  281. package/dist/utils/server-name-validator.js +156 -0
  282. package/dist/utils/server-name-validator.js.map +1 -0
  283. package/dist/web/web-server.d.ts +44 -0
  284. package/dist/web/web-server.d.ts.map +1 -0
  285. package/dist/web/web-server.js +500 -0
  286. package/dist/web/web-server.js.map +1 -0
  287. package/package.json +68 -0
  288. package/web/dist/assets/index-DMVhVtNU.css +1 -0
  289. package/web/dist/assets/index-VMXIgcOH.js +92 -0
  290. package/web/dist/assets/index-VMXIgcOH.js.map +1 -0
  291. package/web/dist/index.html +14 -0
@@ -0,0 +1,61 @@
1
+ import { EventEmitter } from 'events';
2
+ import { MCPTool, MCPResponse, ServerAdapter } from '../types/index.js';
3
+ import { ConfigManager } from '../config/config-manager.js';
4
+ export interface ToolRoute {
5
+ toolName: string;
6
+ serverName: string;
7
+ adapter: ServerAdapter;
8
+ }
9
+ export declare class ToolRouter extends EventEmitter {
10
+ private adapters;
11
+ private toolRoutes;
12
+ private toolsByServer;
13
+ private lastStableToolsList;
14
+ private lastStableToolsCount;
15
+ private configManager?;
16
+ constructor(configManager?: ConfigManager);
17
+ private isToolEnabled;
18
+ addAdapter(adapter: ServerAdapter): void;
19
+ removeAdapter(serverName: string): void;
20
+ getAdapter(serverName: string): ServerAdapter | undefined;
21
+ getAllAdapters(): ServerAdapter[];
22
+ getConnectedAdapters(): ServerAdapter[];
23
+ private refreshToolRoutes;
24
+ private removeToolRoutes;
25
+ getAllTools(forceRefresh?: boolean): Promise<MCPTool[]>;
26
+ getToolsByServer(serverName: string): MCPTool[];
27
+ getEnabledToolsByServer(serverName: string): MCPTool[];
28
+ findToolRoute(toolName: string): ToolRoute | undefined;
29
+ callTool(toolName: string, args: any): Promise<MCPResponse>;
30
+ connectAll(options?: {
31
+ timeout?: number;
32
+ maxConcurrent?: number;
33
+ }): Promise<void>;
34
+ private connectWithTimeout;
35
+ disconnectAll(): Promise<void>;
36
+ getRouteStatus(): {
37
+ totalAdapters: number;
38
+ connectedAdapters: number;
39
+ totalTools: number;
40
+ toolsByServer: Record<string, number>;
41
+ toolConflicts: string[];
42
+ };
43
+ searchTools(query: string): MCPTool[];
44
+ enableServerTools(serverName: string, enabled: boolean): Promise<void>;
45
+ forceReconnectServer(serverName: string): Promise<boolean>;
46
+ getServerHealth(): Record<string, {
47
+ connected: boolean;
48
+ toolCount: number;
49
+ lastSeen: string;
50
+ status: 'healthy' | 'unstable' | 'failed';
51
+ }>;
52
+ autoHealUnhealthyServers(): Promise<void>;
53
+ getAllCrashStats(): Record<string, any>;
54
+ clearServerBlacklist(serverName: string): boolean;
55
+ clearAllBlacklists(): void;
56
+ getConnectedServerCount(): number;
57
+ getTotalServerCount(): number;
58
+ getToolDistribution(): Record<string, number>;
59
+ updateServerTools(serverName: string): Promise<void>;
60
+ }
61
+ //# sourceMappingURL=tool-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.d.ts","sourceRoot":"","sources":["../../src/router/tool-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,539 @@
1
+ import { EventEmitter } from 'events';
2
+ export class ToolRouter extends EventEmitter {
3
+ adapters = new Map();
4
+ toolRoutes = new Map();
5
+ toolsByServer = new Map();
6
+ lastStableToolsList = []; // Cache the last stable tool list
7
+ lastStableToolsCount = 0;
8
+ configManager;
9
+ constructor(configManager) {
10
+ super();
11
+ this.configManager = configManager;
12
+ }
13
+ // Check if tool is enabled
14
+ isToolEnabled(serverName, toolName) {
15
+ if (!this.configManager)
16
+ return true; // If no config manager, default to enabled
17
+ const config = this.configManager.getConfig();
18
+ const serverConfig = config.servers[serverName];
19
+ if (!serverConfig)
20
+ return true;
21
+ const toolsConfig = serverConfig.toolsConfig;
22
+ if (!toolsConfig)
23
+ return true; // No tool config, default to enabled
24
+ const { mode, toolSettings } = toolsConfig;
25
+ const toolSetting = toolSettings?.[toolName];
26
+ switch (mode) {
27
+ case 'all':
28
+ return toolSetting ? toolSetting.enabled : true;
29
+ case 'whitelist':
30
+ return toolSetting ? toolSetting.enabled : false;
31
+ case 'blacklist':
32
+ return toolSetting ? toolSetting.enabled : true;
33
+ default:
34
+ return true;
35
+ }
36
+ }
37
+ addAdapter(adapter) {
38
+ if (this.adapters.has(adapter.name)) {
39
+ throw new Error(`Adapter ${adapter.name} already exists`);
40
+ }
41
+ this.adapters.set(adapter.name, adapter);
42
+ // Listen for adapter events
43
+ adapter.on('connected', () => {
44
+ this.refreshToolRoutes(adapter.name).catch(error => {
45
+ console.error(`Failed to refresh routes for ${adapter.name}:`, error);
46
+ });
47
+ });
48
+ adapter.on('disconnected', () => {
49
+ this.removeToolRoutes(adapter.name);
50
+ });
51
+ adapter.on('tools-changed', () => {
52
+ this.refreshToolRoutes(adapter.name).catch(error => {
53
+ console.error(`Failed to refresh routes for ${adapter.name}:`, error);
54
+ });
55
+ });
56
+ console.error(`Added adapter: ${adapter.name}`);
57
+ }
58
+ removeAdapter(serverName) {
59
+ const adapter = this.adapters.get(serverName);
60
+ if (!adapter) {
61
+ return;
62
+ }
63
+ // Remove all related routes
64
+ this.removeToolRoutes(serverName);
65
+ // Disable adapter to prevent auto-reconnect
66
+ if ('disable' in adapter && typeof adapter.disable === 'function') {
67
+ adapter.disable();
68
+ }
69
+ // Disconnect
70
+ if (adapter.isConnected) {
71
+ adapter.disconnect().catch(error => {
72
+ console.error(`Error disconnecting ${serverName}:`, error);
73
+ });
74
+ }
75
+ // Remove event listeners
76
+ adapter.removeAllListeners();
77
+ this.adapters.delete(serverName);
78
+ console.error(`Removed adapter: ${serverName}`);
79
+ }
80
+ getAdapter(serverName) {
81
+ return this.adapters.get(serverName);
82
+ }
83
+ getAllAdapters() {
84
+ return Array.from(this.adapters.values());
85
+ }
86
+ getConnectedAdapters() {
87
+ return Array.from(this.adapters.values()).filter(adapter => adapter.isConnected);
88
+ }
89
+ async refreshToolRoutes(serverName) {
90
+ const adapter = this.adapters.get(serverName);
91
+ if (!adapter || !adapter.isConnected) {
92
+ return;
93
+ }
94
+ try {
95
+ // Get server's tool list
96
+ const tools = await adapter.getTools();
97
+ // Remove old routes for this server
98
+ this.removeToolRoutes(serverName);
99
+ // Cache tool list
100
+ this.toolsByServer.set(serverName, tools);
101
+ // Create new routes
102
+ for (const tool of tools) {
103
+ const originalToolName = tool.name;
104
+ let prefixedToolName = tool.name;
105
+ // Check for name conflict
106
+ const existingRoute = this.toolRoutes.get(originalToolName);
107
+ if (existingRoute) {
108
+ console.warn(`Tool name conflict: ${originalToolName} exists in both ${existingRoute.serverName} and ${serverName}`);
109
+ // Resolve conflict by prefixing with server name
110
+ prefixedToolName = `${serverName}-${originalToolName}`;
111
+ console.log(`🔧 Resolving conflict: ${originalToolName} -> ${prefixedToolName}`);
112
+ // Also prefix the original tool
113
+ const originalRoute = this.toolRoutes.get(originalToolName);
114
+ if (originalRoute) {
115
+ const originalPrefixedName = `${originalRoute.serverName}-${originalToolName}`;
116
+ this.toolRoutes.set(originalPrefixedName, {
117
+ ...originalRoute,
118
+ toolName: originalPrefixedName
119
+ });
120
+ console.log(`🔧 Original tool renamed: ${originalToolName} -> ${originalPrefixedName}`);
121
+ }
122
+ }
123
+ const route = {
124
+ toolName: prefixedToolName,
125
+ serverName,
126
+ adapter
127
+ };
128
+ this.toolRoutes.set(prefixedToolName, route);
129
+ }
130
+ console.error(`Refreshed ${tools.length} tool routes for ${serverName}`);
131
+ this.emit('routes-updated', { serverName, toolCount: tools.length });
132
+ }
133
+ catch (error) {
134
+ console.error(`Failed to refresh tool routes for ${serverName}:`, error);
135
+ this.emit('error', {
136
+ error: error,
137
+ context: `refresh-routes-${serverName}`
138
+ });
139
+ }
140
+ }
141
+ removeToolRoutes(serverName) {
142
+ // Remove all tool routes for this server
143
+ const toolsToRemove = [];
144
+ for (const [toolName, route] of this.toolRoutes) {
145
+ if (route.serverName === serverName) {
146
+ toolsToRemove.push(toolName);
147
+ }
148
+ }
149
+ for (const toolName of toolsToRemove) {
150
+ this.toolRoutes.delete(toolName);
151
+ }
152
+ // Clear cache
153
+ this.toolsByServer.delete(serverName);
154
+ if (toolsToRemove.length > 0) {
155
+ console.error(`Removed ${toolsToRemove.length} tool routes for ${serverName}`);
156
+ this.emit('routes-updated', { serverName, toolCount: 0 });
157
+ }
158
+ }
159
+ async getAllTools(forceRefresh = false) {
160
+ const connectedAdapters = this.getConnectedAdapters();
161
+ // If no adapters are connected, return empty tool list (security fix)
162
+ if (connectedAdapters.length === 0) {
163
+ console.error(`📦 No adapters connected, returning empty tools list for security`);
164
+ // Clear stable tool cache to ensure disabled tools are not leaked
165
+ this.lastStableToolsList = [];
166
+ this.lastStableToolsCount = 0;
167
+ return [];
168
+ }
169
+ // Step 1: Collect tools from all servers, with server info
170
+ const allServerTools = [];
171
+ for (const adapter of connectedAdapters) {
172
+ let serverTools = this.toolsByServer.get(adapter.name) || [];
173
+ // If cache is empty or force refresh, try to get in real-time
174
+ if (serverTools.length === 0 || forceRefresh) {
175
+ try {
176
+ console.error(`Real-time fetching tools from ${adapter.name}...`);
177
+ const freshTools = await Promise.race([
178
+ adapter.getTools(),
179
+ new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout')), 8000))
180
+ ]);
181
+ if (freshTools.length > 0) {
182
+ this.toolsByServer.set(adapter.name, freshTools);
183
+ serverTools = freshTools;
184
+ console.error(`✅ Got ${freshTools.length} tools from ${adapter.name}`);
185
+ }
186
+ }
187
+ catch (error) {
188
+ console.error(`⚠️ Failed to fetch tools from ${adapter.name}: ${error.message}`);
189
+ // Continue with cached tools (if any)
190
+ }
191
+ }
192
+ // Add enabled tools to the list
193
+ for (const tool of serverTools) {
194
+ if (this.isToolEnabled(adapter.name, tool.name)) {
195
+ allServerTools.push({ tool, serverName: adapter.name });
196
+ }
197
+ }
198
+ }
199
+ // Step 2: Detect tool name conflicts
200
+ const toolNameCounts = new Map();
201
+ for (const { tool } of allServerTools) {
202
+ const count = toolNameCounts.get(tool.name) || 0;
203
+ toolNameCounts.set(tool.name, count + 1);
204
+ }
205
+ // Step 3: Resolve conflicts, generate final tool list
206
+ const allTools = [];
207
+ for (const { tool, serverName } of allServerTools) {
208
+ const originalToolName = tool.name;
209
+ let finalToolName = originalToolName;
210
+ // If there's a conflict, use server name as prefix
211
+ if (toolNameCounts.get(originalToolName) > 1) {
212
+ finalToolName = `${serverName}-${originalToolName}`;
213
+ }
214
+ allTools.push({
215
+ ...tool,
216
+ name: finalToolName,
217
+ // Add server info to tool description
218
+ description: `[${serverName}] ${tool.description}`
219
+ });
220
+ }
221
+ // If a reasonable number of tools are obtained, update the stable cache
222
+ if (allTools.length >= this.lastStableToolsCount * 0.8) { // At least 80% of tools
223
+ this.lastStableToolsList = [...allTools];
224
+ this.lastStableToolsCount = allTools.length;
225
+ console.error(`💾 Updated stable tools cache: ${allTools.length} tools`);
226
+ }
227
+ // Security fix: always return currently available tools, do not use cache
228
+ // This ensures disabled servers/tools are not visible to MCP clients
229
+ return allTools;
230
+ }
231
+ getToolsByServer(serverName) {
232
+ return this.toolsByServer.get(serverName) || [];
233
+ }
234
+ getEnabledToolsByServer(serverName) {
235
+ const serverTools = this.toolsByServer.get(serverName) || [];
236
+ return serverTools.filter(tool => this.isToolEnabled(serverName, tool.name));
237
+ }
238
+ findToolRoute(toolName) {
239
+ return this.toolRoutes.get(toolName);
240
+ }
241
+ async callTool(toolName, args) {
242
+ const route = this.toolRoutes.get(toolName);
243
+ if (!route) {
244
+ // If tool not found, try to force refresh all tools
245
+ console.error(`Tool ${toolName} not found, refreshing tools...`);
246
+ await this.getAllTools(true); // Force refresh
247
+ const refreshedRoute = this.toolRoutes.get(toolName);
248
+ if (!refreshedRoute) {
249
+ return {
250
+ jsonrpc: '2.0',
251
+ id: 0,
252
+ error: {
253
+ code: -32601,
254
+ message: `Tool not found: ${toolName}`,
255
+ data: { availableTools: Array.from(this.toolRoutes.keys()) }
256
+ }
257
+ };
258
+ }
259
+ // Use refreshed route
260
+ return this.callTool(toolName, args);
261
+ }
262
+ if (!route.adapter.isConnected) {
263
+ return {
264
+ jsonrpc: '2.0',
265
+ id: 0,
266
+ error: {
267
+ code: -32000,
268
+ message: `Server not connected: ${route.serverName}`,
269
+ data: { serverName: route.serverName }
270
+ }
271
+ };
272
+ }
273
+ try {
274
+ console.error(`Routing tool call: ${toolName} -> ${route.serverName}`);
275
+ // Extract the original tool name by removing the server prefix (if it was added)
276
+ // Only strip prefix if the tool name starts with "serverName-"
277
+ const serverPrefix = `${route.serverName}-`;
278
+ const originalToolName = toolName.startsWith(serverPrefix)
279
+ ? toolName.substring(serverPrefix.length)
280
+ : toolName;
281
+ if (originalToolName !== toolName) {
282
+ console.error(`Stripping prefix: ${toolName} -> ${originalToolName}`);
283
+ }
284
+ const startTime = Date.now();
285
+ const response = await route.adapter.callTool(originalToolName, args);
286
+ const duration = Date.now() - startTime;
287
+ console.error(`Tool call completed: ${toolName} (${duration}ms)`);
288
+ this.emit('tool-called', {
289
+ serverName: route.serverName,
290
+ toolName,
291
+ args,
292
+ result: response.result,
293
+ duration
294
+ });
295
+ return response;
296
+ }
297
+ catch (error) {
298
+ console.error(`Tool call failed: ${toolName} -> ${route.serverName}:`, error);
299
+ this.emit('tool-call-failed', {
300
+ serverName: route.serverName,
301
+ toolName,
302
+ args,
303
+ error: error
304
+ });
305
+ return {
306
+ jsonrpc: '2.0',
307
+ id: 0,
308
+ error: {
309
+ code: -32000,
310
+ message: `Tool call failed: ${error.message}`,
311
+ data: {
312
+ toolName,
313
+ serverName: route.serverName,
314
+ originalError: error.message
315
+ }
316
+ }
317
+ };
318
+ }
319
+ }
320
+ async connectAll(options) {
321
+ const { timeout = 8000, maxConcurrent = 3 } = options || {};
322
+ const adaptersToConnect = Array.from(this.adapters.values())
323
+ .filter(adapter => !adapter.isConnected);
324
+ if (adaptersToConnect.length === 0) {
325
+ console.error("[ROUTER] No adapters to connect.");
326
+ return;
327
+ }
328
+ console.error(`[ROUTER] Starting parallel connection of ${adaptersToConnect.length} adapters (timeout: ${timeout}ms, max concurrent: ${maxConcurrent})`);
329
+ // Batch parallel connection, limit concurrency
330
+ const batches = [];
331
+ for (let i = 0; i < adaptersToConnect.length; i += maxConcurrent) {
332
+ batches.push(adaptersToConnect.slice(i, i + maxConcurrent));
333
+ }
334
+ let connectedCount = 0;
335
+ let failedCount = 0;
336
+ for (const batch of batches) {
337
+ const batchPromises = batch.map(async (adapter) => {
338
+ const startTime = Date.now();
339
+ try {
340
+ // Add timeout control for each connection
341
+ await this.connectWithTimeout(adapter, timeout);
342
+ const duration = Date.now() - startTime;
343
+ console.error(`[ROUTER] ✅ ${adapter.name} connection successful (${duration}ms)`);
344
+ connectedCount++;
345
+ }
346
+ catch (error) {
347
+ const duration = Date.now() - startTime;
348
+ console.error(`[ROUTER] ❌ ${adapter.name} connection failed (${duration}ms):`, error.message);
349
+ failedCount++;
350
+ }
351
+ });
352
+ await Promise.allSettled(batchPromises);
353
+ }
354
+ console.error(`[ROUTER] Connection completed: ${connectedCount} successful, ${failedCount} failed`);
355
+ }
356
+ async connectWithTimeout(adapter, timeout) {
357
+ return new Promise(async (resolve, reject) => {
358
+ const timeoutId = setTimeout(() => {
359
+ reject(new Error(`Connection timeout (${timeout}ms)`));
360
+ }, timeout);
361
+ try {
362
+ await adapter.connect();
363
+ clearTimeout(timeoutId);
364
+ resolve();
365
+ }
366
+ catch (error) {
367
+ clearTimeout(timeoutId);
368
+ reject(error);
369
+ }
370
+ });
371
+ }
372
+ async disconnectAll() {
373
+ const disconnectionPromises = Array.from(this.adapters.values())
374
+ .filter(adapter => adapter.isConnected)
375
+ .map(async (adapter) => {
376
+ try {
377
+ await adapter.disconnect();
378
+ }
379
+ catch (error) {
380
+ console.error(`Failed to disconnect ${adapter.name}:`, error);
381
+ }
382
+ });
383
+ await Promise.allSettled(disconnectionPromises);
384
+ }
385
+ getRouteStatus() {
386
+ const connectedAdapters = this.getConnectedAdapters();
387
+ const toolsByServer = {};
388
+ const toolNames = new Set();
389
+ const toolConflicts = [];
390
+ for (const adapter of this.adapters.values()) {
391
+ const tools = this.toolsByServer.get(adapter.name) || [];
392
+ toolsByServer[adapter.name] = tools.length;
393
+ for (const tool of tools) {
394
+ if (toolNames.has(tool.name)) {
395
+ toolConflicts.push(tool.name);
396
+ }
397
+ else {
398
+ toolNames.add(tool.name);
399
+ }
400
+ }
401
+ }
402
+ return {
403
+ totalAdapters: this.adapters.size,
404
+ connectedAdapters: connectedAdapters.length,
405
+ totalTools: this.toolRoutes.size,
406
+ toolsByServer,
407
+ toolConflicts: Array.from(new Set(toolConflicts))
408
+ };
409
+ }
410
+ // Tool search and filtering
411
+ searchTools(query) {
412
+ const allTools = Array.from(this.toolsByServer.values()).flat();
413
+ const lowerQuery = query.toLowerCase();
414
+ return allTools.filter(tool => tool.name.toLowerCase().includes(lowerQuery) ||
415
+ tool.description.toLowerCase().includes(lowerQuery));
416
+ }
417
+ // Enable/disable tools by server
418
+ async enableServerTools(serverName, enabled) {
419
+ if (enabled) {
420
+ await this.refreshToolRoutes(serverName);
421
+ }
422
+ else {
423
+ this.removeToolRoutes(serverName);
424
+ }
425
+ }
426
+ // Manually reconnect specific server (for SIGKILL etc. issues)
427
+ async forceReconnectServer(serverName) {
428
+ const adapter = this.adapters.get(serverName);
429
+ if (!adapter) {
430
+ console.error(`Server ${serverName} not found`);
431
+ return false;
432
+ }
433
+ try {
434
+ console.error(`🔄 Force reconnecting server: ${serverName}`);
435
+ // If adapter supports force reconnect, use dedicated method
436
+ if ('forceReconnect' in adapter && typeof adapter.forceReconnect === 'function') {
437
+ await adapter.forceReconnect();
438
+ }
439
+ else {
440
+ // Otherwise use standard reconnect process
441
+ if (adapter.isConnected) {
442
+ await adapter.disconnect();
443
+ }
444
+ await adapter.connect();
445
+ }
446
+ console.error(`✅ ${serverName} reconnected successfully`);
447
+ return true;
448
+ }
449
+ catch (error) {
450
+ console.error(`❌ Failed to reconnect ${serverName}:`, error.message);
451
+ return false;
452
+ }
453
+ }
454
+ // Get server health status
455
+ getServerHealth() {
456
+ const health = {};
457
+ for (const [name, adapter] of this.adapters) {
458
+ const tools = this.toolsByServer.get(name) || [];
459
+ let status = 'healthy';
460
+ if (!adapter.isConnected) {
461
+ status = 'failed';
462
+ }
463
+ else if (tools.length === 0) {
464
+ status = 'unstable';
465
+ }
466
+ health[name] = {
467
+ connected: adapter.isConnected,
468
+ toolCount: tools.length,
469
+ lastSeen: new Date().toISOString(),
470
+ status
471
+ };
472
+ }
473
+ return health;
474
+ }
475
+ // Auto-heal unhealthy servers
476
+ async autoHealUnhealthyServers() {
477
+ const health = this.getServerHealth();
478
+ for (const [serverName, healthInfo] of Object.entries(health)) {
479
+ if (healthInfo.status === 'failed') {
480
+ console.error(`🩹 Auto-healing failed server: ${serverName}`);
481
+ await this.forceReconnectServer(serverName);
482
+ }
483
+ }
484
+ }
485
+ // Get crash statistics for all servers
486
+ getAllCrashStats() {
487
+ const stats = {};
488
+ for (const [name, adapter] of this.adapters) {
489
+ if ('getCrashStats' in adapter && typeof adapter.getCrashStats === 'function') {
490
+ stats[name] = adapter.getCrashStats();
491
+ }
492
+ }
493
+ return stats;
494
+ }
495
+ // Clear blacklist for specific server
496
+ clearServerBlacklist(serverName) {
497
+ const adapter = this.adapters.get(serverName);
498
+ if (!adapter) {
499
+ console.error(`Server ${serverName} not found`);
500
+ return false;
501
+ }
502
+ if ('clearBlacklist' in adapter && typeof adapter.clearBlacklist === 'function') {
503
+ adapter.clearBlacklist();
504
+ console.error(`🟢 Cleared blacklist for ${serverName}`);
505
+ return true;
506
+ }
507
+ return false;
508
+ }
509
+ // Clear all server blacklists
510
+ clearAllBlacklists() {
511
+ console.error('🟢 Clearing all server blacklists...');
512
+ for (const [name, adapter] of this.adapters) {
513
+ if ('clearBlacklist' in adapter && typeof adapter.clearBlacklist === 'function') {
514
+ adapter.clearBlacklist();
515
+ }
516
+ }
517
+ }
518
+ // Get number of connected servers (for MCPDogServer)
519
+ getConnectedServerCount() {
520
+ return this.getConnectedAdapters().length;
521
+ }
522
+ // Get total number of servers (for MCPDogServer)
523
+ getTotalServerCount() {
524
+ return this.adapters.size;
525
+ }
526
+ // Get tool distribution (for MCPDogServer)
527
+ getToolDistribution() {
528
+ const distribution = {};
529
+ for (const [serverName, tools] of this.toolsByServer) {
530
+ distribution[serverName] = tools.length;
531
+ }
532
+ return distribution;
533
+ }
534
+ async updateServerTools(serverName) {
535
+ console.log(`[ROUTER] Updating tools for server: ${serverName}`);
536
+ await this.refreshToolRoutes(serverName);
537
+ }
538
+ }
539
+ //# sourceMappingURL=tool-router.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.js","sourceRoot":"","sources":["../../src/router/tool-router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-router.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-router.test.d.ts","sourceRoot":"","sources":["../../src/router/tool-router.test.ts"],"names":[],"mappings":""}