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,200 @@
1
+ export class ToolRecommendationEngine {
2
+ toolDatabase;
3
+ constructor(toolDatabase) {
4
+ this.toolDatabase = toolDatabase;
5
+ }
6
+ async getRecommendations(intent) {
7
+ // 1. Get relevant tools from database
8
+ const candidateTools = await this.toolDatabase.findToolsByCategory(intent.category);
9
+ if (candidateTools.length === 0) {
10
+ return [];
11
+ }
12
+ // 2. Calculate recommendation score for each tool
13
+ const recommendations = [];
14
+ for (const tool of candidateTools) {
15
+ const score = this.calculateRecommendationScore(tool, intent);
16
+ if (score > 0.3) { // Minimum recommendation threshold
17
+ const recommendation = {
18
+ tool,
19
+ score,
20
+ rating: this.calculateDisplayRating(tool, score),
21
+ reasoning: this.generateReasoning(tool, intent, score),
22
+ usageInstructions: this.generateUsageInstructions(tool, intent),
23
+ configurationSteps: this.generateConfigurationSteps(tool)
24
+ };
25
+ recommendations.push(recommendation);
26
+ }
27
+ }
28
+ // 3. Sort by score and return top 3
29
+ return recommendations
30
+ .sort((a, b) => b.score - a.score)
31
+ .slice(0, 3);
32
+ }
33
+ calculateRecommendationScore(tool, intent) {
34
+ let score = 0;
35
+ // Basic category matching
36
+ if (tool.category === intent.category) {
37
+ score += 0.4;
38
+ }
39
+ // Keyword matching
40
+ const toolKeywords = [
41
+ ...tool.name.toLowerCase().split(/\s+/),
42
+ ...tool.description.toLowerCase().split(/\s+/),
43
+ ...tool.keywords
44
+ ];
45
+ let keywordMatches = 0;
46
+ for (const keyword of intent.keywords) {
47
+ if (toolKeywords.some(tk => tk.includes(keyword.toLowerCase()) || keyword.toLowerCase().includes(tk))) {
48
+ keywordMatches++;
49
+ }
50
+ }
51
+ score += (keywordMatches / intent.keywords.length) * 0.3;
52
+ // Tool function matching
53
+ const toolFunctions = tool.tools.map(t => t.name.toLowerCase());
54
+ for (const keyword of intent.keywords) {
55
+ if (toolFunctions.some(tf => tf.includes(keyword))) {
56
+ score += 0.2;
57
+ }
58
+ }
59
+ // User data availability bonus
60
+ if (this.hasRequiredData(tool, intent)) {
61
+ score += 0.1;
62
+ }
63
+ // Tool popularity and rating bonus
64
+ const popularityBonus = (tool.stats.users / 10000) * 0.05; // Normalized
65
+ const ratingBonus = (tool.stats.rating / 5) * 0.1;
66
+ score += Math.min(popularityBonus, 0.05) + ratingBonus;
67
+ // Configuration difficulty penalty
68
+ const difficultyPenalty = {
69
+ 'easy': 0,
70
+ 'medium': -0.05,
71
+ 'hard': -0.1
72
+ };
73
+ score += difficultyPenalty[tool.complexity] || 0;
74
+ return Math.max(0, Math.min(1, score));
75
+ }
76
+ hasRequiredData(tool, intent) {
77
+ // Check if user provided key data required by the tool
78
+ const extracted = intent.extractedData;
79
+ if (tool.category === 'email') {
80
+ return !!(extracted.email || extracted.recipient);
81
+ }
82
+ if (tool.category === 'file') {
83
+ return !!(extracted.filename || extracted.url);
84
+ }
85
+ if (tool.category === 'database') {
86
+ return !!(extracted.database);
87
+ }
88
+ return true; // Other categories temporarily return true
89
+ }
90
+ calculateDisplayRating(tool, score) {
91
+ // Combine tool's own rating and recommendation score
92
+ const baseRating = tool.stats.rating;
93
+ const scoreBonus = score * 0.5; // Recommendation score also affects display rating
94
+ return Math.min(5, baseRating + scoreBonus);
95
+ }
96
+ generateReasoning(tool, intent, score) {
97
+ const reasons = [];
98
+ if (tool.category === intent.category) {
99
+ reasons.push(`Specifically designed for ${intent.category} functionality`);
100
+ }
101
+ if (score > 0.8) {
102
+ reasons.push("Highly matches your requirements");
103
+ }
104
+ else if (score > 0.6) {
105
+ reasons.push("Good match for your requirements");
106
+ }
107
+ if (tool.stats.users > 5000) {
108
+ reasons.push("Large user base, stable and reliable");
109
+ }
110
+ if (tool.stats.rating > 4.5) {
111
+ reasons.push("High user rating");
112
+ }
113
+ if (tool.complexity === 'easy') {
114
+ reasons.push("Simple configuration, easy to use");
115
+ }
116
+ if (this.hasRequiredData(tool, intent)) {
117
+ reasons.push("You have provided the required key information");
118
+ }
119
+ return reasons.length > 0 ? reasons.join(", ") : "Feature match";
120
+ }
121
+ generateUsageInstructions(tool, intent) {
122
+ const instructions = [];
123
+ // Basic usage instructions
124
+ instructions.push(`1. Ensure ${tool.name} is properly configured`);
125
+ // Specific tool call example
126
+ if (tool.tools.length > 0) {
127
+ const primaryTool = tool.tools[0];
128
+ const example = this.generateContextualExample(primaryTool, intent);
129
+ instructions.push(`2. Call main function: ${example}`);
130
+ }
131
+ // Category-specific guidance
132
+ if (tool.category === 'email') {
133
+ instructions.push("3. Check email sending status and logs");
134
+ if (intent.extractedData.email) {
135
+ instructions.push(`4. Confirm recipient email: ${intent.extractedData.email}`);
136
+ }
137
+ }
138
+ else if (tool.category === 'database') {
139
+ instructions.push("3. Test database connection");
140
+ instructions.push("4. Check query results");
141
+ }
142
+ else if (tool.category === 'file') {
143
+ instructions.push("3. Verify file path and permissions");
144
+ instructions.push("4. Check file processing results");
145
+ }
146
+ return instructions;
147
+ }
148
+ generateContextualExample(toolDef, intent) {
149
+ const params = { ...toolDef.exampleParams };
150
+ // Intelligently fill parameters based on user intent
151
+ if (intent.extractedData.email && params.to) {
152
+ params.to = intent.extractedData.email;
153
+ }
154
+ if (intent.extractedData.subject && params.subject) {
155
+ params.subject = intent.extractedData.subject;
156
+ }
157
+ if (intent.extractedData.message && (params.body || params.message)) {
158
+ if (params.body)
159
+ params.body = intent.extractedData.message;
160
+ if (params.message)
161
+ params.message = intent.extractedData.message;
162
+ }
163
+ if (intent.extractedData.filename && params.filename) {
164
+ params.filename = intent.extractedData.filename;
165
+ }
166
+ if (intent.extractedData.url && params.url) {
167
+ params.url = intent.extractedData.url;
168
+ }
169
+ return `${toolDef.name}(${JSON.stringify(params, null, 2)})`;
170
+ }
171
+ generateConfigurationSteps(tool) {
172
+ const steps = [];
173
+ // General configuration steps
174
+ steps.push(`1. Install ${tool.name}: npm install ${tool.id}`);
175
+ if (tool.envVars && tool.envVars.length > 0) {
176
+ steps.push(`2. Configure environment variables: ${tool.envVars.join(', ')}`);
177
+ }
178
+ // Category-specific configuration
179
+ switch (tool.category) {
180
+ case 'email':
181
+ steps.push("3. Configure SMTP server or API keys");
182
+ steps.push("4. Test email sending functionality");
183
+ break;
184
+ case 'database':
185
+ steps.push("3. Configure database connection parameters");
186
+ steps.push("4. Test database connection");
187
+ break;
188
+ case 'api':
189
+ steps.push("3. Obtain and configure API keys");
190
+ steps.push("4. Test API calls");
191
+ break;
192
+ default:
193
+ steps.push("3. Complete specific configuration according to documentation");
194
+ steps.push("4. Test basic functionality");
195
+ }
196
+ steps.push(`5. Add ${tool.name} to MCP client configuration`);
197
+ return steps;
198
+ }
199
+ }
200
+ //# sourceMappingURL=tool-recommender.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-recommender.js","sourceRoot":"","sources":["../src/tool-recommender.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,145 @@
1
+ import { EventEmitter } from 'events';
2
+ export interface MCPServerConfig {
3
+ name: string;
4
+ enabled: boolean;
5
+ transport: 'stdio' | 'http-sse' | 'streamable-http';
6
+ description?: string;
7
+ command?: string;
8
+ args?: string[];
9
+ cwd?: string;
10
+ env?: Record<string, string>;
11
+ endpoint?: string;
12
+ url?: string;
13
+ apiKey?: string;
14
+ headers?: Record<string, string>;
15
+ adminUrl?: string;
16
+ sseReconnectInterval?: number;
17
+ httpKeepAlive?: boolean;
18
+ sseEndpoint?: string;
19
+ maxChunkSize?: number;
20
+ streamTimeout?: number;
21
+ streamEndpoint?: string;
22
+ sessionMode?: 'auto' | 'required' | 'disabled';
23
+ toolsConfig?: {
24
+ mode: 'all' | 'whitelist' | 'blacklist';
25
+ enabledTools?: string[];
26
+ disabledTools?: string[];
27
+ toolSettings?: Record<string, {
28
+ enabled: boolean;
29
+ alias?: string;
30
+ description?: string;
31
+ }>;
32
+ };
33
+ timeout?: number;
34
+ retries?: number;
35
+ enabledTools?: string[];
36
+ }
37
+ export interface MCPDogConfig {
38
+ version: string;
39
+ servers: Record<string, MCPServerConfig>;
40
+ web?: {
41
+ enabled: boolean;
42
+ port: number;
43
+ host: string;
44
+ };
45
+ logging?: {
46
+ level: 'error' | 'warn' | 'info' | 'debug';
47
+ file?: string;
48
+ };
49
+ aiGateway?: AIGatewayConfig;
50
+ providers?: AIProviderConfig[];
51
+ }
52
+ export interface AIProviderConfig {
53
+ id: string;
54
+ slug: string;
55
+ name?: string;
56
+ dialect: 'openai' | 'anthropic' | 'gemini';
57
+ baseUrl: string;
58
+ apiKey: string;
59
+ enabled: boolean;
60
+ models?: string[];
61
+ headers?: Record<string, string>;
62
+ }
63
+ export interface AIGatewayConfig {
64
+ enabled: boolean;
65
+ port: number;
66
+ host: string;
67
+ apiKey: string;
68
+ }
69
+ export interface MCPTool {
70
+ name: string;
71
+ description: string;
72
+ inputSchema: {
73
+ type: string;
74
+ properties?: Record<string, any>;
75
+ required?: string[];
76
+ };
77
+ }
78
+ export interface MCPRequest {
79
+ jsonrpc: '2.0';
80
+ id: string | number;
81
+ method: string;
82
+ params?: any;
83
+ }
84
+ export interface MCPNotificationRequest {
85
+ jsonrpc: '2.0';
86
+ method: string;
87
+ params?: any;
88
+ }
89
+ export type MCPMessage = MCPRequest | MCPNotificationRequest;
90
+ export interface MCPResponse {
91
+ jsonrpc: '2.0';
92
+ id: string | number;
93
+ result?: any;
94
+ error?: {
95
+ code: number;
96
+ message: string;
97
+ data?: any;
98
+ };
99
+ }
100
+ export interface MCPNotification {
101
+ jsonrpc: '2.0';
102
+ method: string;
103
+ params?: any;
104
+ }
105
+ export interface ServerAdapter extends EventEmitter {
106
+ name: string;
107
+ config: MCPServerConfig;
108
+ isConnected: boolean;
109
+ connect(): Promise<void>;
110
+ disconnect(): Promise<void>;
111
+ getTools(): Promise<MCPTool[]>;
112
+ callTool(name: string, args: any): Promise<MCPResponse>;
113
+ sendRequest(request: MCPRequest): Promise<MCPResponse>;
114
+ }
115
+ export interface ClientCapabilities {
116
+ supportsNotifications: boolean;
117
+ clientName: string;
118
+ clientVersion: string;
119
+ }
120
+ export type MCPDogEvents = {
121
+ 'server-connected': {
122
+ serverName: string;
123
+ };
124
+ 'server-disconnected': {
125
+ serverName: string;
126
+ error?: Error;
127
+ };
128
+ 'tools-changed': {
129
+ serverName?: string;
130
+ };
131
+ 'config-updated': {
132
+ config: MCPDogConfig;
133
+ };
134
+ 'tool-called': {
135
+ serverName: string;
136
+ toolName: string;
137
+ args: any;
138
+ result: any;
139
+ };
140
+ 'error': {
141
+ error: Error;
142
+ context?: string;
143
+ };
144
+ };
145
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Server Name Validator
3
+ * Provides unified validation and naming conventions for MCP server names
4
+ */
5
+ export interface ServerNameValidationResult {
6
+ valid: boolean;
7
+ error?: string;
8
+ suggestions?: string[];
9
+ }
10
+ export declare class ServerNameValidator {
11
+ private static readonly SERVER_NAME_PATTERN;
12
+ private static readonly MAX_NAME_LENGTH;
13
+ private static readonly MIN_NAME_LENGTH;
14
+ /**
15
+ * Validate server name according to best practices
16
+ */
17
+ static validateServerName(name: string): ServerNameValidationResult;
18
+ /**
19
+ * Generate suggestions for invalid server names
20
+ */
21
+ private static generateSuggestions;
22
+ /**
23
+ * Check if a name is reserved
24
+ */
25
+ private static isReservedName;
26
+ /**
27
+ * Generate a unique server name based on base name and existing names
28
+ */
29
+ static generateUniqueName(baseName: string, existingNames: string[]): string;
30
+ /**
31
+ * Normalize server name (convert to valid format)
32
+ */
33
+ static normalizeServerName(name: string): string;
34
+ /**
35
+ * Check if server name conflicts with existing names
36
+ */
37
+ static checkNameConflict(name: string, existingNames: string[]): boolean;
38
+ /**
39
+ * Get all validation errors for multiple server names
40
+ */
41
+ static validateMultipleNames(names: string[]): {
42
+ valid: boolean;
43
+ errors: string[];
44
+ conflicts: string[];
45
+ };
46
+ }
47
+ //# sourceMappingURL=server-name-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-name-validator.d.ts","sourceRoot":"","sources":["../../src/utils/server-name-validator.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,qBAAa,mBAAmB;IAE9B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAuB;IAGlE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAG7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAK;IAE5C;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,0BAA0B;IA6CnE;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAqClC;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B;;OAEG;IACH,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM;IAgB5E;;OAEG;IACH,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAShD;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,OAAO;IAIxE;;OAEG;IACH,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG;QAC7C,KAAK,EAAE,OAAO,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB;CAyBF"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Server Name Validator
3
+ * Provides unified validation and naming conventions for MCP server names
4
+ */
5
+ export class ServerNameValidator {
6
+ // Server name regex pattern - only letters, numbers, hyphens, and underscores
7
+ static SERVER_NAME_PATTERN = /^[a-zA-Z0-9\-_]+$/;
8
+ // Maximum length for server names
9
+ static MAX_NAME_LENGTH = 50;
10
+ // Minimum length for server names
11
+ static MIN_NAME_LENGTH = 1;
12
+ /**
13
+ * Validate server name according to best practices
14
+ */
15
+ static validateServerName(name) {
16
+ // Check if name is empty
17
+ if (!name || name.trim() === '') {
18
+ return {
19
+ valid: false,
20
+ error: 'Server name cannot be empty'
21
+ };
22
+ }
23
+ // Check minimum length
24
+ if (name.length < this.MIN_NAME_LENGTH) {
25
+ return {
26
+ valid: false,
27
+ error: `Server name must be at least ${this.MIN_NAME_LENGTH} character long`
28
+ };
29
+ }
30
+ // Check maximum length
31
+ if (name.length > this.MAX_NAME_LENGTH) {
32
+ return {
33
+ valid: false,
34
+ error: `Server name too long (max ${this.MAX_NAME_LENGTH} characters)`
35
+ };
36
+ }
37
+ // Check pattern (only letters, numbers, hyphens, and underscores)
38
+ if (!this.SERVER_NAME_PATTERN.test(name)) {
39
+ return {
40
+ valid: false,
41
+ error: 'Server name can only contain letters, numbers, hyphens, and underscores',
42
+ suggestions: this.generateSuggestions(name)
43
+ };
44
+ }
45
+ // Check for reserved names
46
+ if (this.isReservedName(name)) {
47
+ return {
48
+ valid: false,
49
+ error: `"${name}" is a reserved name and cannot be used`
50
+ };
51
+ }
52
+ return { valid: true };
53
+ }
54
+ /**
55
+ * Generate suggestions for invalid server names
56
+ */
57
+ static generateSuggestions(invalidName) {
58
+ const suggestions = [];
59
+ // Remove special characters and replace with hyphens
60
+ let cleaned = invalidName
61
+ .replace(/[^a-zA-Z0-9\-_]/g, '-')
62
+ .replace(/-+/g, '-')
63
+ .replace(/^-|-$/g, '');
64
+ if (cleaned && this.SERVER_NAME_PATTERN.test(cleaned)) {
65
+ suggestions.push(cleaned);
66
+ }
67
+ // Convert to lowercase and replace spaces with hyphens
68
+ let lowerCase = invalidName
69
+ .toLowerCase()
70
+ .replace(/\s+/g, '-')
71
+ .replace(/[^a-z0-9\-_]/g, '');
72
+ if (lowerCase && this.SERVER_NAME_PATTERN.test(lowerCase)) {
73
+ suggestions.push(lowerCase);
74
+ }
75
+ // Add common patterns
76
+ if (invalidName.includes(' ')) {
77
+ const words = invalidName.split(/\s+/).filter(word => word.length > 0);
78
+ if (words.length > 0) {
79
+ const joined = words.join('-').toLowerCase().replace(/[^a-z0-9\-_]/g, '');
80
+ if (joined && this.SERVER_NAME_PATTERN.test(joined)) {
81
+ suggestions.push(joined);
82
+ }
83
+ }
84
+ }
85
+ return suggestions.slice(0, 3); // Limit to 3 suggestions
86
+ }
87
+ /**
88
+ * Check if a name is reserved
89
+ */
90
+ static isReservedName(name) {
91
+ const reservedNames = [
92
+ 'config', 'settings', 'system', 'admin', 'root', 'default',
93
+ 'test', 'temp', 'tmp', 'backup', 'old', 'new',
94
+ 'server', 'client', 'api', 'web', 'app', 'service'
95
+ ];
96
+ return reservedNames.includes(name.toLowerCase());
97
+ }
98
+ /**
99
+ * Generate a unique server name based on base name and existing names
100
+ */
101
+ static generateUniqueName(baseName, existingNames) {
102
+ if (!existingNames.includes(baseName)) {
103
+ return baseName;
104
+ }
105
+ let counter = 1;
106
+ let newName = `${baseName}-${counter}`;
107
+ while (existingNames.includes(newName)) {
108
+ counter++;
109
+ newName = `${baseName}-${counter}`;
110
+ }
111
+ return newName;
112
+ }
113
+ /**
114
+ * Normalize server name (convert to valid format)
115
+ */
116
+ static normalizeServerName(name) {
117
+ return name
118
+ .toLowerCase()
119
+ .replace(/[^a-z0-9\-_]/g, '-')
120
+ .replace(/-+/g, '-')
121
+ .replace(/^-|-$/g, '')
122
+ .substring(0, this.MAX_NAME_LENGTH);
123
+ }
124
+ /**
125
+ * Check if server name conflicts with existing names
126
+ */
127
+ static checkNameConflict(name, existingNames) {
128
+ return existingNames.includes(name);
129
+ }
130
+ /**
131
+ * Get all validation errors for multiple server names
132
+ */
133
+ static validateMultipleNames(names) {
134
+ const errors = [];
135
+ const conflicts = [];
136
+ const seenNames = new Set();
137
+ for (const name of names) {
138
+ const validation = this.validateServerName(name);
139
+ if (!validation.valid) {
140
+ errors.push(`"${name}": ${validation.error}`);
141
+ }
142
+ if (seenNames.has(name)) {
143
+ conflicts.push(name);
144
+ }
145
+ else {
146
+ seenNames.add(name);
147
+ }
148
+ }
149
+ return {
150
+ valid: errors.length === 0 && conflicts.length === 0,
151
+ errors,
152
+ conflicts
153
+ };
154
+ }
155
+ }
156
+ //# sourceMappingURL=server-name-validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-name-validator.js","sourceRoot":"","sources":["../../src/utils/server-name-validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * MCPDog Web Management Interface Server
3
+ * Provides REST API and WebSocket real-time communication
4
+ */
5
+ export interface WebServerOptions {
6
+ port: number;
7
+ configPath?: string;
8
+ staticPath?: string;
9
+ }
10
+ export declare class MCPDogWebServer {
11
+ private app;
12
+ private server;
13
+ private io;
14
+ private mcpServer;
15
+ private configManager;
16
+ private port;
17
+ constructor(options: WebServerOptions);
18
+ private setupMiddleware;
19
+ private createAPIRouter;
20
+ private setupRoutes;
21
+ private setupWebSocket;
22
+ private setupMCPServerEvents;
23
+ private handleGetStatus;
24
+ private handleGetServers;
25
+ private handleGetTools;
26
+ private handleCallTool;
27
+ private handleGetConfig;
28
+ private sendStatusUpdate;
29
+ private broadcastStatusUpdate;
30
+ private handleAddServer;
31
+ private handleUpdateServer;
32
+ private handleRemoveServer;
33
+ private handleToggleServer;
34
+ private handleUpdateConfig;
35
+ start(): Promise<void>;
36
+ private startMCPServerInBackground;
37
+ stop(): Promise<void>;
38
+ private handleGetAllLogs;
39
+ private handleGetServerLogs;
40
+ private handleGetServerStats;
41
+ private handleClearServerLogs;
42
+ private handleExportServerLogs;
43
+ }
44
+ //# sourceMappingURL=web-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-server.d.ts","sourceRoot":"","sources":["../../src/web/web-server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,EAAE,CAAiB;IAC3B,OAAO,CAAC,SAAS,CAAe;IAChC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,gBAAgB;IAqBrC,OAAO,CAAC,eAAe;IAevB,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,oBAAoB;YAyCd,eAAe;YAgCf,gBAAgB;YA8BhB,cAAc;YAsBd,cAAc;YAiBd,eAAe;YAaf,gBAAgB;IA8B9B,OAAO,CAAC,qBAAqB;YAOf,eAAe;YAef,kBAAkB;YAgBlB,kBAAkB;YAelB,kBAAkB;YAgBlB,kBAAkB;IAoB1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAwBd,0BAA0B;IAWlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAiBb,gBAAgB;YAiBhB,mBAAmB;YAmCnB,oBAAoB;YAqBpB,qBAAqB;YAerB,sBAAsB;CAkBrC"}