@darkiceinteractive/mcp-conductor 3.0.0-beta.1 → 3.1.0-rc.2

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 (67) hide show
  1. package/README.md +61 -307
  2. package/dist/bridge/http-server.d.ts +9 -0
  3. package/dist/bridge/http-server.d.ts.map +1 -1
  4. package/dist/bridge/http-server.js +32 -5
  5. package/dist/bridge/http-server.js.map +1 -1
  6. package/dist/cache/cache.d.ts +21 -0
  7. package/dist/cache/cache.d.ts.map +1 -1
  8. package/dist/cache/cache.js +44 -2
  9. package/dist/cache/cache.js.map +1 -1
  10. package/dist/cache/disk.d.ts.map +1 -1
  11. package/dist/cache/disk.js +36 -3
  12. package/dist/cache/disk.js.map +1 -1
  13. package/dist/cli/commands/import-servers.d.ts +12 -1
  14. package/dist/cli/commands/import-servers.d.ts.map +1 -1
  15. package/dist/cli/commands/import-servers.js +40 -3
  16. package/dist/cli/commands/import-servers.js.map +1 -1
  17. package/dist/config/defaults.d.ts.map +1 -1
  18. package/dist/config/defaults.js +1 -0
  19. package/dist/config/defaults.js.map +1 -1
  20. package/dist/config/schema.d.ts +7 -0
  21. package/dist/config/schema.d.ts.map +1 -1
  22. package/dist/daemon/client.d.ts +2 -0
  23. package/dist/daemon/client.d.ts.map +1 -1
  24. package/dist/daemon/client.js +30 -9
  25. package/dist/daemon/client.js.map +1 -1
  26. package/dist/daemon/server.d.ts +9 -0
  27. package/dist/daemon/server.d.ts.map +1 -1
  28. package/dist/daemon/server.js +109 -16
  29. package/dist/daemon/server.js.map +1 -1
  30. package/dist/metrics/index.d.ts +1 -1
  31. package/dist/metrics/index.d.ts.map +1 -1
  32. package/dist/metrics/index.js +1 -1
  33. package/dist/metrics/index.js.map +1 -1
  34. package/dist/metrics/metrics-collector.d.ts +120 -0
  35. package/dist/metrics/metrics-collector.d.ts.map +1 -1
  36. package/dist/metrics/metrics-collector.js +136 -0
  37. package/dist/metrics/metrics-collector.js.map +1 -1
  38. package/dist/runtime/executor.d.ts.map +1 -1
  39. package/dist/runtime/executor.js +45 -2
  40. package/dist/runtime/executor.js.map +1 -1
  41. package/dist/runtime/pool/recycle.d.ts +8 -2
  42. package/dist/runtime/pool/recycle.d.ts.map +1 -1
  43. package/dist/runtime/pool/recycle.js.map +1 -1
  44. package/dist/runtime/pool/worker-pool.d.ts.map +1 -1
  45. package/dist/runtime/pool/worker-pool.js +17 -10
  46. package/dist/runtime/pool/worker-pool.js.map +1 -1
  47. package/dist/runtime/pool/worker.d.ts +7 -1
  48. package/dist/runtime/pool/worker.d.ts.map +1 -1
  49. package/dist/runtime/pool/worker.js +9 -1
  50. package/dist/runtime/pool/worker.js.map +1 -1
  51. package/dist/server/mcp-server.d.ts +17 -3
  52. package/dist/server/mcp-server.d.ts.map +1 -1
  53. package/dist/server/mcp-server.js +133 -26
  54. package/dist/server/mcp-server.js.map +1 -1
  55. package/dist/server/passthrough-registrar.d.ts +55 -5
  56. package/dist/server/passthrough-registrar.d.ts.map +1 -1
  57. package/dist/server/passthrough-registrar.js +104 -15
  58. package/dist/server/passthrough-registrar.js.map +1 -1
  59. package/dist/utils/tokenize.d.ts +8 -0
  60. package/dist/utils/tokenize.d.ts.map +1 -1
  61. package/dist/utils/tokenize.js +8 -0
  62. package/dist/utils/tokenize.js.map +1 -1
  63. package/dist/version.d.ts +3 -3
  64. package/dist/version.d.ts.map +1 -1
  65. package/dist/version.js +3 -3
  66. package/dist/version.js.map +1 -1
  67. package/package.json +22 -3
