@dotsetlabs/tollgate 0.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.
- package/LICENSE +21 -0
- package/README.md +885 -0
- package/dist/analyzers/filesystem.d.ts +26 -0
- package/dist/analyzers/filesystem.d.ts.map +1 -0
- package/dist/analyzers/filesystem.js +284 -0
- package/dist/analyzers/filesystem.js.map +1 -0
- package/dist/analyzers/http.d.ts +90 -0
- package/dist/analyzers/http.d.ts.map +1 -0
- package/dist/analyzers/http.js +433 -0
- package/dist/analyzers/http.js.map +1 -0
- package/dist/analyzers/index.d.ts +101 -0
- package/dist/analyzers/index.d.ts.map +1 -0
- package/dist/analyzers/index.js +342 -0
- package/dist/analyzers/index.js.map +1 -0
- package/dist/analyzers/loader.d.ts +114 -0
- package/dist/analyzers/loader.d.ts.map +1 -0
- package/dist/analyzers/loader.js +184 -0
- package/dist/analyzers/loader.js.map +1 -0
- package/dist/analyzers/prompt-injection.d.ts +95 -0
- package/dist/analyzers/prompt-injection.d.ts.map +1 -0
- package/dist/analyzers/prompt-injection.js +725 -0
- package/dist/analyzers/prompt-injection.js.map +1 -0
- package/dist/analyzers/sdk.d.ts +230 -0
- package/dist/analyzers/sdk.d.ts.map +1 -0
- package/dist/analyzers/sdk.js +283 -0
- package/dist/analyzers/sdk.js.map +1 -0
- package/dist/analyzers/shell.d.ts +20 -0
- package/dist/analyzers/shell.d.ts.map +1 -0
- package/dist/analyzers/shell.js +297 -0
- package/dist/analyzers/shell.js.map +1 -0
- package/dist/analyzers/sql.d.ts +37 -0
- package/dist/analyzers/sql.d.ts.map +1 -0
- package/dist/analyzers/sql.js +455 -0
- package/dist/analyzers/sql.js.map +1 -0
- package/dist/analyzers/types.d.ts +117 -0
- package/dist/analyzers/types.d.ts.map +1 -0
- package/dist/analyzers/types.js +46 -0
- package/dist/analyzers/types.js.map +1 -0
- package/dist/approval/interactive.d.ts +72 -0
- package/dist/approval/interactive.d.ts.map +1 -0
- package/dist/approval/interactive.js +550 -0
- package/dist/approval/interactive.js.map +1 -0
- package/dist/approval/terminal.d.ts +59 -0
- package/dist/approval/terminal.d.ts.map +1 -0
- package/dist/approval/terminal.js +238 -0
- package/dist/approval/terminal.js.map +1 -0
- package/dist/approval/types.d.ts +66 -0
- package/dist/approval/types.d.ts.map +1 -0
- package/dist/approval/types.js +2 -0
- package/dist/approval/types.js.map +1 -0
- package/dist/audit/exporter.d.ts +138 -0
- package/dist/audit/exporter.d.ts.map +1 -0
- package/dist/audit/exporter.js +366 -0
- package/dist/audit/exporter.js.map +1 -0
- package/dist/audit/logger.d.ts +156 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +406 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/redaction.d.ts +110 -0
- package/dist/audit/redaction.d.ts.map +1 -0
- package/dist/audit/redaction.js +307 -0
- package/dist/audit/redaction.js.map +1 -0
- package/dist/audit/schema.d.ts +76 -0
- package/dist/audit/schema.d.ts.map +1 -0
- package/dist/audit/schema.js +122 -0
- package/dist/audit/schema.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +34 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +431 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export.d.ts +18 -0
- package/dist/cli/commands/export.d.ts.map +1 -0
- package/dist/cli/commands/export.js +63 -0
- package/dist/cli/commands/export.js.map +1 -0
- package/dist/cli/commands/init.d.ts +12 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +102 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/logs.d.ts +11 -0
- package/dist/cli/commands/logs.d.ts.map +1 -0
- package/dist/cli/commands/logs.js +60 -0
- package/dist/cli/commands/logs.js.map +1 -0
- package/dist/cli/commands/scan.d.ts +29 -0
- package/dist/cli/commands/scan.d.ts.map +1 -0
- package/dist/cli/commands/scan.js +251 -0
- package/dist/cli/commands/scan.js.map +1 -0
- package/dist/cli/commands/serve.d.ts +26 -0
- package/dist/cli/commands/serve.d.ts.map +1 -0
- package/dist/cli/commands/serve.js +424 -0
- package/dist/cli/commands/serve.js.map +1 -0
- package/dist/cli/commands/start.d.ts +20 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +82 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/stats.d.ts +10 -0
- package/dist/cli/commands/stats.d.ts.map +1 -0
- package/dist/cli/commands/stats.js +42 -0
- package/dist/cli/commands/stats.js.map +1 -0
- package/dist/cli/commands/templates.d.ts +26 -0
- package/dist/cli/commands/templates.d.ts.map +1 -0
- package/dist/cli/commands/templates.js +221 -0
- package/dist/cli/commands/templates.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +12 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +107 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/wrap.d.ts +19 -0
- package/dist/cli/commands/wrap.d.ts.map +1 -0
- package/dist/cli/commands/wrap.js +59 -0
- package/dist/cli/commands/wrap.js.map +1 -0
- package/dist/cli/index.d.ts +17 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +202 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/ui.d.ts +139 -0
- package/dist/cli/ui.d.ts.map +1 -0
- package/dist/cli/ui.js +271 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/constants.d.ts +33 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +54 -0
- package/dist/constants.js.map +1 -0
- package/dist/errors.d.ts +28 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +37 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +49 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +82 -0
- package/dist/index.js.map +1 -0
- package/dist/orchestrator/index.d.ts +11 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +10 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/manager.d.ts +127 -0
- package/dist/orchestrator/manager.d.ts.map +1 -0
- package/dist/orchestrator/manager.js +498 -0
- package/dist/orchestrator/manager.js.map +1 -0
- package/dist/orchestrator/types.d.ts +141 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +9 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/policy/engine.d.ts +55 -0
- package/dist/policy/engine.d.ts.map +1 -0
- package/dist/policy/engine.js +288 -0
- package/dist/policy/engine.js.map +1 -0
- package/dist/policy/natural-language.d.ts +141 -0
- package/dist/policy/natural-language.d.ts.map +1 -0
- package/dist/policy/natural-language.js +552 -0
- package/dist/policy/natural-language.js.map +1 -0
- package/dist/policy/parser.d.ts +141 -0
- package/dist/policy/parser.d.ts.map +1 -0
- package/dist/policy/parser.js +314 -0
- package/dist/policy/parser.js.map +1 -0
- package/dist/policy/types.d.ts +428 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +32 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/policy/validator.d.ts +72 -0
- package/dist/policy/validator.d.ts.map +1 -0
- package/dist/policy/validator.js +453 -0
- package/dist/policy/validator.js.map +1 -0
- package/dist/proxy/bridge.d.ts +84 -0
- package/dist/proxy/bridge.d.ts.map +1 -0
- package/dist/proxy/bridge.js +217 -0
- package/dist/proxy/bridge.js.map +1 -0
- package/dist/proxy/client.d.ts +130 -0
- package/dist/proxy/client.d.ts.map +1 -0
- package/dist/proxy/client.js +290 -0
- package/dist/proxy/client.js.map +1 -0
- package/dist/proxy/server.d.ts +111 -0
- package/dist/proxy/server.d.ts.map +1 -0
- package/dist/proxy/server.js +444 -0
- package/dist/proxy/server.js.map +1 -0
- package/dist/scanner.d.ts +91 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +373 -0
- package/dist/scanner.js.map +1 -0
- package/dist/session/index.d.ts +32 -0
- package/dist/session/index.d.ts.map +1 -0
- package/dist/session/index.js +31 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +166 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +454 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/sqlite-store.d.ts +54 -0
- package/dist/session/sqlite-store.d.ts.map +1 -0
- package/dist/session/sqlite-store.js +209 -0
- package/dist/session/sqlite-store.js.map +1 -0
- package/dist/session/types.d.ts +179 -0
- package/dist/session/types.d.ts.map +1 -0
- package/dist/session/types.js +38 -0
- package/dist/session/types.js.map +1 -0
- package/dist/templates.d.ts +64 -0
- package/dist/templates.d.ts.map +1 -0
- package/dist/templates.js +451 -0
- package/dist/templates.js.map +1 -0
- package/dist/utils/config.d.ts +57 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +104 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/errors.d.ts +18 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +35 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logger.d.ts +144 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +300 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/wizard.d.ts +68 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +395 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1,498 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Server Orchestrator Manager
|
|
3
|
+
*
|
|
4
|
+
* Manages multiple MCP server instances in a single Tollgate process.
|
|
5
|
+
* Provides lifecycle management, health monitoring, and unified control.
|
|
6
|
+
*
|
|
7
|
+
* @module orchestrator/manager
|
|
8
|
+
*/
|
|
9
|
+
import { homedir } from 'node:os';
|
|
10
|
+
import { join } from 'node:path';
|
|
11
|
+
import { PolicyEngine } from '../policy/engine.js';
|
|
12
|
+
import { AuditLogger } from '../audit/logger.js';
|
|
13
|
+
import { TerminalApprovalHandler } from '../approval/terminal.js';
|
|
14
|
+
import { InteractiveApprovalHandler } from '../approval/interactive.js';
|
|
15
|
+
import { TollgateServer } from '../proxy/server.js';
|
|
16
|
+
import { UpstreamClient } from '../proxy/client.js';
|
|
17
|
+
import { SessionManager } from '../session/manager.js';
|
|
18
|
+
import { SqliteSessionStore } from '../session/sqlite-store.js';
|
|
19
|
+
import { ConfigError } from '../utils/errors.js';
|
|
20
|
+
import { getServerConfig, validateConfig } from '../policy/parser.js';
|
|
21
|
+
import { orchestratorLogger as logger } from '../utils/logger.js';
|
|
22
|
+
import { DEFAULT_RESILIENCE } from '../constants.js';
|
|
23
|
+
/**
|
|
24
|
+
* Multi-Server Orchestrator
|
|
25
|
+
*
|
|
26
|
+
* Manages multiple MCP servers in a single process, providing:
|
|
27
|
+
* - Lifecycle management (start, stop, restart)
|
|
28
|
+
* - Health monitoring
|
|
29
|
+
* - Unified statistics
|
|
30
|
+
* - Event-driven status updates
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* ```typescript
|
|
34
|
+
* const orchestrator = new Orchestrator({
|
|
35
|
+
* config,
|
|
36
|
+
* autoStart: true,
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* orchestrator.on((event) => {
|
|
40
|
+
* console.log(`[${event.type}]`, event);
|
|
41
|
+
* });
|
|
42
|
+
*
|
|
43
|
+
* await orchestrator.start();
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export class Orchestrator {
|
|
47
|
+
options;
|
|
48
|
+
config;
|
|
49
|
+
resilience;
|
|
50
|
+
servers = new Map();
|
|
51
|
+
instances = new Map();
|
|
52
|
+
eventHandlers = new Set();
|
|
53
|
+
startTime;
|
|
54
|
+
isShuttingDown = false;
|
|
55
|
+
approvalHandler;
|
|
56
|
+
constructor(options) {
|
|
57
|
+
this.options = options;
|
|
58
|
+
this.config = options.config;
|
|
59
|
+
this.startTime = new Date();
|
|
60
|
+
// Validate configuration
|
|
61
|
+
validateConfig(this.config);
|
|
62
|
+
// Merge resilience configuration with defaults
|
|
63
|
+
const configResilience = this.config.resilience ?? {};
|
|
64
|
+
this.resilience = {
|
|
65
|
+
failureMode: options.failureMode ?? configResilience.failureMode ?? DEFAULT_RESILIENCE.failureMode,
|
|
66
|
+
upstreamTimeoutMs: configResilience.upstreamTimeoutMs ?? DEFAULT_RESILIENCE.upstreamTimeoutMs,
|
|
67
|
+
healthCheck: {
|
|
68
|
+
enabled: configResilience.healthCheck?.enabled ?? DEFAULT_RESILIENCE.healthCheck.enabled,
|
|
69
|
+
intervalMs: configResilience.healthCheck?.intervalMs ?? DEFAULT_RESILIENCE.healthCheck.intervalMs,
|
|
70
|
+
timeoutMs: configResilience.healthCheck?.timeoutMs ?? DEFAULT_RESILIENCE.healthCheck.timeoutMs,
|
|
71
|
+
failureThreshold: configResilience.healthCheck?.failureThreshold ?? DEFAULT_RESILIENCE.healthCheck.failureThreshold,
|
|
72
|
+
},
|
|
73
|
+
shutdown: {
|
|
74
|
+
timeoutMs: configResilience.shutdown?.timeoutMs ?? DEFAULT_RESILIENCE.shutdown.timeoutMs,
|
|
75
|
+
drainTimeoutMs: configResilience.shutdown?.drainTimeoutMs ?? DEFAULT_RESILIENCE.shutdown.drainTimeoutMs,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
// Initialize managed server entries for all configured servers
|
|
79
|
+
const serverNames = Object.keys(this.config.servers ?? {});
|
|
80
|
+
for (const name of serverNames) {
|
|
81
|
+
const serverConfig = this.config.servers[name];
|
|
82
|
+
this.servers.set(name, {
|
|
83
|
+
name,
|
|
84
|
+
status: 'stopped',
|
|
85
|
+
config: serverConfig,
|
|
86
|
+
toolCallCount: 0,
|
|
87
|
+
deniedCount: 0,
|
|
88
|
+
promptedCount: 0,
|
|
89
|
+
healthStatus: 'unknown',
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
// Create shared approval handler
|
|
93
|
+
this.approvalHandler = this.createApprovalHandler();
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Register an event handler.
|
|
97
|
+
*/
|
|
98
|
+
on(handler) {
|
|
99
|
+
this.eventHandlers.add(handler);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Remove an event handler.
|
|
103
|
+
*/
|
|
104
|
+
off(handler) {
|
|
105
|
+
this.eventHandlers.delete(handler);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Emit an event to all handlers.
|
|
109
|
+
*/
|
|
110
|
+
emit(event) {
|
|
111
|
+
for (const handler of this.eventHandlers) {
|
|
112
|
+
try {
|
|
113
|
+
handler(event);
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
logger.error('Event handler error', {
|
|
117
|
+
eventType: event.type,
|
|
118
|
+
error: error instanceof Error ? error.message : String(error),
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Start the orchestrator and optionally auto-start servers.
|
|
125
|
+
*/
|
|
126
|
+
async start() {
|
|
127
|
+
// Set up shutdown handlers
|
|
128
|
+
const shutdown = async (signal) => {
|
|
129
|
+
if (this.isShuttingDown) {
|
|
130
|
+
logger.warn('Force exit requested');
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
this.isShuttingDown = true;
|
|
134
|
+
logger.info('Shutting down', { signal });
|
|
135
|
+
await this.shutdown();
|
|
136
|
+
process.exit(0);
|
|
137
|
+
};
|
|
138
|
+
process.on('SIGINT', () => shutdown('SIGINT'));
|
|
139
|
+
process.on('SIGTERM', () => shutdown('SIGTERM'));
|
|
140
|
+
// Auto-start servers if configured
|
|
141
|
+
if (this.options.autoStart) {
|
|
142
|
+
const serversToStart = this.options.autoStartServers ?? this.getServerNames();
|
|
143
|
+
for (const serverName of serversToStart) {
|
|
144
|
+
try {
|
|
145
|
+
await this.startServer(serverName);
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
149
|
+
logger.error('Failed to auto-start server', { server: serverName, error: message });
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
this.emit({ type: 'orchestrator:ready' });
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Shutdown the orchestrator and all running servers.
|
|
157
|
+
*/
|
|
158
|
+
async shutdown() {
|
|
159
|
+
this.isShuttingDown = true;
|
|
160
|
+
// Stop all running servers
|
|
161
|
+
const runningServers = this.getRunningServers();
|
|
162
|
+
await Promise.all(runningServers.map(name => this.stopServer(name).catch(err => {
|
|
163
|
+
logger.error('Error stopping server', {
|
|
164
|
+
server: name,
|
|
165
|
+
error: err instanceof Error ? err.message : String(err),
|
|
166
|
+
});
|
|
167
|
+
})));
|
|
168
|
+
// Close approval handler
|
|
169
|
+
this.approvalHandler?.close();
|
|
170
|
+
this.emit({ type: 'orchestrator:shutdown' });
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get all configured server names.
|
|
174
|
+
*/
|
|
175
|
+
getServerNames() {
|
|
176
|
+
return Array.from(this.servers.keys());
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get names of currently running servers.
|
|
180
|
+
*/
|
|
181
|
+
getRunningServers() {
|
|
182
|
+
return Array.from(this.servers.entries())
|
|
183
|
+
.filter(([_, server]) => server.status === 'running')
|
|
184
|
+
.map(([name, _]) => name);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get names of stopped servers.
|
|
188
|
+
*/
|
|
189
|
+
getStoppedServers() {
|
|
190
|
+
return Array.from(this.servers.entries())
|
|
191
|
+
.filter(([_, server]) => server.status === 'stopped')
|
|
192
|
+
.map(([name, _]) => name);
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Get information about a specific server.
|
|
196
|
+
*/
|
|
197
|
+
getServer(name) {
|
|
198
|
+
return this.servers.get(name);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get all managed servers.
|
|
202
|
+
*/
|
|
203
|
+
getAllServers() {
|
|
204
|
+
return Array.from(this.servers.values());
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Get aggregated audit records from all running server instances.
|
|
208
|
+
* Records are sorted by timestamp (most recent first).
|
|
209
|
+
*/
|
|
210
|
+
getAggregatedAuditRecords(limit = 50) {
|
|
211
|
+
const allRecords = [];
|
|
212
|
+
for (const instance of this.instances.values()) {
|
|
213
|
+
try {
|
|
214
|
+
const records = instance.auditLogger.getRecentCalls({ limit });
|
|
215
|
+
allRecords.push(...records);
|
|
216
|
+
}
|
|
217
|
+
catch {
|
|
218
|
+
// Skip instances with audit logger issues
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
// Sort by timestamp descending (most recent first) and limit
|
|
222
|
+
return allRecords
|
|
223
|
+
.sort((a, b) => new Date(b.timestamp).getTime() - new Date(a.timestamp).getTime())
|
|
224
|
+
.slice(0, limit);
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Start a specific server.
|
|
228
|
+
*/
|
|
229
|
+
async startServer(name) {
|
|
230
|
+
const managed = this.servers.get(name);
|
|
231
|
+
if (!managed) {
|
|
232
|
+
return {
|
|
233
|
+
success: false,
|
|
234
|
+
message: `Server "${name}" not found in configuration`,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (managed.status === 'running' || managed.status === 'starting') {
|
|
238
|
+
return {
|
|
239
|
+
success: false,
|
|
240
|
+
message: `Server "${name}" is already ${managed.status}`,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
try {
|
|
244
|
+
managed.status = 'starting';
|
|
245
|
+
this.emit({ type: 'server:starting', server: name });
|
|
246
|
+
// Get server configuration
|
|
247
|
+
const serverConfig = getServerConfig(this.config, name);
|
|
248
|
+
if (!serverConfig) {
|
|
249
|
+
throw new ConfigError(`Server "${name}" not found in configuration`);
|
|
250
|
+
}
|
|
251
|
+
// Create components for this server
|
|
252
|
+
const policyEngine = new PolicyEngine(this.config);
|
|
253
|
+
const auditLogger = new AuditLogger(this.options.auditPath);
|
|
254
|
+
// Create upstream client with resilience configuration
|
|
255
|
+
const upstreamClient = new UpstreamClient({
|
|
256
|
+
config: serverConfig,
|
|
257
|
+
callTimeoutMs: this.resilience.upstreamTimeoutMs,
|
|
258
|
+
healthCheck: this.resilience.healthCheck,
|
|
259
|
+
onHealthChange: (status, _prev) => {
|
|
260
|
+
managed.healthStatus = status === 'unknown' ? 'unknown' : status;
|
|
261
|
+
managed.lastHealthCheck = new Date();
|
|
262
|
+
if (status === 'healthy' || status === 'unhealthy') {
|
|
263
|
+
this.emit({ type: 'server:health', server: name, status });
|
|
264
|
+
}
|
|
265
|
+
},
|
|
266
|
+
});
|
|
267
|
+
// Create session manager
|
|
268
|
+
const sessionManager = this.createSessionManager();
|
|
269
|
+
// Create and initialize the server
|
|
270
|
+
const server = new TollgateServer({
|
|
271
|
+
serverName: name,
|
|
272
|
+
policyEngine,
|
|
273
|
+
auditLogger,
|
|
274
|
+
approvalHandler: this.approvalHandler,
|
|
275
|
+
upstreamClient,
|
|
276
|
+
sessionManager,
|
|
277
|
+
dryRun: this.options.dryRun,
|
|
278
|
+
failureMode: this.resilience.failureMode,
|
|
279
|
+
});
|
|
280
|
+
// Initialize upstream client
|
|
281
|
+
await upstreamClient.initialize();
|
|
282
|
+
// Store instance
|
|
283
|
+
this.instances.set(name, {
|
|
284
|
+
server,
|
|
285
|
+
upstreamClient,
|
|
286
|
+
sessionManager,
|
|
287
|
+
auditLogger,
|
|
288
|
+
});
|
|
289
|
+
// Update managed server info
|
|
290
|
+
managed.status = 'running';
|
|
291
|
+
managed.startedAt = new Date();
|
|
292
|
+
managed.healthStatus = 'healthy';
|
|
293
|
+
managed.lastError = undefined;
|
|
294
|
+
this.emit({ type: 'server:started', server: name });
|
|
295
|
+
return {
|
|
296
|
+
success: true,
|
|
297
|
+
message: `Server "${name}" started successfully`,
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
302
|
+
managed.status = 'error';
|
|
303
|
+
managed.lastError = message;
|
|
304
|
+
this.emit({ type: 'server:error', server: name, error: message });
|
|
305
|
+
return {
|
|
306
|
+
success: false,
|
|
307
|
+
message: `Failed to start server "${name}": ${message}`,
|
|
308
|
+
};
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Stop a specific server.
|
|
313
|
+
*/
|
|
314
|
+
async stopServer(name) {
|
|
315
|
+
const managed = this.servers.get(name);
|
|
316
|
+
if (!managed) {
|
|
317
|
+
return {
|
|
318
|
+
success: false,
|
|
319
|
+
message: `Server "${name}" not found`,
|
|
320
|
+
};
|
|
321
|
+
}
|
|
322
|
+
if (managed.status !== 'running') {
|
|
323
|
+
return {
|
|
324
|
+
success: false,
|
|
325
|
+
message: `Server "${name}" is not running (status: ${managed.status})`,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
try {
|
|
329
|
+
managed.status = 'stopping';
|
|
330
|
+
this.emit({ type: 'server:stopping', server: name });
|
|
331
|
+
const instance = this.instances.get(name);
|
|
332
|
+
if (instance) {
|
|
333
|
+
// Close all components
|
|
334
|
+
await instance.server.close(this.resilience.shutdown.drainTimeoutMs);
|
|
335
|
+
instance.auditLogger.close();
|
|
336
|
+
instance.sessionManager?.close();
|
|
337
|
+
await instance.upstreamClient.close();
|
|
338
|
+
this.instances.delete(name);
|
|
339
|
+
}
|
|
340
|
+
managed.status = 'stopped';
|
|
341
|
+
managed.startedAt = undefined;
|
|
342
|
+
managed.healthStatus = 'unknown';
|
|
343
|
+
this.emit({ type: 'server:stopped', server: name });
|
|
344
|
+
return {
|
|
345
|
+
success: true,
|
|
346
|
+
message: `Server "${name}" stopped successfully`,
|
|
347
|
+
};
|
|
348
|
+
}
|
|
349
|
+
catch (error) {
|
|
350
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
351
|
+
managed.status = 'error';
|
|
352
|
+
managed.lastError = message;
|
|
353
|
+
this.emit({ type: 'server:error', server: name, error: message });
|
|
354
|
+
return {
|
|
355
|
+
success: false,
|
|
356
|
+
message: `Failed to stop server "${name}": ${message}`,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Restart a specific server.
|
|
362
|
+
*/
|
|
363
|
+
async restartServer(name) {
|
|
364
|
+
const stopResult = await this.stopServer(name);
|
|
365
|
+
if (!stopResult.success && !stopResult.message.includes('not running')) {
|
|
366
|
+
return stopResult;
|
|
367
|
+
}
|
|
368
|
+
return this.startServer(name);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Start all servers.
|
|
372
|
+
*/
|
|
373
|
+
async startAll() {
|
|
374
|
+
const results = [];
|
|
375
|
+
for (const name of this.getServerNames()) {
|
|
376
|
+
const result = await this.startServer(name);
|
|
377
|
+
results.push({ ...result, data: { server: name } });
|
|
378
|
+
}
|
|
379
|
+
return results;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Stop all servers.
|
|
383
|
+
*/
|
|
384
|
+
async stopAll() {
|
|
385
|
+
const results = [];
|
|
386
|
+
for (const name of this.getRunningServers()) {
|
|
387
|
+
const result = await this.stopServer(name);
|
|
388
|
+
results.push({ ...result, data: { server: name } });
|
|
389
|
+
}
|
|
390
|
+
return results;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Get statistics for all servers.
|
|
394
|
+
*/
|
|
395
|
+
getStats() {
|
|
396
|
+
const now = Date.now();
|
|
397
|
+
const servers = [];
|
|
398
|
+
let totalToolCalls = 0;
|
|
399
|
+
let totalDenied = 0;
|
|
400
|
+
let totalPrompted = 0;
|
|
401
|
+
let runningServers = 0;
|
|
402
|
+
let stoppedServers = 0;
|
|
403
|
+
let errorServers = 0;
|
|
404
|
+
for (const managed of this.servers.values()) {
|
|
405
|
+
const uptime = managed.startedAt
|
|
406
|
+
? Math.floor((now - managed.startedAt.getTime()) / 1000)
|
|
407
|
+
: undefined;
|
|
408
|
+
servers.push({
|
|
409
|
+
name: managed.name,
|
|
410
|
+
status: managed.status,
|
|
411
|
+
uptime,
|
|
412
|
+
toolCalls: managed.toolCallCount,
|
|
413
|
+
denied: managed.deniedCount,
|
|
414
|
+
prompted: managed.promptedCount,
|
|
415
|
+
healthStatus: managed.healthStatus,
|
|
416
|
+
});
|
|
417
|
+
totalToolCalls += managed.toolCallCount;
|
|
418
|
+
totalDenied += managed.deniedCount;
|
|
419
|
+
totalPrompted += managed.promptedCount;
|
|
420
|
+
if (managed.status === 'running')
|
|
421
|
+
runningServers++;
|
|
422
|
+
else if (managed.status === 'stopped')
|
|
423
|
+
stoppedServers++;
|
|
424
|
+
else if (managed.status === 'error')
|
|
425
|
+
errorServers++;
|
|
426
|
+
}
|
|
427
|
+
return {
|
|
428
|
+
totalServers: this.servers.size,
|
|
429
|
+
runningServers,
|
|
430
|
+
stoppedServers,
|
|
431
|
+
errorServers,
|
|
432
|
+
totalToolCalls,
|
|
433
|
+
totalDenied,
|
|
434
|
+
totalPrompted,
|
|
435
|
+
uptime: Math.floor((now - this.startTime.getTime()) / 1000),
|
|
436
|
+
servers,
|
|
437
|
+
};
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Get server logs (from audit logger).
|
|
441
|
+
*/
|
|
442
|
+
async getServerLogs(name, limit = 20) {
|
|
443
|
+
const instance = this.instances.get(name);
|
|
444
|
+
if (!instance) {
|
|
445
|
+
return {
|
|
446
|
+
success: false,
|
|
447
|
+
message: `Server "${name}" is not running`,
|
|
448
|
+
};
|
|
449
|
+
}
|
|
450
|
+
try {
|
|
451
|
+
const logs = instance.auditLogger.getRecentCalls(limit);
|
|
452
|
+
return {
|
|
453
|
+
success: true,
|
|
454
|
+
message: `Retrieved ${logs.length} log entries`,
|
|
455
|
+
data: logs,
|
|
456
|
+
};
|
|
457
|
+
}
|
|
458
|
+
catch (error) {
|
|
459
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
460
|
+
return {
|
|
461
|
+
success: false,
|
|
462
|
+
message: `Failed to get logs: ${message}`,
|
|
463
|
+
};
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
/**
|
|
467
|
+
* Creates the appropriate approval handler based on configuration.
|
|
468
|
+
*/
|
|
469
|
+
createApprovalHandler() {
|
|
470
|
+
const method = this.options.approvalMethod ?? this.config.approval?.method ?? 'terminal';
|
|
471
|
+
const timeoutMs = this.options.approvalTimeout ?? this.config.approval?.timeout ?? 60000;
|
|
472
|
+
switch (method) {
|
|
473
|
+
case 'interactive':
|
|
474
|
+
return new InteractiveApprovalHandler({
|
|
475
|
+
port: this.options.approvalPort ?? this.config.approval?.port,
|
|
476
|
+
timeoutMs,
|
|
477
|
+
});
|
|
478
|
+
case 'terminal':
|
|
479
|
+
default:
|
|
480
|
+
return new TerminalApprovalHandler(timeoutMs);
|
|
481
|
+
}
|
|
482
|
+
}
|
|
483
|
+
/**
|
|
484
|
+
* Creates the appropriate session store based on configuration.
|
|
485
|
+
*/
|
|
486
|
+
createSessionManager() {
|
|
487
|
+
const persist = this.options.persistSessions ?? this.config.session?.persist ?? false;
|
|
488
|
+
if (!persist) {
|
|
489
|
+
// Use in-memory store (default)
|
|
490
|
+
return new SessionManager();
|
|
491
|
+
}
|
|
492
|
+
// Use SQLite persistent store
|
|
493
|
+
const defaultPath = join(homedir(), '.tollgate', 'sessions.db');
|
|
494
|
+
const dbPath = this.options.sessionPath ?? this.config.session?.path ?? defaultPath;
|
|
495
|
+
return new SessionManager(new SqliteSessionStore(dbPath));
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
//# sourceMappingURL=manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../src/orchestrator/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Multi-Server Orchestrator Type Definitions
|
|
3
|
+
*
|
|
4
|
+
* Types for managing multiple MCP servers in a single Tollgate process.
|
|
5
|
+
*
|
|
6
|
+
* @module orchestrator/types
|
|
7
|
+
*/
|
|
8
|
+
import type { TollgateConfig, ServerConfig, FailureMode } from '../policy/types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Status of a managed server.
|
|
11
|
+
*/
|
|
12
|
+
export type ServerStatus = 'stopped' | 'starting' | 'running' | 'stopping' | 'error' | 'unhealthy';
|
|
13
|
+
/**
|
|
14
|
+
* Information about a managed server instance.
|
|
15
|
+
*/
|
|
16
|
+
export interface ManagedServer {
|
|
17
|
+
/** Server name (key in config.servers) */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Current status */
|
|
20
|
+
status: ServerStatus;
|
|
21
|
+
/** Server configuration */
|
|
22
|
+
config: ServerConfig;
|
|
23
|
+
/** Process ID if running */
|
|
24
|
+
pid?: number;
|
|
25
|
+
/** Port if using TCP transport */
|
|
26
|
+
port?: number;
|
|
27
|
+
/** Time when server was started */
|
|
28
|
+
startedAt?: Date;
|
|
29
|
+
/** Last error message if status is 'error' */
|
|
30
|
+
lastError?: string;
|
|
31
|
+
/** Number of tool calls processed */
|
|
32
|
+
toolCallCount: number;
|
|
33
|
+
/** Number of requests denied */
|
|
34
|
+
deniedCount: number;
|
|
35
|
+
/** Number of requests prompted */
|
|
36
|
+
promptedCount: number;
|
|
37
|
+
/** Health check status */
|
|
38
|
+
healthStatus: 'healthy' | 'unhealthy' | 'unknown';
|
|
39
|
+
/** Last health check time */
|
|
40
|
+
lastHealthCheck?: Date;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Options for the orchestrator.
|
|
44
|
+
*/
|
|
45
|
+
export interface OrchestratorOptions {
|
|
46
|
+
/** Tollgate configuration */
|
|
47
|
+
config: TollgateConfig;
|
|
48
|
+
/** Custom path for audit database */
|
|
49
|
+
auditPath?: string;
|
|
50
|
+
/** Approval timeout in milliseconds */
|
|
51
|
+
approvalTimeout?: number;
|
|
52
|
+
/** Approval method */
|
|
53
|
+
approvalMethod?: 'terminal' | 'interactive';
|
|
54
|
+
/** Port for interactive approval UI */
|
|
55
|
+
approvalPort?: number;
|
|
56
|
+
/** Enable persistent session storage */
|
|
57
|
+
persistSessions?: boolean;
|
|
58
|
+
/** Path for persistent session database */
|
|
59
|
+
sessionPath?: string;
|
|
60
|
+
/** Enable dry-run mode for all servers */
|
|
61
|
+
dryRun?: boolean;
|
|
62
|
+
/** Default failure mode for all servers */
|
|
63
|
+
failureMode?: FailureMode;
|
|
64
|
+
/** Auto-start servers on orchestrator start */
|
|
65
|
+
autoStart?: boolean;
|
|
66
|
+
/** Servers to auto-start (if autoStart is true, defaults to all) */
|
|
67
|
+
autoStartServers?: string[];
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Event types emitted by the orchestrator.
|
|
71
|
+
*/
|
|
72
|
+
export type OrchestratorEvent = {
|
|
73
|
+
type: 'server:starting';
|
|
74
|
+
server: string;
|
|
75
|
+
} | {
|
|
76
|
+
type: 'server:started';
|
|
77
|
+
server: string;
|
|
78
|
+
pid?: number;
|
|
79
|
+
} | {
|
|
80
|
+
type: 'server:stopping';
|
|
81
|
+
server: string;
|
|
82
|
+
} | {
|
|
83
|
+
type: 'server:stopped';
|
|
84
|
+
server: string;
|
|
85
|
+
} | {
|
|
86
|
+
type: 'server:error';
|
|
87
|
+
server: string;
|
|
88
|
+
error: string;
|
|
89
|
+
} | {
|
|
90
|
+
type: 'server:health';
|
|
91
|
+
server: string;
|
|
92
|
+
status: 'healthy' | 'unhealthy';
|
|
93
|
+
} | {
|
|
94
|
+
type: 'tool:call';
|
|
95
|
+
server: string;
|
|
96
|
+
tool: string;
|
|
97
|
+
action: string;
|
|
98
|
+
} | {
|
|
99
|
+
type: 'orchestrator:ready';
|
|
100
|
+
} | {
|
|
101
|
+
type: 'orchestrator:shutdown';
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* Callback for orchestrator events.
|
|
105
|
+
*/
|
|
106
|
+
export type OrchestratorEventHandler = (event: OrchestratorEvent) => void;
|
|
107
|
+
/**
|
|
108
|
+
* Interactive command result.
|
|
109
|
+
*/
|
|
110
|
+
export interface CommandResult {
|
|
111
|
+
success: boolean;
|
|
112
|
+
message: string;
|
|
113
|
+
data?: unknown;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Server statistics summary.
|
|
117
|
+
*/
|
|
118
|
+
export interface ServerStats {
|
|
119
|
+
name: string;
|
|
120
|
+
status: ServerStatus;
|
|
121
|
+
uptime?: number;
|
|
122
|
+
toolCalls: number;
|
|
123
|
+
denied: number;
|
|
124
|
+
prompted: number;
|
|
125
|
+
healthStatus: string;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Orchestrator statistics summary.
|
|
129
|
+
*/
|
|
130
|
+
export interface OrchestratorStats {
|
|
131
|
+
totalServers: number;
|
|
132
|
+
runningServers: number;
|
|
133
|
+
stoppedServers: number;
|
|
134
|
+
errorServers: number;
|
|
135
|
+
totalToolCalls: number;
|
|
136
|
+
totalDenied: number;
|
|
137
|
+
totalPrompted: number;
|
|
138
|
+
uptime: number;
|
|
139
|
+
servers: ServerStats[];
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|