@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.
Files changed (215) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +885 -0
  3. package/dist/analyzers/filesystem.d.ts +26 -0
  4. package/dist/analyzers/filesystem.d.ts.map +1 -0
  5. package/dist/analyzers/filesystem.js +284 -0
  6. package/dist/analyzers/filesystem.js.map +1 -0
  7. package/dist/analyzers/http.d.ts +90 -0
  8. package/dist/analyzers/http.d.ts.map +1 -0
  9. package/dist/analyzers/http.js +433 -0
  10. package/dist/analyzers/http.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +101 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +342 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/analyzers/loader.d.ts +114 -0
  16. package/dist/analyzers/loader.d.ts.map +1 -0
  17. package/dist/analyzers/loader.js +184 -0
  18. package/dist/analyzers/loader.js.map +1 -0
  19. package/dist/analyzers/prompt-injection.d.ts +95 -0
  20. package/dist/analyzers/prompt-injection.d.ts.map +1 -0
  21. package/dist/analyzers/prompt-injection.js +725 -0
  22. package/dist/analyzers/prompt-injection.js.map +1 -0
  23. package/dist/analyzers/sdk.d.ts +230 -0
  24. package/dist/analyzers/sdk.d.ts.map +1 -0
  25. package/dist/analyzers/sdk.js +283 -0
  26. package/dist/analyzers/sdk.js.map +1 -0
  27. package/dist/analyzers/shell.d.ts +20 -0
  28. package/dist/analyzers/shell.d.ts.map +1 -0
  29. package/dist/analyzers/shell.js +297 -0
  30. package/dist/analyzers/shell.js.map +1 -0
  31. package/dist/analyzers/sql.d.ts +37 -0
  32. package/dist/analyzers/sql.d.ts.map +1 -0
  33. package/dist/analyzers/sql.js +455 -0
  34. package/dist/analyzers/sql.js.map +1 -0
  35. package/dist/analyzers/types.d.ts +117 -0
  36. package/dist/analyzers/types.d.ts.map +1 -0
  37. package/dist/analyzers/types.js +46 -0
  38. package/dist/analyzers/types.js.map +1 -0
  39. package/dist/approval/interactive.d.ts +72 -0
  40. package/dist/approval/interactive.d.ts.map +1 -0
  41. package/dist/approval/interactive.js +550 -0
  42. package/dist/approval/interactive.js.map +1 -0
  43. package/dist/approval/terminal.d.ts +59 -0
  44. package/dist/approval/terminal.d.ts.map +1 -0
  45. package/dist/approval/terminal.js +238 -0
  46. package/dist/approval/terminal.js.map +1 -0
  47. package/dist/approval/types.d.ts +66 -0
  48. package/dist/approval/types.d.ts.map +1 -0
  49. package/dist/approval/types.js +2 -0
  50. package/dist/approval/types.js.map +1 -0
  51. package/dist/audit/exporter.d.ts +138 -0
  52. package/dist/audit/exporter.d.ts.map +1 -0
  53. package/dist/audit/exporter.js +366 -0
  54. package/dist/audit/exporter.js.map +1 -0
  55. package/dist/audit/logger.d.ts +156 -0
  56. package/dist/audit/logger.d.ts.map +1 -0
  57. package/dist/audit/logger.js +406 -0
  58. package/dist/audit/logger.js.map +1 -0
  59. package/dist/audit/redaction.d.ts +110 -0
  60. package/dist/audit/redaction.d.ts.map +1 -0
  61. package/dist/audit/redaction.js +307 -0
  62. package/dist/audit/redaction.js.map +1 -0
  63. package/dist/audit/schema.d.ts +76 -0
  64. package/dist/audit/schema.d.ts.map +1 -0
  65. package/dist/audit/schema.js +122 -0
  66. package/dist/audit/schema.js.map +1 -0
  67. package/dist/cli/commands/doctor.d.ts +34 -0
  68. package/dist/cli/commands/doctor.d.ts.map +1 -0
  69. package/dist/cli/commands/doctor.js +431 -0
  70. package/dist/cli/commands/doctor.js.map +1 -0
  71. package/dist/cli/commands/export.d.ts +18 -0
  72. package/dist/cli/commands/export.d.ts.map +1 -0
  73. package/dist/cli/commands/export.js +63 -0
  74. package/dist/cli/commands/export.js.map +1 -0
  75. package/dist/cli/commands/init.d.ts +12 -0
  76. package/dist/cli/commands/init.d.ts.map +1 -0
  77. package/dist/cli/commands/init.js +102 -0
  78. package/dist/cli/commands/init.js.map +1 -0
  79. package/dist/cli/commands/logs.d.ts +11 -0
  80. package/dist/cli/commands/logs.d.ts.map +1 -0
  81. package/dist/cli/commands/logs.js +60 -0
  82. package/dist/cli/commands/logs.js.map +1 -0
  83. package/dist/cli/commands/scan.d.ts +29 -0
  84. package/dist/cli/commands/scan.d.ts.map +1 -0
  85. package/dist/cli/commands/scan.js +251 -0
  86. package/dist/cli/commands/scan.js.map +1 -0
  87. package/dist/cli/commands/serve.d.ts +26 -0
  88. package/dist/cli/commands/serve.d.ts.map +1 -0
  89. package/dist/cli/commands/serve.js +424 -0
  90. package/dist/cli/commands/serve.js.map +1 -0
  91. package/dist/cli/commands/start.d.ts +20 -0
  92. package/dist/cli/commands/start.d.ts.map +1 -0
  93. package/dist/cli/commands/start.js +82 -0
  94. package/dist/cli/commands/start.js.map +1 -0
  95. package/dist/cli/commands/stats.d.ts +10 -0
  96. package/dist/cli/commands/stats.d.ts.map +1 -0
  97. package/dist/cli/commands/stats.js +42 -0
  98. package/dist/cli/commands/stats.js.map +1 -0
  99. package/dist/cli/commands/templates.d.ts +26 -0
  100. package/dist/cli/commands/templates.d.ts.map +1 -0
  101. package/dist/cli/commands/templates.js +221 -0
  102. package/dist/cli/commands/templates.js.map +1 -0
  103. package/dist/cli/commands/validate.d.ts +12 -0
  104. package/dist/cli/commands/validate.d.ts.map +1 -0
  105. package/dist/cli/commands/validate.js +107 -0
  106. package/dist/cli/commands/validate.js.map +1 -0
  107. package/dist/cli/commands/wrap.d.ts +19 -0
  108. package/dist/cli/commands/wrap.d.ts.map +1 -0
  109. package/dist/cli/commands/wrap.js +59 -0
  110. package/dist/cli/commands/wrap.js.map +1 -0
  111. package/dist/cli/index.d.ts +17 -0
  112. package/dist/cli/index.d.ts.map +1 -0
  113. package/dist/cli/index.js +202 -0
  114. package/dist/cli/index.js.map +1 -0
  115. package/dist/cli/ui.d.ts +139 -0
  116. package/dist/cli/ui.d.ts.map +1 -0
  117. package/dist/cli/ui.js +271 -0
  118. package/dist/cli/ui.js.map +1 -0
  119. package/dist/constants.d.ts +33 -0
  120. package/dist/constants.d.ts.map +1 -0
  121. package/dist/constants.js +54 -0
  122. package/dist/constants.js.map +1 -0
  123. package/dist/errors.d.ts +28 -0
  124. package/dist/errors.d.ts.map +1 -0
  125. package/dist/errors.js +37 -0
  126. package/dist/errors.js.map +1 -0
  127. package/dist/index.d.ts +49 -0
  128. package/dist/index.d.ts.map +1 -0
  129. package/dist/index.js +82 -0
  130. package/dist/index.js.map +1 -0
  131. package/dist/orchestrator/index.d.ts +11 -0
  132. package/dist/orchestrator/index.d.ts.map +1 -0
  133. package/dist/orchestrator/index.js +10 -0
  134. package/dist/orchestrator/index.js.map +1 -0
  135. package/dist/orchestrator/manager.d.ts +127 -0
  136. package/dist/orchestrator/manager.d.ts.map +1 -0
  137. package/dist/orchestrator/manager.js +498 -0
  138. package/dist/orchestrator/manager.js.map +1 -0
  139. package/dist/orchestrator/types.d.ts +141 -0
  140. package/dist/orchestrator/types.d.ts.map +1 -0
  141. package/dist/orchestrator/types.js +9 -0
  142. package/dist/orchestrator/types.js.map +1 -0
  143. package/dist/policy/engine.d.ts +55 -0
  144. package/dist/policy/engine.d.ts.map +1 -0
  145. package/dist/policy/engine.js +288 -0
  146. package/dist/policy/engine.js.map +1 -0
  147. package/dist/policy/natural-language.d.ts +141 -0
  148. package/dist/policy/natural-language.d.ts.map +1 -0
  149. package/dist/policy/natural-language.js +552 -0
  150. package/dist/policy/natural-language.js.map +1 -0
  151. package/dist/policy/parser.d.ts +141 -0
  152. package/dist/policy/parser.d.ts.map +1 -0
  153. package/dist/policy/parser.js +314 -0
  154. package/dist/policy/parser.js.map +1 -0
  155. package/dist/policy/types.d.ts +428 -0
  156. package/dist/policy/types.d.ts.map +1 -0
  157. package/dist/policy/types.js +32 -0
  158. package/dist/policy/types.js.map +1 -0
  159. package/dist/policy/validator.d.ts +72 -0
  160. package/dist/policy/validator.d.ts.map +1 -0
  161. package/dist/policy/validator.js +453 -0
  162. package/dist/policy/validator.js.map +1 -0
  163. package/dist/proxy/bridge.d.ts +84 -0
  164. package/dist/proxy/bridge.d.ts.map +1 -0
  165. package/dist/proxy/bridge.js +217 -0
  166. package/dist/proxy/bridge.js.map +1 -0
  167. package/dist/proxy/client.d.ts +130 -0
  168. package/dist/proxy/client.d.ts.map +1 -0
  169. package/dist/proxy/client.js +290 -0
  170. package/dist/proxy/client.js.map +1 -0
  171. package/dist/proxy/server.d.ts +111 -0
  172. package/dist/proxy/server.d.ts.map +1 -0
  173. package/dist/proxy/server.js +444 -0
  174. package/dist/proxy/server.js.map +1 -0
  175. package/dist/scanner.d.ts +91 -0
  176. package/dist/scanner.d.ts.map +1 -0
  177. package/dist/scanner.js +373 -0
  178. package/dist/scanner.js.map +1 -0
  179. package/dist/session/index.d.ts +32 -0
  180. package/dist/session/index.d.ts.map +1 -0
  181. package/dist/session/index.js +31 -0
  182. package/dist/session/index.js.map +1 -0
  183. package/dist/session/manager.d.ts +166 -0
  184. package/dist/session/manager.d.ts.map +1 -0
  185. package/dist/session/manager.js +454 -0
  186. package/dist/session/manager.js.map +1 -0
  187. package/dist/session/sqlite-store.d.ts +54 -0
  188. package/dist/session/sqlite-store.d.ts.map +1 -0
  189. package/dist/session/sqlite-store.js +209 -0
  190. package/dist/session/sqlite-store.js.map +1 -0
  191. package/dist/session/types.d.ts +179 -0
  192. package/dist/session/types.d.ts.map +1 -0
  193. package/dist/session/types.js +38 -0
  194. package/dist/session/types.js.map +1 -0
  195. package/dist/templates.d.ts +64 -0
  196. package/dist/templates.d.ts.map +1 -0
  197. package/dist/templates.js +451 -0
  198. package/dist/templates.js.map +1 -0
  199. package/dist/utils/config.d.ts +57 -0
  200. package/dist/utils/config.d.ts.map +1 -0
  201. package/dist/utils/config.js +104 -0
  202. package/dist/utils/config.js.map +1 -0
  203. package/dist/utils/errors.d.ts +18 -0
  204. package/dist/utils/errors.d.ts.map +1 -0
  205. package/dist/utils/errors.js +35 -0
  206. package/dist/utils/errors.js.map +1 -0
  207. package/dist/utils/logger.d.ts +144 -0
  208. package/dist/utils/logger.d.ts.map +1 -0
  209. package/dist/utils/logger.js +300 -0
  210. package/dist/utils/logger.js.map +1 -0
  211. package/dist/wizard.d.ts +68 -0
  212. package/dist/wizard.d.ts.map +1 -0
  213. package/dist/wizard.js +395 -0
  214. package/dist/wizard.js.map +1 -0
  215. 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,9 @@
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
+ export {};
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/orchestrator/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}