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.
- package/.claude/guidance/shipped/moflo.md +45 -0
- package/.claude/helpers/statusline.cjs +1 -1
- package/.claude/workflow-state.json +9 -0
- package/package.json +2 -2
- package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +1 -1
- package/src/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +5 -3
- package/src/@claude-flow/cli/package.json +1 -1
- package/src/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +466 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +212 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.js +842 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
- package/src/@claude-flow/memory/dist/application/index.d.ts +12 -0
- package/src/@claude-flow/memory/dist/application/index.js +15 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +757 -0
- package/src/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
- package/src/@claude-flow/memory/dist/benchmark.test.js +277 -0
- package/src/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
- package/src/@claude-flow/memory/dist/cache-manager.js +407 -0
- package/src/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
- package/src/@claude-flow/memory/dist/controller-registry.js +893 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.js +593 -0
- package/src/@claude-flow/memory/dist/database-provider.d.ts +87 -0
- package/src/@claude-flow/memory/dist/database-provider.js +372 -0
- package/src/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/database-provider.test.js +287 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
- package/src/@claude-flow/memory/dist/domain/index.d.ts +11 -0
- package/src/@claude-flow/memory/dist/domain/index.js +12 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
- package/src/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
- package/src/@claude-flow/memory/dist/hnsw-index.js +781 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.js +168 -0
- package/src/@claude-flow/memory/dist/index.d.ts +204 -0
- package/src/@claude-flow/memory/dist/index.js +358 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.js +16 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
- package/src/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
- package/src/@claude-flow/memory/dist/learning-bridge.js +335 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
- package/src/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
- package/src/@claude-flow/memory/dist/memory-graph.js +333 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.js +609 -0
- package/src/@claude-flow/memory/dist/migration.d.ts +68 -0
- package/src/@claude-flow/memory/dist/migration.js +513 -0
- package/src/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
- package/src/@claude-flow/memory/dist/persistent-sona.js +332 -0
- package/src/@claude-flow/memory/dist/query-builder.d.ts +211 -0
- package/src/@claude-flow/memory/dist/query-builder.js +438 -0
- package/src/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
- package/src/@claude-flow/memory/dist/rvf-backend.js +481 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
- package/src/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
- package/src/@claude-flow/memory/dist/rvf-migration.js +234 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +127 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.js +600 -0
- package/src/@claude-flow/memory/dist/types.d.ts +484 -0
- package/src/@claude-flow/memory/dist/types.js +58 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.js +186 -0
- package/src/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
- package/src/@claude-flow/shared/dist/core/config/index.js +12 -0
- package/src/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
- package/src/@claude-flow/shared/dist/core/config/loader.js +222 -0
- package/src/@claude-flow/shared/dist/core/config/schema.d.ts +1134 -0
- package/src/@claude-flow/shared/dist/core/config/schema.js +158 -0
- package/src/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
- package/src/@claude-flow/shared/dist/core/config/validator.js +147 -0
- package/src/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
- package/src/@claude-flow/shared/dist/core/event-bus.js +197 -0
- package/src/@claude-flow/shared/dist/core/index.d.ts +15 -0
- package/src/@claude-flow/shared/dist/core/index.js +19 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
- package/src/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
- package/src/@claude-flow/shared/dist/events/domain-events.js +165 -0
- package/src/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
- package/src/@claude-flow/shared/dist/events/event-store.js +432 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.js +297 -0
- package/src/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
- package/src/@claude-flow/shared/dist/events/example-usage.js +193 -0
- package/src/@claude-flow/shared/dist/events/index.d.ts +21 -0
- package/src/@claude-flow/shared/dist/events/index.js +22 -0
- package/src/@claude-flow/shared/dist/events/projections.d.ts +177 -0
- package/src/@claude-flow/shared/dist/events/projections.js +421 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
- package/src/@claude-flow/shared/dist/events.d.ts +80 -0
- package/src/@claude-flow/shared/dist/events.js +249 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
- package/src/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
- package/src/@claude-flow/shared/dist/hooks/executor.js +267 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
- package/src/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
- package/src/@claude-flow/shared/dist/hooks/index.js +51 -0
- package/src/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
- package/src/@claude-flow/shared/dist/hooks/registry.js +277 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
- package/src/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
- package/src/@claude-flow/shared/dist/hooks/types.js +62 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
- package/src/@claude-flow/shared/dist/index.d.ts +20 -0
- package/src/@claude-flow/shared/dist/index.js +50 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
- package/src/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
- package/src/@claude-flow/shared/dist/mcp/index.js +84 -0
- package/src/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
- package/src/@claude-flow/shared/dist/mcp/server.js +593 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
- package/src/@claude-flow/shared/dist/mcp/types.d.ts +438 -0
- package/src/@claude-flow/shared/dist/mcp/types.js +54 -0
- package/src/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
- package/src/@claude-flow/shared/dist/plugin-interface.js +23 -0
- package/src/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
- package/src/@claude-flow/shared/dist/plugin-loader.js +434 -0
- package/src/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
- package/src/@claude-flow/shared/dist/plugin-registry.js +457 -0
- package/src/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
- package/src/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
- package/src/@claude-flow/shared/dist/plugins/types.js +9 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
- package/src/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
- package/src/@claude-flow/shared/dist/resilience/index.js +19 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
- package/src/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
- package/src/@claude-flow/shared/dist/resilience/retry.js +159 -0
- package/src/@claude-flow/shared/dist/security/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/security/index.js +12 -0
- package/src/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
- package/src/@claude-flow/shared/dist/security/input-validation.js +201 -0
- package/src/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
- package/src/@claude-flow/shared/dist/security/secure-random.js +142 -0
- package/src/@claude-flow/shared/dist/services/index.d.ts +7 -0
- package/src/@claude-flow/shared/dist/services/index.js +7 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
- package/src/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
- package/src/@claude-flow/shared/dist/types/agent.types.js +6 -0
- package/src/@claude-flow/shared/dist/types/index.d.ts +11 -0
- package/src/@claude-flow/shared/dist/types/index.js +17 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
- package/src/@claude-flow/shared/dist/types/memory.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.js +65 -0
- package/src/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
- package/src/@claude-flow/shared/dist/types/task.types.js +32 -0
- package/src/@claude-flow/shared/dist/types.d.ts +197 -0
- package/src/@claude-flow/shared/dist/types.js +21 -0
- package/src/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
- 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
|