moflo 4.8.19 → 4.8.20

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 (241) hide show
  1. package/.claude/guidance/shipped/moflo.md +45 -0
  2. package/.claude/helpers/statusline.cjs +1 -1
  3. package/.claude/workflow-state.json +9 -0
  4. package/package.json +2 -2
  5. package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +1 -1
  6. package/src/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +5 -3
  7. package/src/@claude-flow/cli/package.json +1 -1
  8. package/src/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
  9. package/src/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
  10. package/src/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
  11. package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +466 -0
  12. package/src/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
  13. package/src/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
  14. package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +212 -0
  15. package/src/@claude-flow/memory/dist/agentdb-backend.js +842 -0
  16. package/src/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
  17. package/src/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
  18. package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
  19. package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
  20. package/src/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
  21. package/src/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
  22. package/src/@claude-flow/memory/dist/application/index.d.ts +12 -0
  23. package/src/@claude-flow/memory/dist/application/index.js +15 -0
  24. package/src/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
  25. package/src/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
  26. package/src/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
  27. package/src/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
  28. package/src/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
  29. package/src/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
  30. package/src/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
  31. package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +757 -0
  32. package/src/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
  33. package/src/@claude-flow/memory/dist/benchmark.test.js +277 -0
  34. package/src/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
  35. package/src/@claude-flow/memory/dist/cache-manager.js +407 -0
  36. package/src/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
  37. package/src/@claude-flow/memory/dist/controller-registry.js +893 -0
  38. package/src/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
  39. package/src/@claude-flow/memory/dist/controller-registry.test.js +593 -0
  40. package/src/@claude-flow/memory/dist/database-provider.d.ts +87 -0
  41. package/src/@claude-flow/memory/dist/database-provider.js +372 -0
  42. package/src/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
  43. package/src/@claude-flow/memory/dist/database-provider.test.js +287 -0
  44. package/src/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
  45. package/src/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
  46. package/src/@claude-flow/memory/dist/domain/index.d.ts +11 -0
  47. package/src/@claude-flow/memory/dist/domain/index.js +12 -0
  48. package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
  49. package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
  50. package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
  51. package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
  52. package/src/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
  53. package/src/@claude-flow/memory/dist/hnsw-index.js +781 -0
  54. package/src/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
  55. package/src/@claude-flow/memory/dist/hnsw-lite.js +168 -0
  56. package/src/@claude-flow/memory/dist/index.d.ts +204 -0
  57. package/src/@claude-flow/memory/dist/index.js +358 -0
  58. package/src/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
  59. package/src/@claude-flow/memory/dist/infrastructure/index.js +16 -0
  60. package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
  61. package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
  62. package/src/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
  63. package/src/@claude-flow/memory/dist/learning-bridge.js +335 -0
  64. package/src/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
  65. package/src/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
  66. package/src/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
  67. package/src/@claude-flow/memory/dist/memory-graph.js +333 -0
  68. package/src/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
  69. package/src/@claude-flow/memory/dist/memory-graph.test.js +609 -0
  70. package/src/@claude-flow/memory/dist/migration.d.ts +68 -0
  71. package/src/@claude-flow/memory/dist/migration.js +513 -0
  72. package/src/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
  73. package/src/@claude-flow/memory/dist/persistent-sona.js +332 -0
  74. package/src/@claude-flow/memory/dist/query-builder.d.ts +211 -0
  75. package/src/@claude-flow/memory/dist/query-builder.js +438 -0
  76. package/src/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
  77. package/src/@claude-flow/memory/dist/rvf-backend.js +481 -0
  78. package/src/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
  79. package/src/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
  80. package/src/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
  81. package/src/@claude-flow/memory/dist/rvf-migration.js +234 -0
  82. package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +127 -0
  83. package/src/@claude-flow/memory/dist/sqljs-backend.js +600 -0
  84. package/src/@claude-flow/memory/dist/types.d.ts +484 -0
  85. package/src/@claude-flow/memory/dist/types.js +58 -0
  86. package/src/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
  87. package/src/@claude-flow/shared/dist/core/config/defaults.js +186 -0
  88. package/src/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
  89. package/src/@claude-flow/shared/dist/core/config/index.js +12 -0
  90. package/src/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
  91. package/src/@claude-flow/shared/dist/core/config/loader.js +222 -0
  92. package/src/@claude-flow/shared/dist/core/config/schema.d.ts +1134 -0
  93. package/src/@claude-flow/shared/dist/core/config/schema.js +158 -0
  94. package/src/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
  95. package/src/@claude-flow/shared/dist/core/config/validator.js +147 -0
  96. package/src/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
  97. package/src/@claude-flow/shared/dist/core/event-bus.js +197 -0
  98. package/src/@claude-flow/shared/dist/core/index.d.ts +15 -0
  99. package/src/@claude-flow/shared/dist/core/index.js +19 -0
  100. package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
  101. package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
  102. package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
  103. package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
  104. package/src/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
  105. package/src/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
  106. package/src/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
  107. package/src/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
  108. package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
  109. package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
  110. package/src/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
  111. package/src/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
  112. package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
  113. package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
  114. package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
  115. package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
  116. package/src/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
  117. package/src/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
  118. package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
  119. package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
  120. package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
  121. package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
  122. package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
  123. package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
  124. package/src/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
  125. package/src/@claude-flow/shared/dist/events/domain-events.js +165 -0
  126. package/src/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
  127. package/src/@claude-flow/shared/dist/events/event-store.js +432 -0
  128. package/src/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
  129. package/src/@claude-flow/shared/dist/events/event-store.test.js +297 -0
  130. package/src/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
  131. package/src/@claude-flow/shared/dist/events/example-usage.js +193 -0
  132. package/src/@claude-flow/shared/dist/events/index.d.ts +21 -0
  133. package/src/@claude-flow/shared/dist/events/index.js +22 -0
  134. package/src/@claude-flow/shared/dist/events/projections.d.ts +177 -0
  135. package/src/@claude-flow/shared/dist/events/projections.js +421 -0
  136. package/src/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
  137. package/src/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
  138. package/src/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
  139. package/src/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
  140. package/src/@claude-flow/shared/dist/events.d.ts +80 -0
  141. package/src/@claude-flow/shared/dist/events.js +249 -0
  142. package/src/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
  143. package/src/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
  144. package/src/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
  145. package/src/@claude-flow/shared/dist/hooks/executor.js +267 -0
  146. package/src/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
  147. package/src/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
  148. package/src/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
  149. package/src/@claude-flow/shared/dist/hooks/index.js +51 -0
  150. package/src/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
  151. package/src/@claude-flow/shared/dist/hooks/registry.js +277 -0
  152. package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
  153. package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
  154. package/src/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
  155. package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
  156. package/src/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
  157. package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
  158. package/src/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
  159. package/src/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
  160. package/src/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
  161. package/src/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
  162. package/src/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
  163. package/src/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
  164. package/src/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
  165. package/src/@claude-flow/shared/dist/hooks/types.js +62 -0
  166. package/src/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
  167. package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
  168. package/src/@claude-flow/shared/dist/index.d.ts +20 -0
  169. package/src/@claude-flow/shared/dist/index.js +50 -0
  170. package/src/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
  171. package/src/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
  172. package/src/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
  173. package/src/@claude-flow/shared/dist/mcp/index.js +84 -0
  174. package/src/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
  175. package/src/@claude-flow/shared/dist/mcp/server.js +593 -0
  176. package/src/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
  177. package/src/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
  178. package/src/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
  179. package/src/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
  180. package/src/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
  181. package/src/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
  182. package/src/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
  183. package/src/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
  184. package/src/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
  185. package/src/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
  186. package/src/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
  187. package/src/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
  188. package/src/@claude-flow/shared/dist/mcp/types.d.ts +438 -0
  189. package/src/@claude-flow/shared/dist/mcp/types.js +54 -0
  190. package/src/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
  191. package/src/@claude-flow/shared/dist/plugin-interface.js +23 -0
  192. package/src/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
  193. package/src/@claude-flow/shared/dist/plugin-loader.js +434 -0
  194. package/src/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
  195. package/src/@claude-flow/shared/dist/plugin-registry.js +457 -0
  196. package/src/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
  197. package/src/@claude-flow/shared/dist/plugins/index.js +10 -0
  198. package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
  199. package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
  200. package/src/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
  201. package/src/@claude-flow/shared/dist/plugins/official/index.js +10 -0
  202. package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
  203. package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
  204. package/src/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
  205. package/src/@claude-flow/shared/dist/plugins/types.js +9 -0
  206. package/src/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
  207. package/src/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
  208. package/src/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
  209. package/src/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
  210. package/src/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
  211. package/src/@claude-flow/shared/dist/resilience/index.js +19 -0
  212. package/src/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
  213. package/src/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
  214. package/src/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
  215. package/src/@claude-flow/shared/dist/resilience/retry.js +159 -0
  216. package/src/@claude-flow/shared/dist/security/index.d.ts +10 -0
  217. package/src/@claude-flow/shared/dist/security/index.js +12 -0
  218. package/src/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
  219. package/src/@claude-flow/shared/dist/security/input-validation.js +201 -0
  220. package/src/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
  221. package/src/@claude-flow/shared/dist/security/secure-random.js +142 -0
  222. package/src/@claude-flow/shared/dist/services/index.d.ts +7 -0
  223. package/src/@claude-flow/shared/dist/services/index.js +7 -0
  224. package/src/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
  225. package/src/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
  226. package/src/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
  227. package/src/@claude-flow/shared/dist/types/agent.types.js +6 -0
  228. package/src/@claude-flow/shared/dist/types/index.d.ts +11 -0
  229. package/src/@claude-flow/shared/dist/types/index.js +17 -0
  230. package/src/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
  231. package/src/@claude-flow/shared/dist/types/mcp.types.js +7 -0
  232. package/src/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
  233. package/src/@claude-flow/shared/dist/types/memory.types.js +7 -0
  234. package/src/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
  235. package/src/@claude-flow/shared/dist/types/swarm.types.js +65 -0
  236. package/src/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
  237. package/src/@claude-flow/shared/dist/types/task.types.js +32 -0
  238. package/src/@claude-flow/shared/dist/types.d.ts +197 -0
  239. package/src/@claude-flow/shared/dist/types.js +21 -0
  240. package/src/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
  241. package/src/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