@@ -55,6 +55,53 @@ export interface McpHubLike {
55
55
  * Format: `<server>__<tool>` (double underscore separator).
56
56
  */
57
57
  export declare function buildPassthroughToolName(server: string, tool: string): string;
58
+ /**
59
+ * Heuristic infer of MCP ToolAnnotations from a tool's name (HIGH-4 fix).
60
+ *
61
+ * MCP tool names overwhelmingly put verbs as prefixes (`delete_repository`,
62
+ * `read_file`, `list_issues`). The matcher is therefore prefix-based with a
63
+ * small suffix safety net for less-common name styles.
64
+ *
65
+ * Pattern groups (case-insensitive):
66
+ * - **destructive** verbs that mutate or remove state. Prefix:
67
+ * `delete_`, `remove_`, `create_`, `update_`, `send_`, `post_`, `put_`,
68
+ * `patch_`, `drop_`, `kill_`, `terminate_`, `revoke_`, `destroy_`,
69
+ * `set_`, `activate_`, `deactivate_`, `enable_`, `disable_`, `cancel_`.
70
+ * Suffix safety net: `_delete`, `_remove`, `_destroy`.
71
+ * → `{ readOnlyHint: false, destructiveHint: true, idempotentHint: false }`
72
+ * - **mutating but recoverable** verbs (write/save/upload):
73
+ * Prefix `save_`, `write_`, `upload_`; suffix `_save`, `_write`, `_upload`.
74
+ * → `{ readOnlyHint: false, destructiveHint: false, idempotentHint: false }`
75
+ * - **read-safe** (default): `get_`, `list_`, `search_`, `query_`, `read_`,
76
+ * `fetch_`, `find_`, `count_`, `check_`, plus everything that doesn't
77
+ * match the above.
78
+ * → `{ readOnlyHint: true, destructiveHint: false, idempotentHint: true }`
79
+ *
80
+ * `openWorldHint` defaults to `false` for all (passthrough tools are bounded
81
+ * by the upstream MCP server's tool surface).
82
+ *
83
+ * False negatives (a non-obvious destructive name marked safe) require an
84
+ * explicit upstream annotation; the deferred Phase-1 typegen extension will
85
+ * close that gap by carrying upstream annotations through `ToolDefinition`.
86
+ */
87
+ export declare function inferAnnotationsFromName(toolName: string): {
88
+ readOnlyHint: boolean;
89
+ destructiveHint: boolean;
90
+ idempotentHint: boolean;
91
+ openWorldHint: boolean;
92
+ };
93
+ /**
94
+ * Conductor built-in tool names that are always registered by
95
+ * `MCPExecutorServer.registerTools()`. Any passthrough tool whose composed
96
+ * name matches one of these entries will be skipped to prevent duplicate-
97
+ * registration errors at the SDK level (CODE-LOW-4).
98
+ *
99
+ * Keep this set in sync with the `this.server.registerTool(name, ...)` calls
100
+ * in `mcp-server.ts`. The check uses the raw composed name (`server__tool`
101
+ * form) so a plain backend tool named `brave_web_search` registered under any
102
+ * server would collide with the conductor built-in of the same name.
103
+ */
104
+ export declare const STATIC_TOOL_NAMES: ReadonlySet<string>;
58
105
  /**
59
106
  * Register all `routing: "passthrough"` tools from the registry as
60
107
  * first-class MCP tools on `mcpServer`.
@@ -64,10 +111,13 @@ export declare function buildPassthroughToolName(server: string, tool: string):
64
111
  * same server instance the SDK will throw a duplicate-name error, so callers
65
112
  * must ensure it runs only once per server lifecycle.
66
113
  *
67
- * @param registry Populated ToolRegistry (after `refresh()` has been called).
68
- * @param mcpServer The McpServer instance to register tools on.
69
- * @param mcpHub The MCPHub used to forward tool calls to backends.
70
- * @returns The number of passthrough tools registered.
114
+ * @param registry Populated ToolRegistry (after `refresh()` has been called).
115
+ * @param mcpServer The McpServer instance to register tools on.
116
+ * @param mcpHub The MCPHub used to forward tool calls to backends.
117
+ * @param excludeNames Additional composed names to skip beyond the built-in
118
+ * {@link STATIC_TOOL_NAMES} set (e.g. names already
119
+ * registered by a previous call).
120
+ * @returns The number of passthrough tools registered.
71
121
  */
72
- export declare function registerPassthroughTools(registry: ToolRegistry, mcpServer: McpServerLike, mcpHub: McpHubLike): number;
122
+ export declare function registerPassthroughTools(registry: ToolRegistry, mcpServer: McpServerLike, mcpHub: McpHubLike, excludeNames?: ReadonlySet<string>): number;
73
123
  //# sourceMappingURL=passthrough-registrar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-registrar.d.ts","sourceRoot":"","sources":["../../src/server/passthrough-registrar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE;YACZ,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;YACzB,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,EACD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QACpD,OAAO,EAAE,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C,CAAC,GACD,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAWD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,UAAU,GACjB,MAAM,CA8ER"}
1
+ {"version":3,"file":"passthrough-registrar.d.ts","sourceRoot":"","sources":["../../src/server/passthrough-registrar.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,CACV,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE;QACN,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,WAAW,CAAC,EAAE;YACZ,YAAY,CAAC,EAAE,OAAO,CAAC;YACvB,eAAe,CAAC,EAAE,OAAO,CAAC;YAC1B,cAAc,CAAC,EAAE,OAAO,CAAC;YACzB,aAAa,CAAC,EAAE,OAAO,CAAC;SACzB,CAAC;QACF,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,EACD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC;QACpD,OAAO,EAAE,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAC1C,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAC7C,CAAC,GACD,IAAI,CAAC;CACT;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,QAAQ,CACN,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAWD;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7E;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAC1D,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACxB,CAoBA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAyBhD,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,SAAS,EAAE,aAAa,EACxB,MAAM,EAAE,UAAU,EAClB,YAAY,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,GACjC,MAAM,CAqFR"}
@@ -36,6 +36,89 @@ function sanitiseSegment(segment) {
36
36
  export function buildPassthroughToolName(server, tool) {
37
37
  return `${sanitiseSegment(server)}__${sanitiseSegment(tool)}`;
38
38
  }
39
+ /**
40
+ * Heuristic infer of MCP ToolAnnotations from a tool's name (HIGH-4 fix).
41
+ *
42
+ * MCP tool names overwhelmingly put verbs as prefixes (`delete_repository`,
43
+ * `read_file`, `list_issues`). The matcher is therefore prefix-based with a
44
+ * small suffix safety net for less-common name styles.
45
+ *
46
+ * Pattern groups (case-insensitive):
47
+ * - **destructive** verbs that mutate or remove state. Prefix:
48
+ * `delete_`, `remove_`, `create_`, `update_`, `send_`, `post_`, `put_`,
49
+ * `patch_`, `drop_`, `kill_`, `terminate_`, `revoke_`, `destroy_`,
50
+ * `set_`, `activate_`, `deactivate_`, `enable_`, `disable_`, `cancel_`.
51
+ * Suffix safety net: `_delete`, `_remove`, `_destroy`.
52
+ * → `{ readOnlyHint: false, destructiveHint: true, idempotentHint: false }`
53
+ * - **mutating but recoverable** verbs (write/save/upload):
54
+ * Prefix `save_`, `write_`, `upload_`; suffix `_save`, `_write`, `_upload`.
55
+ * → `{ readOnlyHint: false, destructiveHint: false, idempotentHint: false }`
56
+ * - **read-safe** (default): `get_`, `list_`, `search_`, `query_`, `read_`,
57
+ * `fetch_`, `find_`, `count_`, `check_`, plus everything that doesn't
58
+ * match the above.
59
+ * → `{ readOnlyHint: true, destructiveHint: false, idempotentHint: true }`
60
+ *
61
+ * `openWorldHint` defaults to `false` for all (passthrough tools are bounded
62
+ * by the upstream MCP server's tool surface).
63
+ *
64
+ * False negatives (a non-obvious destructive name marked safe) require an
65
+ * explicit upstream annotation; the deferred Phase-1 typegen extension will
66
+ * close that gap by carrying upstream annotations through `ToolDefinition`.
67
+ */
68
+ export function inferAnnotationsFromName(toolName) {
69
+ const name = toolName.toLowerCase();
70
+ // Destructive: mutate or remove
71
+ const destructivePrefix = /^(delete_|remove_|create_|update_|send_|post_|put_|patch_|drop_|kill_|terminate_|revoke_|destroy_|set_|activate_|deactivate_|enable_|disable_|cancel_)/;
72
+ const destructiveSuffix = /(_delete|_remove|_destroy)$/;
73
+ if (destructivePrefix.test(name) || destructiveSuffix.test(name)) {
74
+ return { readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false };
75
+ }
76
+ // Mutating but not destructive
77
+ const mutatingPrefix = /^(save_|write_|upload_)/;
78
+ const mutatingSuffix = /(_save|_write|_upload)$/;
79
+ if (mutatingPrefix.test(name) || mutatingSuffix.test(name)) {
80
+ return { readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false };
81
+ }
82
+ // Default: read-safe
83
+ return { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false };
84
+ }
85
+ /**
86
+ * Conductor built-in tool names that are always registered by
87
+ * `MCPExecutorServer.registerTools()`. Any passthrough tool whose composed
88
+ * name matches one of these entries will be skipped to prevent duplicate-
89
+ * registration errors at the SDK level (CODE-LOW-4).
90
+ *
91
+ * Keep this set in sync with the `this.server.registerTool(name, ...)` calls
92
+ * in `mcp-server.ts`. The check uses the raw composed name (`server__tool`
93
+ * form) so a plain backend tool named `brave_web_search` registered under any
94
+ * server would collide with the conductor built-in of the same name.
95
+ */
96
+ export const STATIC_TOOL_NAMES = new Set([
97
+ 'execute_code',
98
+ 'list_servers',
99
+ 'discover_tools',
100
+ 'get_metrics',
101
+ 'set_mode',
102
+ 'reload_servers',
103
+ 'get_capabilities',
104
+ 'compare_modes',
105
+ 'passthrough_call',
106
+ 'brave_web_search',
107
+ 'add_server',
108
+ 'remove_server',
109
+ 'update_server',
110
+ 'get_memory_stats',
111
+ 'predict_cost',
112
+ 'get_hot_paths',
113
+ 'record_session',
114
+ 'stop_recording',
115
+ 'replay_session',
116
+ 'import_servers_from_claude',
117
+ 'test_server',
118
+ 'diagnose_server',
119
+ 'recommend_routing',
120
+ 'export_to_claude',
121
+ ]);
39
122
  /**
40
123
  * Register all `routing: "passthrough"` tools from the registry as
41
124
  * first-class MCP tools on `mcpServer`.
@@ -45,12 +128,15 @@ export function buildPassthroughToolName(server, tool) {
45
128
  * same server instance the SDK will throw a duplicate-name error, so callers
46
129
  * must ensure it runs only once per server lifecycle.
47
130
  *
48
- * @param registry Populated ToolRegistry (after `refresh()` has been called).
49
- * @param mcpServer The McpServer instance to register tools on.
50
- * @param mcpHub The MCPHub used to forward tool calls to backends.
51
- * @returns The number of passthrough tools registered.
131
+ * @param registry Populated ToolRegistry (after `refresh()` has been called).
132
+ * @param mcpServer The McpServer instance to register tools on.
133
+ * @param mcpHub The MCPHub used to forward tool calls to backends.
134
+ * @param excludeNames Additional composed names to skip beyond the built-in
135
+ * {@link STATIC_TOOL_NAMES} set (e.g. names already
136
+ * registered by a previous call).
137
+ * @returns The number of passthrough tools registered.
52
138
  */
53
- export function registerPassthroughTools(registry, mcpServer, mcpHub) {
139
+ export function registerPassthroughTools(registry, mcpServer, mcpHub, excludeNames) {
54
140
  const tools = registry.getAllTools();
55
141
  let registered = 0;
56
142
  for (const tool of tools) {
@@ -58,6 +144,11 @@ export function registerPassthroughTools(registry, mcpServer, mcpHub) {
58
144
  continue;
59
145
  }
60
146
  const composedName = buildPassthroughToolName(tool.server, tool.name);
147
+ // Skip names that collide with conductor built-ins or caller exclusions (CODE-LOW-4).
148
+ if (STATIC_TOOL_NAMES.has(composedName) || excludeNames?.has(composedName)) {
149
+ logger.warn(`Passthrough registrar: skipping '${composedName}' — name conflicts with a statically-registered tool`, { server: tool.server, tool: tool.name });
150
+ continue;
151
+ }
61
152
  // Build an inputSchema for the SDK from the tool's JSON Schema properties.
62
153
  // Each property is typed as z.unknown() (required) or z.unknown().optional()
63
154
  // so the SDK validates presence of required fields while accepting any value.
@@ -71,16 +162,14 @@ export function registerPassthroughTools(registry, mcpServer, mcpHub) {
71
162
  : z.unknown().optional();
72
163
  }
73
164
  }
74
- // Apply conservative read-safe annotations.
75
- // The registry does not yet carry upstream MCP ToolAnnotations (that is
76
- // Phase 1 typegen territory). When Agent A's typegen lands and adds those
77
- // fields to ToolDefinition, extend this block to read them directly.
78
- const annotations = {
79
- readOnlyHint: true,
80
- destructiveHint: false,
81
- idempotentHint: true,
82
- openWorldHint: false,
83
- };
165
+ // Derive annotations from tool name pattern (HIGH-4 safety fix).
166
+ // The registry does not yet carry upstream MCP ToolAnnotations (deferred to
167
+ // a Phase 1 typegen extension), so name-pattern heuristics are the conservative
168
+ // middle ground: destructive-looking names are flagged so Claude can reason
169
+ // about safety. False negatives (a non-obvious destructive name registered as
170
+ // safe) require an explicit upstream annotation; the deferred typegen will
171
+ // close that gap.
172
+ const annotations = inferAnnotationsFromName(tool.name);
84
173
  // Capture loop variables for the async handler closure.
85
174
  const toolServer = tool.server;
86
175
  const toolName = tool.name;
@@ -1 +1 @@
1
- {"version":3,"file":"passthrough-registrar.js","sourceRoot":"","sources":["../../src/server/passthrough-registrar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passthrough-registrar.js","sourceRoot":"","sources":["../../src/server/passthrough-registrar.ts"],"names":[],"mappings":"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"}
@@ -39,6 +39,14 @@ export interface TokenizeResult {
39
39
  * - If the same literal appears twice it receives the same token
40
40
  * (idempotent within one call).
41
41
  *
42
+ * **Token stability — IMPORTANT (B12):** Tokens are scoped to a single call
43
+ * and are NOT stable across calls. `[EMAIL_1]` produced in call A may refer
44
+ * to a completely different email address than `[EMAIL_1]` produced in call B,
45
+ * because the per-label counter resets on every invocation and matching order
46
+ * can differ. Never store, compare, or cache tokens across `execute_code`
47
+ * invocations. Use the `reverseMap` returned from the same call to detokenize
48
+ * within that call only.
49
+ *
42
50
  * @param value The data returned by an MCP tool.
43
51
  * @param matchers Array of built-in matcher names (e.g. `['email','phone']`).
44
52
  * Unknown names are silently ignored (future-proof for inline-regex extension).
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../src/utils/tokenize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,OAAO,GACP,KAAK,GACL,aAAa,GACb,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAwIxD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GACrC,cAAc,CA+DhB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC3C,MAAM,GAAG,SAAS,CAEpB"}
1
+ {"version":3,"file":"tokenize.d.ts","sourceRoot":"","sources":["../../src/utils/tokenize.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP,OAAO,GACP,KAAK,GACL,aAAa,GACb,MAAM,GACN,MAAM,GACN,MAAM,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,kBAAkB,GAAG,MAAM,CAAC;AAwIxD,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,QAAQ,EAAE,OAAO,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,CAAC,aAAa,CAAC,GACrC,cAAc,CA+DhB;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CACxB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC3C,MAAM,GAAG,SAAS,CAEpB"}
@@ -129,6 +129,14 @@ const BUILTIN_MATCHERS = {
129
129
  * - If the same literal appears twice it receives the same token
130
130
  * (idempotent within one call).
131
131
  *
132
+ * **Token stability — IMPORTANT (B12):** Tokens are scoped to a single call
133
+ * and are NOT stable across calls. `[EMAIL_1]` produced in call A may refer
134
+ * to a completely different email address than `[EMAIL_1]` produced in call B,
135
+ * because the per-label counter resets on every invocation and matching order
136
+ * can differ. Never store, compare, or cache tokens across `execute_code`
137
+ * invocations. Use the `reverseMap` returned from the same call to detokenize
138
+ * within that call only.
139
+ *
132
140
  * @param value The data returned by an MCP tool.
133
141
  * @param matchers Array of built-in matcher names (e.g. `['email','phone']`).
134
142
  * Unknown names are silently ignored (future-proof for inline-regex extension).
@@ -1 +1 @@
1
- {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../src/utils/tokenize.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tokenize.js","sourceRoot":"","sources":["../../src/utils/tokenize.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export declare const VERSION = "3.0.0-beta.1";
2
- export declare const BUILD_NUMBER = 4;
3
- export declare const BUILD_STRING = "3.0.0-beta.1 (build 4)";
1
+ export declare const VERSION = "3.1.0-rc.2";
2
+ export declare const BUILD_NUMBER = 7;
3
+ export declare const BUILD_STRING = "3.1.0-rc.2 (build 7)";
4
4
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,iBAAiB,CAAC;AACtC,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,2BAA2B,CAAC"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,eAAe,CAAC;AACpC,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,YAAY,yBAAyB,CAAC"}
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- export const VERSION = '3.0.0-beta.1';
2
- export const BUILD_NUMBER = 4;
3
- export const BUILD_STRING = '3.0.0-beta.1 (build 4)';
1
+ export const VERSION = '3.1.0-rc.2';
2
+ export const BUILD_NUMBER = 7;
3
+ export const BUILD_STRING = '3.1.0-rc.2 (build 7)';
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,cAAc,CAAC;AACtC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,wBAAwB,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAC;AACpC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,YAAY,GAAG,sBAAsB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@darkiceinteractive/mcp-conductor",
3
- "version": "3.0.0-beta.1",
3
+ "version": "3.1.0-rc.2",
4
4
  "description": "MCP server that orchestrates code execution in a sandboxed Deno environment with access to all MCP servers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -29,11 +29,23 @@
29
29
  "test:coverage": "vitest run --coverage",
30
30
  "test:all": "vitest run",
31
31
  "benchmark:scale": "tsx scripts/run-benchmarks.ts",
32
+ "build:articles": "tsx scripts/build-articles.ts",
33
+ "build:articles:watch": "tsx watch scripts/build-articles.ts",
32
34
  "lint": "eslint src --ext .ts",
33
35
  "lint:fix": "eslint src --ext .ts --fix",
34
36
  "format": "prettier --write \"src/**/*.ts\"",
35
37
  "clean": "rm -rf dist",
36
- "prepublishOnly": "npm run build"
38
+ "prepublishOnly": "npm run build",
39
+ "test:perf": "vitest run test/perf",
40
+ "test:perf:bench": "vitest bench test/perf",
41
+ "test:coverage:check": "vitest run --coverage",
42
+ "test:popular-mcps": "vitest run test/popular-mcps",
43
+ "test:memory-leak": "vitest run test/memory-leak",
44
+ "test:security": "vitest run test/security",
45
+ "record:fixtures": "tsx scripts/record-fixtures.ts",
46
+ "benchmark:token-savings": "vitest run test/popular-mcps/token-savings",
47
+ "test:stress": "vitest run --config vitest.stress.config.ts",
48
+ "test:stress:full": "STRESS=1 vitest run --config vitest.stress.config.ts"
37
49
  },
38
50
  "keywords": [
39
51
  "mcp",
@@ -60,7 +72,7 @@
60
72
  }
61
73
  },
62
74
  "engines": {
63
- "node": ">=18.0.0"
75
+ "node": ">=20.0.0"
64
76
  },
65
77
  "dependencies": {
66
78
  "@inquirer/prompts": "^7.10.1",
@@ -81,6 +93,7 @@
81
93
  "zod": "^3.23.8"
82
94
  },
83
95
  "devDependencies": {
96
+ "@mermaid-js/mermaid-cli": "^11.14.0",
84
97
  "@types/node": "^22.10.2",
85
98
  "@types/uuid": "^10.0.0",
86
99
  "@typescript-eslint/eslint-plugin": "^8.18.0",
@@ -88,8 +101,14 @@
88
101
  "@vitest/coverage-v8": "^2.1.8",
89
102
  "eslint": "^9.17.0",
90
103
  "prettier": "^3.4.2",
104
+ "rehype-stringify": "^10.0.1",
105
+ "remark-parse": "^11.0.0",
106
+ "remark-rehype": "^11.1.2",
107
+ "remark-stringify": "^11.0.0",
108
+ "sharp": "^0.33.5",
91
109
  "tsx": "^4.19.2",
92
110
  "typescript": "^5.7.2",
111
+ "unified": "^11.0.5",
93
112
  "vitest": "^2.1.8"
94
113
  }
95
114
  }