@darkiceinteractive/mcp-conductor 1.0.0 → 2.0.0-alpha.1

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 (117) hide show
  1. package/README.md +263 -432
  2. package/dist/bridge/http-server.d.ts +39 -1
  3. package/dist/bridge/http-server.d.ts.map +1 -1
  4. package/dist/bridge/http-server.js +187 -10
  5. package/dist/bridge/http-server.js.map +1 -1
  6. package/dist/bridge/index.d.ts +4 -1
  7. package/dist/bridge/index.d.ts.map +1 -1
  8. package/dist/bridge/index.js +4 -1
  9. package/dist/bridge/index.js.map +1 -1
  10. package/dist/bridge/session-registry.d.ts +64 -0
  11. package/dist/bridge/session-registry.d.ts.map +1 -0
  12. package/dist/bridge/session-registry.js +124 -0
  13. package/dist/bridge/session-registry.js.map +1 -0
  14. package/dist/config/defaults.d.ts +58 -2
  15. package/dist/config/defaults.d.ts.map +1 -1
  16. package/dist/config/defaults.js +61 -3
  17. package/dist/config/defaults.js.map +1 -1
  18. package/dist/config/index.d.ts +3 -1
  19. package/dist/config/index.d.ts.map +1 -1
  20. package/dist/config/index.js +3 -1
  21. package/dist/config/index.js.map +1 -1
  22. package/dist/config/loader.d.ts +3 -0
  23. package/dist/config/loader.d.ts.map +1 -1
  24. package/dist/config/loader.js +29 -6
  25. package/dist/config/loader.js.map +1 -1
  26. package/dist/config/schema.d.ts +2 -0
  27. package/dist/config/schema.d.ts.map +1 -1
  28. package/dist/hub/index.d.ts +3 -1
  29. package/dist/hub/index.d.ts.map +1 -1
  30. package/dist/hub/index.js +3 -1
  31. package/dist/hub/index.js.map +1 -1
  32. package/dist/hub/mcp-hub.d.ts +1 -0
  33. package/dist/hub/mcp-hub.d.ts.map +1 -1
  34. package/dist/hub/mcp-hub.js +47 -14
  35. package/dist/hub/mcp-hub.js.map +1 -1
  36. package/dist/index.d.ts +21 -4
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +71 -7
  39. package/dist/index.js.map +1 -1
  40. package/dist/metrics/index.d.ts +3 -1
  41. package/dist/metrics/index.d.ts.map +1 -1
  42. package/dist/metrics/index.js +3 -1
  43. package/dist/metrics/index.js.map +1 -1
  44. package/dist/metrics/metrics-collector.d.ts.map +1 -1
  45. package/dist/metrics/metrics-collector.js +1 -1
  46. package/dist/metrics/metrics-collector.js.map +1 -1
  47. package/dist/modes/index.d.ts +3 -1
  48. package/dist/modes/index.d.ts.map +1 -1
  49. package/dist/modes/index.js +3 -1
  50. package/dist/modes/index.js.map +1 -1
  51. package/dist/runtime/executor.d.ts +36 -1
  52. package/dist/runtime/executor.d.ts.map +1 -1
  53. package/dist/runtime/executor.js +245 -16
  54. package/dist/runtime/executor.js.map +1 -1
  55. package/dist/runtime/index.d.ts +3 -1
  56. package/dist/runtime/index.d.ts.map +1 -1
  57. package/dist/runtime/index.js +3 -1
  58. package/dist/runtime/index.js.map +1 -1
  59. package/dist/server/index.d.ts +3 -1
  60. package/dist/server/index.d.ts.map +1 -1
  61. package/dist/server/index.js +3 -1
  62. package/dist/server/index.js.map +1 -1
  63. package/dist/server/mcp-server.d.ts +5 -0
  64. package/dist/server/mcp-server.d.ts.map +1 -1
  65. package/dist/server/mcp-server.js +243 -44
  66. package/dist/server/mcp-server.js.map +1 -1
  67. package/dist/skills/index.d.ts +3 -1
  68. package/dist/skills/index.d.ts.map +1 -1
  69. package/dist/skills/index.js +3 -1
  70. package/dist/skills/index.js.map +1 -1
  71. package/dist/streaming/execution-stream.d.ts.map +1 -1
  72. package/dist/streaming/execution-stream.js +22 -5
  73. package/dist/streaming/execution-stream.js.map +1 -1
  74. package/dist/streaming/index.d.ts +3 -1
  75. package/dist/streaming/index.d.ts.map +1 -1
  76. package/dist/streaming/index.js +3 -1
  77. package/dist/streaming/index.js.map +1 -1
  78. package/dist/utils/env.d.ts +20 -0
  79. package/dist/utils/env.d.ts.map +1 -0
  80. package/dist/utils/env.js +33 -0
  81. package/dist/utils/env.js.map +1 -0
  82. package/dist/utils/errors.d.ts +17 -1
  83. package/dist/utils/errors.d.ts.map +1 -1
  84. package/dist/utils/errors.js +16 -1
  85. package/dist/utils/errors.js.map +1 -1
  86. package/dist/utils/index.d.ts +6 -1
  87. package/dist/utils/index.d.ts.map +1 -1
  88. package/dist/utils/index.js +6 -1
  89. package/dist/utils/index.js.map +1 -1
  90. package/dist/utils/logger.d.ts +8 -1
  91. package/dist/utils/logger.d.ts.map +1 -1
  92. package/dist/utils/logger.js +13 -2
  93. package/dist/utils/logger.js.map +1 -1
  94. package/dist/utils/orphan-watch.d.ts +34 -0
  95. package/dist/utils/orphan-watch.d.ts.map +1 -0
  96. package/dist/utils/orphan-watch.js +54 -0
  97. package/dist/utils/orphan-watch.js.map +1 -0
  98. package/dist/utils/rate-limiter.d.ts.map +1 -1
  99. package/dist/utils/rate-limiter.js +6 -0
  100. package/dist/utils/rate-limiter.js.map +1 -1
  101. package/dist/utils/redact.d.ts +15 -0
  102. package/dist/utils/redact.d.ts.map +1 -0
  103. package/dist/utils/redact.js +48 -0
  104. package/dist/utils/redact.js.map +1 -0
  105. package/dist/version.d.ts +4 -0
  106. package/dist/version.d.ts.map +1 -0
  107. package/dist/version.js +4 -0
  108. package/dist/version.js.map +1 -0
  109. package/dist/watcher/index.d.ts +3 -1
  110. package/dist/watcher/index.d.ts.map +1 -1
  111. package/dist/watcher/index.js +3 -1
  112. package/dist/watcher/index.js.map +1 -1
  113. package/package.json +4 -5
  114. package/dist/bin/cli.d.ts +0 -8
  115. package/dist/bin/cli.d.ts.map +0 -1
  116. package/dist/bin/cli.js +0 -940
  117. package/dist/bin/cli.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,KAAK,EACV,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,kBAAkB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