@@ -0,0 +1,364 @@
1
+ /**
2
+ * V3 MCP Connection Pool Manager
3
+ *
4
+ * High-performance connection pooling for MCP server:
5
+ * - Reusable connections to reduce overhead
6
+ * - Max connections: 10 (configurable)
7
+ * - Idle timeout handling with automatic eviction
8
+ * - Connection health monitoring
9
+ * - Graceful shutdown support
10
+ *
11
+ * Performance Targets:
12
+ * - Connection acquire: <5ms
13
+ * - Connection release: <1ms
14
+ */
15
+ import { EventEmitter } from 'events';
16
+ /**
17
+ * Default connection pool configuration
18
+ */
19
+ const DEFAULT_POOL_CONFIG = {
20
+ maxConnections: 10,
21
+ minConnections: 2,
22
+ idleTimeout: 30000, // 30 seconds
23
+ acquireTimeout: 5000, // 5 seconds
24
+ maxWaitingClients: 50,
25
+ evictionRunInterval: 10000, // 10 seconds
26
+ };
27
+ /**
28
+ * Connection wrapper with lifecycle management
29
+ */
30
+ class ManagedConnection {
31
+ id;
32
+ transport;
33
+ createdAt;
34
+ metadata;
35
+ state = 'idle';
36
+ lastUsedAt;
37
+ useCount = 0;
38
+ constructor(id, transport, createdAt = new Date(), metadata) {
39
+ this.id = id;
40
+ this.transport = transport;
41
+ this.createdAt = createdAt;
42
+ this.metadata = metadata;
43
+ this.lastUsedAt = this.createdAt;
44
+ }
45
+ /**
46
+ * Mark connection as busy
47
+ */
48
+ acquire() {
49
+ this.state = 'busy';
50
+ this.lastUsedAt = new Date();
51
+ this.useCount++;
52
+ }
53
+ /**
54
+ * Mark connection as idle
55
+ */
56
+ release() {
57
+ this.state = 'idle';
58
+ this.lastUsedAt = new Date();
59
+ }
60
+ /**
61
+ * Check if connection is expired
62
+ */
63
+ isExpired(idleTimeout) {
64
+ if (this.state !== 'idle')
65
+ return false;
66
+ return Date.now() - this.lastUsedAt.getTime() > idleTimeout;
67
+ }
68
+ /**
69
+ * Check if connection is healthy
70
+ */
71
+ isHealthy() {
72
+ return this.state !== 'error' && this.state !== 'closed';
73
+ }
74
+ }
75
+ /**
76
+ * Connection Pool Manager
77
+ *
78
+ * Manages a pool of reusable connections for optimal performance
79
+ */
80
+ export class ConnectionPool extends EventEmitter {
81
+ logger;
82
+ transportType;
83
+ config;
84
+ connections = new Map();
85
+ waitingClients = [];
86
+ evictionTimer;
87
+ connectionCounter = 0;
88
+ isShuttingDown = false;
89
+ // Statistics
90
+ stats = {
91
+ totalAcquired: 0,
92
+ totalReleased: 0,
93
+ totalCreated: 0,
94
+ totalDestroyed: 0,
95
+ acquireTimeTotal: 0,
96
+ acquireCount: 0,
97
+ };
98
+ constructor(config = {}, logger, transportType = 'in-process') {
99
+ super();
100
+ this.logger = logger;
101
+ this.transportType = transportType;
102
+ this.config = { ...DEFAULT_POOL_CONFIG, ...config };
103
+ this.startEvictionTimer();
104
+ this.initializeMinConnections();
105
+ }
106
+ /**
107
+ * Initialize minimum number of connections
108
+ */
109
+ async initializeMinConnections() {
110
+ const promises = [];
111
+ for (let i = 0; i < this.config.minConnections; i++) {
112
+ promises.push(this.createConnection());
113
+ }
114
+ await Promise.all(promises);
115
+ this.logger.debug('Connection pool initialized', {
116
+ minConnections: this.config.minConnections,
117
+ });
118
+ }
119
+ /**
120
+ * Create a new connection
121
+ */
122
+ async createConnection() {
123
+ const id = `conn-${++this.connectionCounter}-${Date.now()}`;
124
+ const connection = new ManagedConnection(id, this.transportType);
125
+ this.connections.set(id, connection);
126
+ this.stats.totalCreated++;
127
+ this.emit('pool:connection:created', { connectionId: id });
128
+ this.logger.debug('Connection created', { id, total: this.connections.size });
129
+ return connection;
130
+ }
131
+ /**
132
+ * Acquire a connection from the pool
133
+ */
134
+ async acquire() {
135
+ const startTime = performance.now();
136
+ if (this.isShuttingDown) {
137
+ throw new Error('Connection pool is shutting down');
138
+ }
139
+ // Try to find an idle connection
140
+ for (const connection of this.connections.values()) {
141
+ if (connection.state === 'idle' && connection.isHealthy()) {
142
+ connection.acquire();
143
+ this.stats.totalAcquired++;
144
+ this.recordAcquireTime(startTime);
145
+ this.emit('pool:connection:acquired', { connectionId: connection.id });
146
+ this.logger.debug('Connection acquired from pool', { id: connection.id });
147
+ return connection;
148
+ }
149
+ }
150
+ // Create new connection if under limit
151
+ if (this.connections.size < this.config.maxConnections) {
152
+ const connection = await this.createConnection();
153
+ connection.acquire();
154
+ this.stats.totalAcquired++;
155
+ this.recordAcquireTime(startTime);
156
+ this.emit('pool:connection:acquired', { connectionId: connection.id });
157
+ return connection;
158
+ }
159
+ // Wait for a connection to become available
160
+ return this.waitForConnection(startTime);
161
+ }
162
+ /**
163
+ * Wait for a connection to become available
164
+ */
165
+ waitForConnection(startTime) {
166
+ return new Promise((resolve, reject) => {
167
+ if (this.waitingClients.length >= this.config.maxWaitingClients) {
168
+ reject(new Error('Connection pool exhausted - max waiting clients reached'));
169
+ return;
170
+ }
171
+ const client = {
172
+ resolve: (connection) => {
173
+ this.recordAcquireTime(startTime);
174
+ resolve(connection);
175
+ },
176
+ reject,
177
+ timestamp: Date.now(),
178
+ };
179
+ this.waitingClients.push(client);
180
+ // Set timeout
181
+ setTimeout(() => {
182
+ const index = this.waitingClients.indexOf(client);
183
+ if (index !== -1) {
184
+ this.waitingClients.splice(index, 1);
185
+ reject(new Error(`Connection acquire timeout after ${this.config.acquireTimeout}ms`));
186
+ }
187
+ }, this.config.acquireTimeout);
188
+ });
189
+ }
190
+ /**
191
+ * Release a connection back to the pool
192
+ */
193
+ release(connection) {
194
+ const managed = this.connections.get(connection.id);
195
+ if (!managed) {
196
+ this.logger.warn('Attempted to release unknown connection', { id: connection.id });
197
+ return;
198
+ }
199
+ // Check for waiting clients first
200
+ const waitingClient = this.waitingClients.shift();
201
+ if (waitingClient) {
202
+ managed.acquire();
203
+ this.stats.totalAcquired++;
204
+ this.emit('pool:connection:acquired', { connectionId: connection.id });
205
+ waitingClient.resolve(managed);
206
+ return;
207
+ }
208
+ // Return to pool
209
+ managed.release();
210
+ this.stats.totalReleased++;
211
+ this.emit('pool:connection:released', { connectionId: connection.id });
212
+ this.logger.debug('Connection released to pool', { id: connection.id });
213
+ }
214
+ /**
215
+ * Destroy a connection (remove from pool)
216
+ */
217
+ destroy(connection) {
218
+ const managed = this.connections.get(connection.id);
219
+ if (!managed) {
220
+ return;
221
+ }
222
+ managed.state = 'closed';
223
+ this.connections.delete(connection.id);
224
+ this.stats.totalDestroyed++;
225
+ this.emit('pool:connection:destroyed', { connectionId: connection.id });
226
+ this.logger.debug('Connection destroyed', { id: connection.id });
227
+ // Create new connection to maintain minimum if needed
228
+ if (this.connections.size < this.config.minConnections && !this.isShuttingDown) {
229
+ this.createConnection().catch((err) => {
230
+ this.logger.error('Failed to create replacement connection', err);
231
+ });
232
+ }
233
+ }
234
+ /**
235
+ * Get pool statistics
236
+ */
237
+ getStats() {
238
+ let idleCount = 0;
239
+ let busyCount = 0;
240
+ for (const connection of this.connections.values()) {
241
+ if (connection.state === 'idle')
242
+ idleCount++;
243
+ else if (connection.state === 'busy')
244
+ busyCount++;
245
+ }
246
+ return {
247
+ totalConnections: this.connections.size,
248
+ idleConnections: idleCount,
249
+ busyConnections: busyCount,
250
+ pendingRequests: this.waitingClients.length,
251
+ totalAcquired: this.stats.totalAcquired,
252
+ totalReleased: this.stats.totalReleased,
253
+ totalCreated: this.stats.totalCreated,
254
+ totalDestroyed: this.stats.totalDestroyed,
255
+ avgAcquireTime: this.stats.acquireCount > 0
256
+ ? this.stats.acquireTimeTotal / this.stats.acquireCount
257
+ : 0,
258
+ };
259
+ }
260
+ /**
261
+ * Drain the pool (wait for all connections to be released)
262
+ */
263
+ async drain() {
264
+ this.isShuttingDown = true;
265
+ this.logger.info('Draining connection pool');
266
+ // Reject all waiting clients
267
+ while (this.waitingClients.length > 0) {
268
+ const client = this.waitingClients.shift();
269
+ client?.reject(new Error('Connection pool is draining'));
270
+ }
271
+ // Wait for busy connections to be released
272
+ const maxWait = 10000; // 10 seconds
273
+ const startTime = Date.now();
274
+ while (Date.now() - startTime < maxWait) {
275
+ let busyCount = 0;
276
+ for (const connection of this.connections.values()) {
277
+ if (connection.state === 'busy')
278
+ busyCount++;
279
+ }
280
+ if (busyCount === 0)
281
+ break;
282
+ await new Promise((resolve) => setTimeout(resolve, 100));
283
+ }
284
+ this.logger.info('Connection pool drained');
285
+ }
286
+ /**
287
+ * Clear all connections from the pool
288
+ */
289
+ async clear() {
290
+ this.stopEvictionTimer();
291
+ await this.drain();
292
+ // Destroy all remaining connections
293
+ for (const connection of this.connections.values()) {
294
+ connection.state = 'closed';
295
+ }
296
+ this.connections.clear();
297
+ this.logger.info('Connection pool cleared');
298
+ }
299
+ /**
300
+ * Start the eviction timer
301
+ */
302
+ startEvictionTimer() {
303
+ this.evictionTimer = setInterval(() => {
304
+ this.evictIdleConnections();
305
+ }, this.config.evictionRunInterval);
306
+ }
307
+ /**
308
+ * Stop the eviction timer
309
+ */
310
+ stopEvictionTimer() {
311
+ if (this.evictionTimer) {
312
+ clearInterval(this.evictionTimer);
313
+ this.evictionTimer = undefined;
314
+ }
315
+ }
316
+ /**
317
+ * Evict idle connections that have exceeded the timeout
318
+ */
319
+ evictIdleConnections() {
320
+ if (this.isShuttingDown)
321
+ return;
322
+ const toEvict = [];
323
+ for (const connection of this.connections.values()) {
324
+ if (connection.isExpired(this.config.idleTimeout) &&
325
+ this.connections.size > this.config.minConnections) {
326
+ toEvict.push(connection);
327
+ }
328
+ }
329
+ for (const connection of toEvict) {
330
+ this.destroy(connection);
331
+ this.logger.debug('Evicted idle connection', { id: connection.id });
332
+ }
333
+ if (toEvict.length > 0) {
334
+ this.logger.info('Evicted idle connections', { count: toEvict.length });
335
+ }
336
+ }
337
+ /**
338
+ * Record acquire time for statistics
339
+ */
340
+ recordAcquireTime(startTime) {
341
+ const duration = performance.now() - startTime;
342
+ this.stats.acquireTimeTotal += duration;
343
+ this.stats.acquireCount++;
344
+ }
345
+ /**
346
+ * Get all connections (for debugging/monitoring)
347
+ */
348
+ getConnections() {
349
+ return Array.from(this.connections.values());
350
+ }
351
+ /**
352
+ * Check if pool is healthy
353
+ */
354
+ isHealthy() {
355
+ return !this.isShuttingDown && this.connections.size >= this.config.minConnections;
356
+ }
357
+ }
358
+ /**
359
+ * Create a connection pool with default settings
360
+ */
361
+ export function createConnectionPool(config = {}, logger, transportType = 'in-process') {
362
+ return new ConnectionPool(config, logger, transportType);
363
+ }
364
+ //# sourceMappingURL=connection-pool.js.map
@@ -0,0 +1,69 @@
1
+ /**
2
+ * V3 MCP Module
3
+ *
4
+ * Optimized MCP (Model Context Protocol) implementation for Claude-Flow V3
5
+ *
6
+ * Features:
7
+ * - High-performance server with <400ms startup
8
+ * - Connection pooling with max 10 connections
9
+ * - Multiple transport support (stdio, http, websocket, in-process)
10
+ * - Fast tool registry with <10ms registration
11
+ * - Session management with timeout handling
12
+ * - Comprehensive metrics and monitoring
13
+ *
14
+ * Performance Targets:
15
+ * - Server startup: <400ms
16
+ * - Tool registration: <10ms
17
+ * - Tool execution: <50ms overhead
18
+ * - Connection acquire: <5ms
19
+ *
20
+ * @module @claude-flow/mcp
21
+ * @version 3.0.0
22
+ */
23
+ export type { JsonRpcVersion, RequestId, MCPMessage, MCPRequest, MCPResponse, MCPNotification, MCPError, TransportType, AuthMethod, AuthConfig, LoadBalancerConfig, ConnectionPoolConfig, MCPServerConfig, SessionState, MCPSession, MCPClientInfo, MCPCapabilities, MCPProtocolVersion, MCPInitializeParams, MCPInitializeResult, JSONSchema, ToolContext, ToolHandler, MCPTool, ToolCallResult, ToolRegistrationOptions, RequestHandler, NotificationHandler, TransportHealthStatus, ITransport, ConnectionState, PooledConnection, ConnectionPoolStats, IConnectionPool, ToolCallMetrics, MCPServerMetrics, SessionMetrics, MCPEventType, MCPEvent, EventHandler, LogLevel, ILogger, } from './types.js';
24
+ import type { MCPServerConfig, ILogger } from './types.js';
25
+ export { ErrorCodes, MCPServerError } from './types.js';
26
+ import { MCPServer, createMCPServer } from './server.js';
27
+ export { MCPServer, createMCPServer };
28
+ export type { IMCPServer } from './server.js';
29
+ export { ToolRegistry, createToolRegistry, defineTool } from './tool-registry.js';
30
+ import { SessionManager, createSessionManager } from './session-manager.js';
31
+ export { SessionManager, createSessionManager };
32
+ export type { SessionConfig } from './session-manager.js';
33
+ export { ConnectionPool, createConnectionPool } from './connection-pool.js';
34
+ export { createTransport, createInProcessTransport, TransportManager, createTransportManager, DEFAULT_TRANSPORT_CONFIGS, StdioTransport, HttpTransport, WebSocketTransport, } from './transport/index.js';
35
+ export type { TransportConfig, StdioTransportConfig, HttpTransportConfig, WebSocketTransportConfig, } from './transport/index.js';
36
+ /**
37
+ * Quick start function to create and configure an MCP server
38
+ *
39
+ * @example
40
+ * ```typescript
41
+ * import { quickStart } from '@claude-flow/mcp';
42
+ *
43
+ * const server = await quickStart({
44
+ * transport: 'stdio',
45
+ * name: 'My MCP Server',
46
+ * });
47
+ *
48
+ * // Register custom tools
49
+ * server.registerTool({
50
+ * name: 'my-tool',
51
+ * description: 'My custom tool',
52
+ * inputSchema: { type: 'object', properties: {} },
53
+ * handler: async () => ({ result: 'success' }),
54
+ * });
55
+ *
56
+ * // Start server
57
+ * await server.start();
58
+ * ```
59
+ */
60
+ export declare function quickStart(config: Partial<MCPServerConfig>, logger?: ILogger): Promise<MCPServer>;
61
+ /**
62
+ * Module version
63
+ */
64
+ export declare const VERSION = "3.0.0";
65
+ /**
66
+ * Module name
67
+ */
68
+ export declare const MODULE_NAME = "@claude-flow/mcp";
69
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,84 @@
1
+ /**
2
+ * V3 MCP Module
3
+ *
4
+ * Optimized MCP (Model Context Protocol) implementation for Claude-Flow V3
5
+ *
6
+ * Features:
7
+ * - High-performance server with <400ms startup
8
+ * - Connection pooling with max 10 connections
9
+ * - Multiple transport support (stdio, http, websocket, in-process)
10
+ * - Fast tool registry with <10ms registration
11
+ * - Session management with timeout handling
12
+ * - Comprehensive metrics and monitoring
13
+ *
14
+ * Performance Targets:
15
+ * - Server startup: <400ms
16
+ * - Tool registration: <10ms
17
+ * - Tool execution: <50ms overhead
18
+ * - Connection acquire: <5ms
19
+ *
20
+ * @module @claude-flow/mcp
21
+ * @version 3.0.0
22
+ */
23
+ // Error handling - values (not types)
24
+ export { ErrorCodes, MCPServerError } from './types.js';
25
+ // Server - class and interface exports
26
+ import { MCPServer, createMCPServer } from './server.js';
27
+ export { MCPServer, createMCPServer };
28
+ // Tool Registry
29
+ export { ToolRegistry, createToolRegistry, defineTool } from './tool-registry.js';
30
+ // Session Manager - class and factory exports
31
+ import { SessionManager, createSessionManager } from './session-manager.js';
32
+ export { SessionManager, createSessionManager };
33
+ // Connection Pool
34
+ export { ConnectionPool, createConnectionPool } from './connection-pool.js';
35
+ // Transport layer - values
36
+ export {
37
+ // Factory
38
+ createTransport, createInProcessTransport, TransportManager, createTransportManager, DEFAULT_TRANSPORT_CONFIGS,
39
+ // Specific transports
40
+ StdioTransport, HttpTransport, WebSocketTransport, } from './transport/index.js';
41
+ /**
42
+ * Quick start function to create and configure an MCP server
43
+ *
44
+ * @example
45
+ * ```typescript
46
+ * import { quickStart } from '@claude-flow/mcp';
47
+ *
48
+ * const server = await quickStart({
49
+ * transport: 'stdio',
50
+ * name: 'My MCP Server',
51
+ * });
52
+ *
53
+ * // Register custom tools
54
+ * server.registerTool({
55
+ * name: 'my-tool',
56
+ * description: 'My custom tool',
57
+ * inputSchema: { type: 'object', properties: {} },
58
+ * handler: async () => ({ result: 'success' }),
59
+ * });
60
+ *
61
+ * // Start server
62
+ * await server.start();
63
+ * ```
64
+ */
65
+ export async function quickStart(config, logger) {
66
+ // Create default logger if not provided
67
+ const defaultLogger = logger || {
68
+ debug: (msg, data) => console.debug(`[DEBUG] ${msg}`, data || ''),
69
+ info: (msg, data) => console.info(`[INFO] ${msg}`, data || ''),
70
+ warn: (msg, data) => console.warn(`[WARN] ${msg}`, data || ''),
71
+ error: (msg, data) => console.error(`[ERROR] ${msg}`, data || ''),
72
+ };
73
+ const server = createMCPServer(config, defaultLogger);
74
+ return server;
75
+ }
76
+ /**
77
+ * Module version
78
+ */
79
+ export const VERSION = '3.0.0';
80
+ /**
81
+ * Module name
82
+ */
83
+ export const MODULE_NAME = '@claude-flow/mcp';
84
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,166 @@
1
+ /**
2
+ * V3 MCP Server Implementation
3
+ *
4
+ * Optimized MCP server with:
5
+ * - Connection pooling for efficient resource usage
6
+ * - Fast tool registration (<10ms)
7
+ * - Optimized request routing (<50ms overhead)
8
+ * - Multiple transport support (stdio, http, websocket, in-process)
9
+ * - Session management with timeout handling
10
+ * - Comprehensive metrics and monitoring
11
+ *
12
+ * Performance Targets:
13
+ * - Server startup: <400ms
14
+ * - Tool registration: <10ms
15
+ * - Tool execution: <50ms overhead
16
+ */
17
+ import { EventEmitter } from 'events';
18
+ import { MCPServerConfig, MCPSession, MCPTool, MCPServerMetrics, ILogger } from './types.js';
19
+ /**
20
+ * MCP Server Interface
21
+ */
22
+ export interface IMCPServer {
23
+ start(): Promise<void>;
24
+ stop(): Promise<void>;
25
+ registerTool(tool: MCPTool): boolean;
26
+ registerTools(tools: MCPTool[]): {
27
+ registered: number;
28
+ failed: string[];
29
+ };
30
+ getHealthStatus(): Promise<{
31
+ healthy: boolean;
32
+ error?: string;
33
+ metrics?: Record<string, number>;
34
+ }>;
35
+ getMetrics(): MCPServerMetrics;
36
+ getSessions(): MCPSession[];
37
+ getSession(sessionId: string): MCPSession | undefined;
38
+ terminateSession(sessionId: string): boolean;
39
+ }
40
+ /**
41
+ * V3 MCP Server
42
+ */
43
+ export declare class MCPServer extends EventEmitter implements IMCPServer {
44
+ private readonly logger;
45
+ private readonly orchestrator?;
46
+ private readonly swarmCoordinator?;
47
+ private readonly config;
48
+ private readonly toolRegistry;
49
+ private readonly sessionManager;
50
+ private readonly connectionPool?;
51
+ private readonly transportManager;
52
+ private transport?;
53
+ private running;
54
+ private startTime?;
55
+ private startupDuration?;
56
+ private currentSession?;
57
+ private readonly serverInfo;
58
+ private readonly protocolVersion;
59
+ private readonly capabilities;
60
+ private requestStats;
61
+ constructor(config: Partial<MCPServerConfig>, logger: ILogger, orchestrator?: unknown | undefined, swarmCoordinator?: unknown | undefined);
62
+ /**
63
+ * Start the MCP server
64
+ */
65
+ start(): Promise<void>;
66
+ /**
67
+ * Stop the MCP server
68
+ */
69
+ stop(): Promise<void>;
70
+ /**
71
+ * Register a tool
72
+ */
73
+ registerTool(tool: MCPTool): boolean;
74
+ /**
75
+ * Register multiple tools
76
+ */
77
+ registerTools(tools: MCPTool[]): {
78
+ registered: number;
79
+ failed: string[];
80
+ };
81
+ /**
82
+ * Unregister a tool
83
+ */
84
+ unregisterTool(name: string): boolean;
85
+ /**
86
+ * Get health status
87
+ */
88
+ getHealthStatus(): Promise<{
89
+ healthy: boolean;
90
+ error?: string;
91
+ metrics?: Record<string, number>;
92
+ }>;
93
+ /**
94
+ * Get server metrics
95
+ */
96
+ getMetrics(): MCPServerMetrics;
97
+ /**
98
+ * Get all sessions
99
+ */
100
+ getSessions(): MCPSession[];
101
+ /**
102
+ * Get session by ID
103
+ */
104
+ getSession(sessionId: string): MCPSession | undefined;
105
+ /**
106
+ * Terminate a session
107
+ */
108
+ terminateSession(sessionId: string): boolean;
109
+ /**
110
+ * Handle incoming request
111
+ */
112
+ private handleRequest;
113
+ /**
114
+ * Handle notification
115
+ */
116
+ private handleNotification;
117
+ /**
118
+ * Handle initialize request
119
+ */
120
+ private handleInitialize;
121
+ /**
122
+ * Route request to appropriate handler
123
+ */
124
+ private routeRequest;
125
+ /**
126
+ * Handle tools/list request
127
+ */
128
+ private handleToolsList;
129
+ /**
130
+ * Handle tools/call request
131
+ */
132
+ private handleToolsCall;
133
+ /**
134
+ * Handle direct tool execution (backwards compatibility)
135
+ */
136
+ private handleToolExecution;
137
+ /**
138
+ * Handle resources/list request
139
+ */
140
+ private handleResourcesList;
141
+ /**
142
+ * Handle prompts/list request
143
+ */
144
+ private handlePromptsList;
145
+ /**
146
+ * Get or create current session
147
+ */
148
+ private getOrCreateSession;
149
+ /**
150
+ * Create error response
151
+ */
152
+ private createErrorResponse;
153
+ /**
154
+ * Register built-in tools
155
+ */
156
+ private registerBuiltInTools;
157
+ /**
158
+ * Setup event handlers
159
+ */
160
+ private setupEventHandlers;
161
+ }
162
+ /**
163
+ * Create an MCP server instance
164
+ */
165
+ export declare function createMCPServer(config: Partial<MCPServerConfig>, logger: ILogger, orchestrator?: unknown, swarmCoordinator?: unknown): MCPServer;
166
+ //# sourceMappingURL=server.d.ts.map