- * Skills module exports
2
+ * Skills engine — loads YAML-defined reusable code templates from a
3
+ * directory, supports search/list/execute, and hot-reloads on change.
4
+ * @module skills
3
5
  */
4
6
  export { SkillsEngine, getSkillsEngine, shutdownSkillsEngine, } from './skills-engine.js';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,oBAAoB,GAQrB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,YAAY,EACZ,eAAe,EACf,oBAAoB,GAQrB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"execution-stream.d.ts","sourceRoot":"","sources":["../../src/streaming/execution-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-stream.d.ts","sourceRoot":"","sources":["../../src/streaming/execution-stream.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import { EventEmitter } from 'node:events';
8
8
  import { logger } from '../utils/index.js';
9
+ import { LIFECYCLE_TIMEOUTS } from '../config/defaults.js';
9
10
  /**
10
11
  * Manages streaming for a single execution
11
12
  */
@@ -64,6 +65,10 @@ export class ExecutionStream extends EventEmitter {
64
65
  */
65
66
  log(message, level = 'info') {
66
67
  this.state.logs.push(message);
68
+ // Cap logs to prevent unbounded memory growth
69
+ if (this.state.logs.length > 500) {
70
+ this.state.logs = this.state.logs.slice(-500);
71
+ }
67
72
  this.state.lastUpdate = new Date();
68
73
  const event = {
69
74
  type: 'log',
@@ -128,6 +133,8 @@ export class ExecutionStream extends EventEmitter {
128
133
  this.state.status = result.success ? 'completed' : 'error';
129
134
  this.state.progress = 100;
130
135
  this.state.lastUpdate = new Date();
136
+ // Release log memory on completion
137
+ this.state.logs = [];
131
138
  const event = {
132
139
  type: 'complete',
133
140
  timestamp: new Date().toISOString(),
@@ -207,10 +214,10 @@ export class ExecutionStream extends EventEmitter {
207
214
  export class StreamManager {
208
215
  streams = new Map();
209
216
  cleanupInterval = null;
210
- maxStreamAge = 5 * 60 * 1000; // 5 minutes
217
+ maxStreamAge = LIFECYCLE_TIMEOUTS.STREAM_STALE_TTL_MS;
211
218
  constructor() {
212
219
  // Start cleanup interval
213
- this.cleanupInterval = setInterval(() => this.cleanupStaleStreams(), 60000);
220
+ this.cleanupInterval = setInterval(() => this.cleanupStaleStreams(), LIFECYCLE_TIMEOUTS.STREAM_CLEANUP_INTERVAL_MS);
214
221
  }
215
222
  /**
216
223
  * Create a new execution stream
@@ -267,12 +274,21 @@ export class StreamManager {
267
274
  for (const [id, stream] of this.streams) {
268
275
  const state = stream.getState();
269
276
  const age = now - state.lastUpdate.getTime();
270
- // Remove if completed and older than max age, or if no connections and stale
277
+ // Normal cleanup: completed + no connections + 5min old
271
278
  if ((state.status === 'completed' || state.status === 'error') &&
272
279
  !stream.hasConnections() &&
273
280
  age > this.maxStreamAge) {
274
281
  toRemove.push(id);
275
282
  }
283
+ // Force cleanup: completed/error + STREAM_COMPLETED_TTL_MS old (even with connections)
284
+ else if ((state.status === 'completed' || state.status === 'error') &&
285
+ age > LIFECYCLE_TIMEOUTS.STREAM_COMPLETED_TTL_MS) {
286
+ toRemove.push(id);
287
+ }
288
+ // Stuck cleanup: running + no update in STREAM_STUCK_TTL_MS
289
+ else if (state.status === 'running' && age > LIFECYCLE_TIMEOUTS.STREAM_STUCK_TTL_MS) {
290
+ toRemove.push(id);
291
+ }
276
292
  }
277
293
  for (const id of toRemove) {
278
294
  this.removeStream(id);
@@ -289,8 +305,9 @@ export class StreamManager {
289
305
  clearInterval(this.cleanupInterval);
290
306
  this.cleanupInterval = null;
291
307
  }
292
- // Close all streams
293
- for (const [id, stream] of this.streams) {
308
+ // Close all streams and clean up listeners
309
+ for (const [_id, stream] of this.streams) {
310
+ stream.removeAllListeners();
294
311
  stream.closeAllConnections();
295
312
  }
296
313
  this.streams.clear();
@@ -1 +1 @@
1
- {"version":3,"file":"execution-stream.js","sourceRoot":"","sources":["../../src/streaming/execution-stream.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-stream.js","sourceRoot":"","sources":["../../src/streaming/execution-stream.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,7 @@
1
1
  /**
2
- * Streaming module exports
2
+ * Streaming SSE-based event stream for real-time progress updates,
3
+ * console log forwarding, tool call tracing, and execution completion.
4
+ * @module streaming
3
5
  */
4
6
  export { ExecutionStream, StreamManager, getStreamManager, shutdownStreamManager, type StreamEvent, type LogEvent, type ProgressEvent, type ToolCallEvent, type CompleteEvent, type ExecutionState, } from './execution-stream.js';
5
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,uBAAuB,CAAC"}
@@ -1,5 +1,7 @@
1
1
  /**
2
- * Streaming module exports
2
+ * Streaming SSE-based event stream for real-time progress updates,
3
+ * console log forwarding, tool call tracing, and execution completion.
4
+ * @module streaming
3
5
  */
4
6
  export { ExecutionStream, StreamManager, getStreamManager, shutdownStreamManager, } from './execution-stream.js';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GAOtB,MAAM,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/streaming/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,eAAe,EACf,aAAa,EACb,gBAAgB,EAChB,qBAAqB,GAOtB,MAAM,uBAAuB,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Minimal environment builder for spawned child processes.
3
+ *
4
+ * Passing `process.env` wholesale to child processes leaks secrets (API keys,
5
+ * tokens) and user identity (USER, SHELL, LOGNAME) into sandboxes and backend
6
+ * MCP servers. Children only need PATH (to resolve binaries) and HOME (for
7
+ * Deno/npm caches). Everything else is explicitly opted in via `extra`.
8
+ */
9
+ /**
10
+ * Build a minimal env for spawning a child process.
11
+ *
12
+ * Always includes `PATH` and `HOME`. Any keys supplied via `extra` are merged
13
+ * on top, with `undefined`/empty values dropped so they can't override a valid
14
+ * parent value unintentionally.
15
+ *
16
+ * @param extra - Additional env vars to include (e.g. `{ DENO_DIR, NO_COLOR: '1' }`)
17
+ * @returns Env object suitable for `child_process.spawn({ env: ... })`
18
+ */
19
+ export declare function minimalChildEnv(extra?: Record<string, string | undefined>): Record<string, string>;
20
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GACzC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Minimal environment builder for spawned child processes.
3
+ *
4
+ * Passing `process.env` wholesale to child processes leaks secrets (API keys,
5
+ * tokens) and user identity (USER, SHELL, LOGNAME) into sandboxes and backend
6
+ * MCP servers. Children only need PATH (to resolve binaries) and HOME (for
7
+ * Deno/npm caches). Everything else is explicitly opted in via `extra`.
8
+ */
9
+ /**
10
+ * Build a minimal env for spawning a child process.
11
+ *
12
+ * Always includes `PATH` and `HOME`. Any keys supplied via `extra` are merged
13
+ * on top, with `undefined`/empty values dropped so they can't override a valid
14
+ * parent value unintentionally.
15
+ *
16
+ * @param extra - Additional env vars to include (e.g. `{ DENO_DIR, NO_COLOR: '1' }`)
17
+ * @returns Env object suitable for `child_process.spawn({ env: ... })`
18
+ */
19
+ export function minimalChildEnv(extra) {
20
+ const env = {
21
+ PATH: process.env.PATH ?? '',
22
+ HOME: process.env.HOME ?? '',
23
+ };
24
+ if (extra) {
25
+ for (const [key, value] of Object.entries(extra)) {
26
+ if (value !== undefined && value !== '') {
27
+ env[key] = value;
28
+ }
29
+ }
30
+ }
31
+ return env;
32
+ }
33
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/utils/env.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,KAA0C;IAE1C,MAAM,GAAG,GAA2B;QAClC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;QAC5B,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;KAC7B,CAAC;IAEF,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;gBACxC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -1,7 +1,16 @@
1
1
  /**
2
- * Custom error types for MCP Executor
2
+ * Custom error hierarchy for MCP Conductor.
3
+ *
4
+ * All errors extend {@link ExecutionError}, which carries a discriminated
5
+ * `type` field so callers can pattern-match without `instanceof` checks.
6
+ * The `toJSON()` method produces a serialisable representation suitable
7
+ * for returning in MCP tool error responses.
8
+ *
9
+ * @module utils/errors
3
10
  */
11
+ /** Discriminated union of all error categories. */
4
12
  export type ErrorType = 'syntax' | 'runtime' | 'timeout' | 'security' | 'connection' | 'tool_not_found' | 'server_not_found';
13
+ /** Base error for all sandbox execution failures. */
5
14
  export declare class ExecutionError extends Error {
6
15
  readonly type: ErrorType;
7
16
  readonly line?: number;
@@ -12,24 +21,31 @@ export declare class ExecutionError extends Error {
12
21
  });
13
22
  toJSON(): Record<string, unknown>;
14
23
  }
24
+ /** Raised when user-supplied TypeScript fails to parse. */
15
25
  export declare class SyntaxError extends ExecutionError {
16
26
  constructor(message: string, line?: number);
17
27
  }
28
+ /** Raised when code throws an unhandled exception during execution. */
18
29
  export declare class RuntimeError extends ExecutionError {
19
30
  constructor(message: string, stack?: string);
20
31
  }
32
+ /** Raised when a sandbox execution exceeds its configured timeout. */
21
33
  export declare class TimeoutError extends ExecutionError {
22
34
  constructor(timeoutMs: number);
23
35
  }
36
+ /** Raised when sandbox code attempts a disallowed operation (e.g. net access). */
24
37
  export declare class SecurityError extends ExecutionError {
25
38
  constructor(message: string);
26
39
  }
40
+ /** Raised when a backend MCP server fails to connect or respond. */
27
41
  export declare class ConnectionError extends ExecutionError {
28
42
  constructor(serverName: string, message: string);
29
43
  }
44
+ /** Raised when sandbox code calls a tool that does not exist on the target server. */
30
45
  export declare class ToolNotFoundError extends ExecutionError {
31
46
  constructor(serverName: string, toolName: string);
32
47
  }
48
+ /** Raised when sandbox code references a server name not in the conductor config. */
33
49
  export declare class ServerNotFoundError extends ExecutionError {
34
50
  constructor(serverName: string);
35
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE7H,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEnB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUzF,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC;AAED,qBAAa,WAAY,SAAQ,cAAc;gBACjC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAI3C;AAED,qBAAa,YAAa,SAAQ,cAAc;gBAClC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI5C;AAED,qBAAa,YAAa,SAAQ,cAAc;gBAClC,SAAS,EAAE,MAAM;CAI9B;AAED,qBAAa,aAAc,SAAQ,cAAc;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAIjD;AAED,qBAAa,mBAAoB,SAAQ,cAAc;gBACzC,UAAU,EAAE,MAAM;CAI/B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,mDAAmD;AACnD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;AAE7H,qDAAqD;AACrD,qBAAa,cAAe,SAAQ,KAAK;IACvC,SAAgB,IAAI,EAAE,SAAS,CAAC;IAChC,SAAgB,IAAI,CAAC,EAAE,MAAM,CAAC;IAC9B,SAAgB,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEnB,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAUzF,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAQlC;AAED,2DAA2D;AAC3D,qBAAa,WAAY,SAAQ,cAAc;gBACjC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAI3C;AAED,uEAAuE;AACvE,qBAAa,YAAa,SAAQ,cAAc;gBAClC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM;CAI5C;AAED,sEAAsE;AACtE,qBAAa,YAAa,SAAQ,cAAc;gBAClC,SAAS,EAAE,MAAM;CAI9B;AAED,kFAAkF;AAClF,qBAAa,aAAc,SAAQ,cAAc;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,oEAAoE;AACpE,qBAAa,eAAgB,SAAQ,cAAc;gBACrC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CAIhD;AAED,sFAAsF;AACtF,qBAAa,iBAAkB,SAAQ,cAAc;gBACvC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;CAIjD;AAED,qFAAqF;AACrF,qBAAa,mBAAoB,SAAQ,cAAc;gBACzC,UAAU,EAAE,MAAM;CAI/B"}
@@ -1,6 +1,14 @@
1
1
  /**
2
- * Custom error types for MCP Executor
2
+ * Custom error hierarchy for MCP Conductor.
3
+ *
4
+ * All errors extend {@link ExecutionError}, which carries a discriminated
5
+ * `type` field so callers can pattern-match without `instanceof` checks.
6
+ * The `toJSON()` method produces a serialisable representation suitable
7
+ * for returning in MCP tool error responses.
8
+ *
9
+ * @module utils/errors
3
10
  */
11
+ /** Base error for all sandbox execution failures. */
4
12
  export class ExecutionError extends Error {
5
13
  type;
6
14
  line;
@@ -23,42 +31,49 @@ export class ExecutionError extends Error {
23
31
  };
24
32
  }
25
33
  }
34
+ /** Raised when user-supplied TypeScript fails to parse. */
26
35
  export class SyntaxError extends ExecutionError {
27
36
  constructor(message, line) {
28
37
  super('syntax', message, { line });
29
38
  this.name = 'SyntaxError';
30
39
  }
31
40
  }
41
+ /** Raised when code throws an unhandled exception during execution. */
32
42
  export class RuntimeError extends ExecutionError {
33
43
  constructor(message, stack) {
34
44
  super('runtime', message, { stack });
35
45
  this.name = 'RuntimeError';
36
46
  }
37
47
  }
48
+ /** Raised when a sandbox execution exceeds its configured timeout. */
38
49
  export class TimeoutError extends ExecutionError {
39
50
  constructor(timeoutMs) {
40
51
  super('timeout', `Execution timed out after ${timeoutMs}ms`);
41
52
  this.name = 'TimeoutError';
42
53
  }
43
54
  }
55
+ /** Raised when sandbox code attempts a disallowed operation (e.g. net access). */
44
56
  export class SecurityError extends ExecutionError {
45
57
  constructor(message) {
46
58
  super('security', message);
47
59
  this.name = 'SecurityError';
48
60
  }
49
61
  }
62
+ /** Raised when a backend MCP server fails to connect or respond. */
50
63
  export class ConnectionError extends ExecutionError {
51
64
  constructor(serverName, message) {
52
65
  super('connection', `Failed to connect to server '${serverName}': ${message}`);
53
66
  this.name = 'ConnectionError';
54
67
  }
55
68
  }
69
+ /** Raised when sandbox code calls a tool that does not exist on the target server. */
56
70
  export class ToolNotFoundError extends ExecutionError {
57
71
  constructor(serverName, toolName) {
58
72
  super('tool_not_found', `Tool '${toolName}' not found on server '${serverName}'`);
59
73
  this.name = 'ToolNotFoundError';
60
74
  }
61
75
  }
76
+ /** Raised when sandbox code references a server name not in the conductor config. */
62
77
  export class ServerNotFoundError extends ExecutionError {
63
78
  constructor(serverName) {
64
79
  super('server_not_found', `Server '${serverName}' not found`);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvB,IAAI,CAAY;IAChB,IAAI,CAAU;IACd,KAAK,CAAU;IAE/B,YAAY,IAAe,EAAE,OAAe,EAAE,OAA2C;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,YAAY,OAAe,EAAE,KAAc;QACzC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,YAAY,SAAiB;QAC3B,KAAK,CAAC,SAAS,EAAE,6BAA6B,SAAS,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,cAAc;IACjD,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,YAAY,EAAE,gCAAgC,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD,YAAY,UAAkB,EAAE,QAAgB;QAC9C,KAAK,CAAC,gBAAgB,EAAE,SAAS,QAAQ,0BAA0B,UAAU,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,YAAY,UAAkB;QAC5B,KAAK,CAAC,kBAAkB,EAAE,WAAW,UAAU,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/utils/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,qDAAqD;AACrD,MAAM,OAAO,cAAe,SAAQ,KAAK;IACvB,IAAI,CAAY;IAChB,IAAI,CAAU;IACd,KAAK,CAAU;IAE/B,YAAY,IAAe,EAAE,OAAe,EAAE,OAA2C;QACvF,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,OAAO,EAAE,IAAI,CAAC;QAC1B,IAAI,OAAO,EAAE,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,MAAM;QACJ,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CACF;AAED,2DAA2D;AAC3D,MAAM,OAAO,WAAY,SAAQ,cAAc;IAC7C,YAAY,OAAe,EAAE,IAAa;QACxC,KAAK,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC;IAC5B,CAAC;CACF;AAED,uEAAuE;AACvE,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,YAAY,OAAe,EAAE,KAAc;QACzC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,OAAO,YAAa,SAAQ,cAAc;IAC9C,YAAY,SAAiB;QAC3B,KAAK,CAAC,SAAS,EAAE,6BAA6B,SAAS,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,kFAAkF;AAClF,MAAM,OAAO,aAAc,SAAQ,cAAc;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED,oEAAoE;AACpE,MAAM,OAAO,eAAgB,SAAQ,cAAc;IACjD,YAAY,UAAkB,EAAE,OAAe;QAC7C,KAAK,CAAC,YAAY,EAAE,gCAAgC,UAAU,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,sFAAsF;AACtF,MAAM,OAAO,iBAAkB,SAAQ,cAAc;IACnD,YAAY,UAAkB,EAAE,QAAgB;QAC9C,KAAK,CAAC,gBAAgB,EAAE,SAAS,QAAQ,0BAA0B,UAAU,GAAG,CAAC,CAAC;QAClF,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED,qFAAqF;AACrF,MAAM,OAAO,mBAAoB,SAAQ,cAAc;IACrD,YAAY,UAAkB;QAC5B,KAAK,CAAC,kBAAkB,EAAE,WAAW,UAAU,aAAa,CAAC,CAAC;QAC9D,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
@@ -1,9 +1,14 @@
1
1
  /**
2
- * Utils module exports
2
+ * Shared utilities — structured logger, error hierarchy, helper functions,
3
+ * Deno permission builder, and token-bucket rate limiter.
4
+ * @module utils
3
5
  */
4
6
  export * from './logger.js';
5
7
  export * from './errors.js';
6
8
  export * from './helpers.js';
7
9
  export * from './permissions.js';
8
10
  export * from './rate-limiter.js';
11
+ export * from './env.js';
12
+ export * from './orphan-watch.js';
13
+ export * from './redact.js';
9
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
@@ -1,9 +1,14 @@
1
1
  /**
2
- * Utils module exports
2
+ * Shared utilities — structured logger, error hierarchy, helper functions,
3
+ * Deno permission builder, and token-bucket rate limiter.
4
+ * @module utils
3
5
  */
4
6
  export * from './logger.js';
5
7
  export * from './errors.js';
6
8
  export * from './helpers.js';
7
9
  export * from './permissions.js';
8
10
  export * from './rate-limiter.js';
11
+ export * from './env.js';
12
+ export * from './orphan-watch.js';
13
+ export * from './redact.js';
9
14
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC"}
@@ -1,5 +1,12 @@
1
1
  /**
2
- * Simple logger utility for MCP Executor
2
+ * Structured logger for MCP Conductor.
3
+ *
4
+ * All output goes to `stderr` so it does not interfere with the MCP protocol
5
+ * (which uses `stdout`). Messages are JSON-structured with ISO-8601 timestamps.
6
+ *
7
+ * Set `MCP_EXECUTOR_LOG_LEVEL` to `debug`, `info`, `warn`, or `error`.
8
+ *
9
+ * @module utils/logger
3
10
  */
4
11
  export type LogLevel = 'debug' | 'info' | 'warn' | 'error';
5
12
  export declare const logger: {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAsB3D,eAAO,MAAM,MAAM;oBACD,QAAQ,GAAG,IAAI;gBAInB,QAAQ;mBAIL,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;kBAM9C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;kBAM7C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;mBAM5C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAK7D,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAyB3D,eAAO,MAAM,MAAM;oBACD,QAAQ,GAAG,IAAI;gBAInB,QAAQ;mBAIL,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;kBAM9C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;kBAM7C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;mBAM5C,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;CAK7D,CAAC"}
@@ -1,6 +1,14 @@
1
1
  /**
2
- * Simple logger utility for MCP Executor
2
+ * Structured logger for MCP Conductor.
3
+ *
4
+ * All output goes to `stderr` so it does not interfere with the MCP protocol
5
+ * (which uses `stdout`). Messages are JSON-structured with ISO-8601 timestamps.
6
+ *
7
+ * Set `MCP_EXECUTOR_LOG_LEVEL` to `debug`, `info`, `warn`, or `error`.
8
+ *
9
+ * @module utils/logger
3
10
  */
11
+ import { redactSecrets } from './redact.js';
4
12
  const LOG_LEVELS = {
5
13
  debug: 0,
6
14
  info: 1,
@@ -15,7 +23,10 @@ function formatMessage(level, message, meta) {
15
23
  const timestamp = new Date().toISOString();
16
24
  const prefix = `[${timestamp}] [${level.toUpperCase()}]`;
17
25
  const metaStr = meta ? ` ${JSON.stringify(meta)}` : '';
18
- return `${prefix} ${message}${metaStr}`;
26
+ // Redact known-secret patterns in both the message and the serialised
27
+ // meta before writing. Defensive: callers shouldn't log secrets, but
28
+ // sandbox stdout/stderr can leak them through error strings.
29
+ return redactSecrets(`${prefix} ${message}${metaStr}`);
19
30
  }
20
31
  export const logger = {
21
32
  setLevel(level) {
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,IAAI,YAAY,GAAc,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAc,IAAI,MAAM,CAAC;AAE3F,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8B;IACrF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,OAAO,GAAG,MAAM,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC;AAC1C,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,CAAC,KAAe;QACtB,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAI5C,MAAM,UAAU,GAA6B;IAC3C,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;CACT,CAAC;AAEF,IAAI,YAAY,GAAc,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAc,IAAI,MAAM,CAAC;AAE3F,SAAS,SAAS,CAAC,KAAe;IAChC,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,KAAe,EAAE,OAAe,EAAE,IAA8B;IACrF,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,SAAS,MAAM,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC;IACzD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvD,sEAAsE;IACtE,qEAAqE;IACrE,6DAA6D;IAC7D,OAAO,aAAa,CAAC,GAAG,MAAM,IAAI,OAAO,GAAG,OAAO,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,QAAQ,CAAC,KAAe;QACtB,YAAY,GAAG,KAAK,CAAC;IACvB,CAAC;IAED,QAAQ;QACN,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,IAAI,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;CACF,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Orphan-process watchdog.
3
+ *
4
+ * Conductor is launched by Claude (or another MCP client) as a long-running
5
+ * stdio subprocess. If the client crashes or is force-killed, Conductor can
6
+ * stay alive — along with its Deno children — leaking memory and compute
7
+ * until an operator notices. On POSIX the orphaning is visible: the parent
8
+ * PID changes to 1 (init) once the original parent has reaped. We poll
9
+ * periodically and, when reparenting is detected, invoke a graceful
10
+ * shutdown so everything downstream (Deno, MCP hub, HTTP bridge, timers)
11
+ * stops cleanly.
12
+ *
13
+ * On Windows `process.ppid` is less reliable but we still compare against
14
+ * the startup value; any change is treated as an orphan signal.
15
+ */
16
+ import { logger } from './logger.js';
17
+ export interface OrphanWatch {
18
+ stop(): void;
19
+ }
20
+ export interface OrphanWatchOptions {
21
+ onOrphaned: () => void | Promise<void>;
22
+ intervalMs?: number;
23
+ /** Inject for tests. Defaults to `() => process.ppid`. */
24
+ getPpid?: () => number;
25
+ /** Called once orphaning is confirmed. */
26
+ logger?: Pick<typeof logger, 'warn'>;
27
+ }
28
+ /**
29
+ * Start watching. Returns a handle with stop() so callers can unhook the
30
+ * watcher during normal shutdown (prevents spurious orphan fires during
31
+ * SIGTERM cleanup).
32
+ */
33
+ export declare function startOrphanWatch(options: OrphanWatchOptions): OrphanWatch;
34
+ //# sourceMappingURL=orphan-watch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-watch.d.ts","sourceRoot":"","sources":["../../src/utils/orphan-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,MAAM,WAAW,WAAW;IAC1B,IAAI,IAAI,IAAI,CAAC;CACd;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,IAAI,CAAC,OAAO,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,WAAW,CAqCzE"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Orphan-process watchdog.
3
+ *
4
+ * Conductor is launched by Claude (or another MCP client) as a long-running
5
+ * stdio subprocess. If the client crashes or is force-killed, Conductor can
6
+ * stay alive — along with its Deno children — leaking memory and compute
7
+ * until an operator notices. On POSIX the orphaning is visible: the parent
8
+ * PID changes to 1 (init) once the original parent has reaped. We poll
9
+ * periodically and, when reparenting is detected, invoke a graceful
10
+ * shutdown so everything downstream (Deno, MCP hub, HTTP bridge, timers)
11
+ * stops cleanly.
12
+ *
13
+ * On Windows `process.ppid` is less reliable but we still compare against
14
+ * the startup value; any change is treated as an orphan signal.
15
+ */
16
+ import { logger } from './logger.js';
17
+ import { LIFECYCLE_TIMEOUTS } from '../config/defaults.js';
18
+ /**
19
+ * Start watching. Returns a handle with stop() so callers can unhook the
20
+ * watcher during normal shutdown (prevents spurious orphan fires during
21
+ * SIGTERM cleanup).
22
+ */
23
+ export function startOrphanWatch(options) {
24
+ const { onOrphaned, intervalMs = LIFECYCLE_TIMEOUTS.ORPHAN_CHECK_INTERVAL_MS, getPpid = () => process.ppid, logger: log = logger, } = options;
25
+ const initialPpid = getPpid();
26
+ let fired = false;
27
+ const timer = setInterval(() => {
28
+ if (fired)
29
+ return;
30
+ const current = getPpid();
31
+ // We treat *any* change from the startup ppid as orphaning. We do NOT
32
+ // also treat ppid===1 as orphaning unconditionally, because conductor
33
+ // is sometimes launched directly under PID 1 (systemd Type=simple,
34
+ // supervisord, container ENTRYPOINT) — in those environments the
35
+ // initial ppid is already 1 and the watchdog must not self-fire.
36
+ if (current !== initialPpid) {
37
+ fired = true;
38
+ log.warn('Parent process gone, triggering orphan shutdown', {
39
+ initialPpid,
40
+ currentPpid: current,
41
+ });
42
+ void Promise.resolve(onOrphaned()).catch((err) => {
43
+ log.warn('Orphan shutdown handler threw', { error: String(err) });
44
+ });
45
+ }
46
+ }, intervalMs);
47
+ timer.unref?.();
48
+ return {
49
+ stop() {
50
+ clearInterval(timer);
51
+ },
52
+ };
53
+ }
54
+ //# sourceMappingURL=orphan-watch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"orphan-watch.js","sourceRoot":"","sources":["../../src/utils/orphan-watch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAe3D;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAA2B;IAC1D,MAAM,EACJ,UAAU,EACV,UAAU,GAAG,kBAAkB,CAAC,wBAAwB,EACxD,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAC5B,MAAM,EAAE,GAAG,GAAG,MAAM,GACrB,GAAG,OAAO,CAAC;IAEZ,MAAM,WAAW,GAAG,OAAO,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;IAElB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,IAAI,KAAK;YAAE,OAAO;QAClB,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;QAC1B,sEAAsE;QACtE,sEAAsE;QACtE,mEAAmE;QACnE,iEAAiE;QACjE,iEAAiE;QACjE,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;YAC5B,KAAK,GAAG,IAAI,CAAC;YACb,GAAG,CAAC,IAAI,CAAC,iDAAiD,EAAE;gBAC1D,WAAW;gBACX,WAAW,EAAE,OAAO;aACrB,CAAC,CAAC;YACH,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;gBACxD,GAAG,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,EAAE,UAAU,CAAC,CAAC;IACf,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAEhB,OAAO;QACL,IAAI;YACF,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AASD;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;gBAEd,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAsBvD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAa5B;;OAEG;IACH,OAAO,IAAI,IAAI;IAgBf;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,OAAO;IAwCf;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAkBrB"}
1
+ {"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../../src/utils/rate-limiter.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAC;QAAC,eAAe,EAAE,MAAM,CAAA;KAAE,CAAC;IAChF,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IACnD,QAAQ,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAClD;AASD;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IAC3C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IAExC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,cAAc,CAA+B;IAGrD,OAAO,CAAC,aAAa,CAAK;IAC1B,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,aAAa,CAAK;gBAEd,MAAM,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM;IAsBvD;;;;OAIG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB9B;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAa5B;;OAEG;IACH,OAAO,IAAI,IAAI;IAgBf;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;IACH,OAAO,CAAC,OAAO;IAiDf;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAOxB;;OAEG;IACH,OAAO,CAAC,YAAY;CAkBrB"}
@@ -112,6 +112,12 @@ export class RateLimiter extends EventEmitter {
112
112
  * Enqueue a request to wait for a token
113
113
  */
114
114
  enqueue() {
115
+ // Reject if queue is full to prevent unbounded memory growth
116
+ if (this.queue.length >= 100) {
117
+ this.totalRejected++;
118
+ this.emit('rejected', { serverName: this.serverName, reason: 'queue full' });
119
+ return Promise.reject(new Error(`Rate limit queue full for ${this.serverName}: ${this.queue.length} pending`));
120
+ }
115
121
  return new Promise((resolve, reject) => {
116
122
  const queuePosition = this.queue.length + 1;
117
123
  const estimatedWaitMs = Math.ceil((queuePosition / this.requestsPerSecond) * 1000);