@darkiceinteractive/mcp-conductor 2.0.0-alpha.1 → 3.0.0-beta.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.
- package/README.md +35 -5
- package/dist/bin/cli.d.ts +20 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +260 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/bridge/http-server.d.ts +26 -0
- package/dist/bridge/http-server.d.ts.map +1 -1
- package/dist/bridge/http-server.js +30 -2
- package/dist/bridge/http-server.js.map +1 -1
- package/dist/bridge/index.d.ts +1 -0
- package/dist/bridge/index.d.ts.map +1 -1
- package/dist/bridge/index.js +1 -0
- package/dist/bridge/index.js.map +1 -1
- package/dist/bridge/pool.d.ts +95 -0
- package/dist/bridge/pool.d.ts.map +1 -0
- package/dist/bridge/pool.js +384 -0
- package/dist/bridge/pool.js.map +1 -0
- package/dist/cache/cache.d.ts +43 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +167 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/delta.d.ts +32 -0
- package/dist/cache/delta.d.ts.map +1 -0
- package/dist/cache/delta.js +131 -0
- package/dist/cache/delta.js.map +1 -0
- package/dist/cache/disk.d.ts +65 -0
- package/dist/cache/disk.d.ts.map +1 -0
- package/dist/cache/disk.js +238 -0
- package/dist/cache/disk.js.map +1 -0
- package/dist/cache/index.d.ts +53 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +12 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/key.d.ts +44 -0
- package/dist/cache/key.d.ts.map +1 -0
- package/dist/cache/key.js +83 -0
- package/dist/cache/key.js.map +1 -0
- package/dist/cache/lru.d.ts +57 -0
- package/dist/cache/lru.d.ts.map +1 -0
- package/dist/cache/lru.js +112 -0
- package/dist/cache/lru.js.map +1 -0
- package/dist/cache/policy.d.ts +34 -0
- package/dist/cache/policy.d.ts.map +1 -0
- package/dist/cache/policy.js +95 -0
- package/dist/cache/policy.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +33 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +135 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/export-servers.d.ts +22 -0
- package/dist/cli/commands/export-servers.d.ts.map +1 -0
- package/dist/cli/commands/export-servers.js +45 -0
- package/dist/cli/commands/export-servers.js.map +1 -0
- package/dist/cli/commands/import-servers.d.ts +57 -0
- package/dist/cli/commands/import-servers.d.ts.map +1 -0
- package/dist/cli/commands/import-servers.js +137 -0
- package/dist/cli/commands/import-servers.js.map +1 -0
- package/dist/cli/commands/routing.d.ts +34 -0
- package/dist/cli/commands/routing.d.ts.map +1 -0
- package/dist/cli/commands/routing.js +60 -0
- package/dist/cli/commands/routing.js.map +1 -0
- package/dist/cli/commands/test-server.d.ts +34 -0
- package/dist/cli/commands/test-server.d.ts.map +1 -0
- package/dist/cli/commands/test-server.js +86 -0
- package/dist/cli/commands/test-server.js.map +1 -0
- package/dist/cli/daemon.d.ts +60 -0
- package/dist/cli/daemon.d.ts.map +1 -0
- package/dist/cli/daemon.js +244 -0
- package/dist/cli/daemon.js.map +1 -0
- package/dist/cli/replay.d.ts +16 -0
- package/dist/cli/replay.d.ts.map +1 -0
- package/dist/cli/replay.js +89 -0
- package/dist/cli/replay.js.map +1 -0
- package/dist/cli/wizard/setup.d.ts +12 -0
- package/dist/cli/wizard/setup.d.ts.map +1 -0
- package/dist/cli/wizard/setup.js +71 -0
- package/dist/cli/wizard/setup.js.map +1 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +4 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/schema.d.ts +34 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/daemon/client.d.ts +97 -0
- package/dist/daemon/client.d.ts.map +1 -0
- package/dist/daemon/client.js +279 -0
- package/dist/daemon/client.js.map +1 -0
- package/dist/daemon/discovery.d.ts +50 -0
- package/dist/daemon/discovery.d.ts.map +1 -0
- package/dist/daemon/discovery.js +104 -0
- package/dist/daemon/discovery.js.map +1 -0
- package/dist/daemon/index.d.ts +16 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +11 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/sandbox-api.d.ts +45 -0
- package/dist/daemon/sandbox-api.d.ts.map +1 -0
- package/dist/daemon/sandbox-api.js +74 -0
- package/dist/daemon/sandbox-api.js.map +1 -0
- package/dist/daemon/server.d.ts +65 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +351 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/shared-kv.d.ts +81 -0
- package/dist/daemon/shared-kv.d.ts.map +1 -0
- package/dist/daemon/shared-kv.js +215 -0
- package/dist/daemon/shared-kv.js.map +1 -0
- package/dist/daemon/shared-lock.d.ts +71 -0
- package/dist/daemon/shared-lock.d.ts.map +1 -0
- package/dist/daemon/shared-lock.js +119 -0
- package/dist/daemon/shared-lock.js.map +1 -0
- package/dist/hub/mcp-hub.d.ts +23 -0
- package/dist/hub/mcp-hub.d.ts.map +1 -1
- package/dist/hub/mcp-hub.js +34 -1
- package/dist/hub/mcp-hub.js.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/observability/anomaly.d.ts +67 -0
- package/dist/observability/anomaly.d.ts.map +1 -0
- package/dist/observability/anomaly.js +141 -0
- package/dist/observability/anomaly.js.map +1 -0
- package/dist/observability/cost-predictor.d.ts +49 -0
- package/dist/observability/cost-predictor.d.ts.map +1 -0
- package/dist/observability/cost-predictor.js +145 -0
- package/dist/observability/cost-predictor.js.map +1 -0
- package/dist/observability/hot-path.d.ts +49 -0
- package/dist/observability/hot-path.d.ts.map +1 -0
- package/dist/observability/hot-path.js +125 -0
- package/dist/observability/hot-path.js.map +1 -0
- package/dist/observability/index.d.ts +10 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +10 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/replay.d.ts +104 -0
- package/dist/observability/replay.d.ts.map +1 -0
- package/dist/observability/replay.js +239 -0
- package/dist/observability/replay.js.map +1 -0
- package/dist/registry/built-in-recommendations.d.ts +54 -0
- package/dist/registry/built-in-recommendations.d.ts.map +1 -0
- package/dist/registry/built-in-recommendations.js +65 -0
- package/dist/registry/built-in-recommendations.js.map +1 -0
- package/dist/registry/events.d.ts +26 -0
- package/dist/registry/events.d.ts.map +1 -0
- package/dist/registry/events.js +22 -0
- package/dist/registry/events.js.map +1 -0
- package/dist/registry/index.d.ts +159 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +12 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/registry.d.ts +87 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +294 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/registry/snapshot.d.ts +42 -0
- package/dist/registry/snapshot.d.ts.map +1 -0
- package/dist/registry/snapshot.js +71 -0
- package/dist/registry/snapshot.js.map +1 -0
- package/dist/registry/typegen.d.ts +48 -0
- package/dist/registry/typegen.d.ts.map +1 -0
- package/dist/registry/typegen.js +200 -0
- package/dist/registry/typegen.js.map +1 -0
- package/dist/registry/validator.d.ts +23 -0
- package/dist/registry/validator.d.ts.map +1 -0
- package/dist/registry/validator.js +50 -0
- package/dist/registry/validator.js.map +1 -0
- package/dist/reliability/breaker.d.ts +57 -0
- package/dist/reliability/breaker.d.ts.map +1 -0
- package/dist/reliability/breaker.js +130 -0
- package/dist/reliability/breaker.js.map +1 -0
- package/dist/reliability/errors.d.ts +78 -0
- package/dist/reliability/errors.d.ts.map +1 -0
- package/dist/reliability/errors.js +160 -0
- package/dist/reliability/errors.js.map +1 -0
- package/dist/reliability/gateway.d.ts +88 -0
- package/dist/reliability/gateway.d.ts.map +1 -0
- package/dist/reliability/gateway.js +180 -0
- package/dist/reliability/gateway.js.map +1 -0
- package/dist/reliability/index.d.ts +20 -0
- package/dist/reliability/index.d.ts.map +1 -0
- package/dist/reliability/index.js +16 -0
- package/dist/reliability/index.js.map +1 -0
- package/dist/reliability/profile.d.ts +49 -0
- package/dist/reliability/profile.d.ts.map +1 -0
- package/dist/reliability/profile.js +58 -0
- package/dist/reliability/profile.js.map +1 -0
- package/dist/reliability/retry.d.ts +39 -0
- package/dist/reliability/retry.d.ts.map +1 -0
- package/dist/reliability/retry.js +51 -0
- package/dist/reliability/retry.js.map +1 -0
- package/dist/reliability/timeout.d.ts +34 -0
- package/dist/reliability/timeout.d.ts.map +1 -0
- package/dist/reliability/timeout.js +53 -0
- package/dist/reliability/timeout.js.map +1 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +78 -13
- package/dist/runtime/executor.js.map +1 -1
- package/dist/runtime/findtool/embed.d.ts +28 -0
- package/dist/runtime/findtool/embed.d.ts.map +1 -0
- package/dist/runtime/findtool/embed.js +85 -0
- package/dist/runtime/findtool/embed.js.map +1 -0
- package/dist/runtime/findtool/index.d.ts +52 -0
- package/dist/runtime/findtool/index.d.ts.map +1 -0
- package/dist/runtime/findtool/index.js +78 -0
- package/dist/runtime/findtool/index.js.map +1 -0
- package/dist/runtime/findtool/vector-index.d.ts +53 -0
- package/dist/runtime/findtool/vector-index.d.ts.map +1 -0
- package/dist/runtime/findtool/vector-index.js +71 -0
- package/dist/runtime/findtool/vector-index.js.map +1 -0
- package/dist/runtime/helpers/budget.d.ts +27 -0
- package/dist/runtime/helpers/budget.d.ts.map +1 -0
- package/dist/runtime/helpers/budget.js +103 -0
- package/dist/runtime/helpers/budget.js.map +1 -0
- package/dist/runtime/helpers/compact.d.ts +32 -0
- package/dist/runtime/helpers/compact.d.ts.map +1 -0
- package/dist/runtime/helpers/compact.js +93 -0
- package/dist/runtime/helpers/compact.js.map +1 -0
- package/dist/runtime/helpers/delta.d.ts +45 -0
- package/dist/runtime/helpers/delta.d.ts.map +1 -0
- package/dist/runtime/helpers/delta.js +116 -0
- package/dist/runtime/helpers/delta.js.map +1 -0
- package/dist/runtime/helpers/index.d.ts +16 -0
- package/dist/runtime/helpers/index.d.ts.map +1 -0
- package/dist/runtime/helpers/index.js +13 -0
- package/dist/runtime/helpers/index.js.map +1 -0
- package/dist/runtime/helpers/summarize.d.ts +24 -0
- package/dist/runtime/helpers/summarize.d.ts.map +1 -0
- package/dist/runtime/helpers/summarize.js +124 -0
- package/dist/runtime/helpers/summarize.js.map +1 -0
- package/dist/runtime/helpers/worker-preload.d.ts +25 -0
- package/dist/runtime/helpers/worker-preload.d.ts.map +1 -0
- package/dist/runtime/helpers/worker-preload.js +223 -0
- package/dist/runtime/helpers/worker-preload.js.map +1 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/pool/index.d.ts +11 -0
- package/dist/runtime/pool/index.d.ts.map +1 -0
- package/dist/runtime/pool/index.js +8 -0
- package/dist/runtime/pool/index.js.map +1 -0
- package/dist/runtime/pool/recycle.d.ts +44 -0
- package/dist/runtime/pool/recycle.d.ts.map +1 -0
- package/dist/runtime/pool/recycle.js +50 -0
- package/dist/runtime/pool/recycle.js.map +1 -0
- package/dist/runtime/pool/worker-pool.d.ts +77 -0
- package/dist/runtime/pool/worker-pool.d.ts.map +1 -0
- package/dist/runtime/pool/worker-pool.js +216 -0
- package/dist/runtime/pool/worker-pool.js.map +1 -0
- package/dist/runtime/pool/worker.d.ts +80 -0
- package/dist/runtime/pool/worker.d.ts.map +1 -0
- package/dist/runtime/pool/worker.js +324 -0
- package/dist/runtime/pool/worker.js.map +1 -0
- package/dist/server/mcp-server.d.ts +1 -0
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +423 -2
- package/dist/server/mcp-server.js.map +1 -1
- package/dist/server/passthrough-registrar.d.ts +73 -0
- package/dist/server/passthrough-registrar.d.ts.map +1 -0
- package/dist/server/passthrough-registrar.js +110 -0
- package/dist/server/passthrough-registrar.js.map +1 -0
- package/dist/skills/skills-engine.d.ts +9 -1
- package/dist/skills/skills-engine.d.ts.map +1 -1
- package/dist/skills/skills-engine.js +20 -3
- package/dist/skills/skills-engine.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/tokenize.d.ts +55 -0
- package/dist/utils/tokenize.d.ts.map +1 -0
- package/dist/utils/tokenize.js +205 -0
- package/dist/utils/tokenize.js.map +1 -0
- package/dist/version.d.ts +3 -3
- package/dist/version.d.ts.map +1 -1
- package/dist/version.js +3 -3
- package/dist/version.js.map +1 -1
- package/package.json +12 -2
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Tokenization — Workstream X4 (Agent J)
|
|
3
|
+
*
|
|
4
|
+
* Strips sensitive values from MCP tool responses *before* they enter
|
|
5
|
+
* the Deno sandbox or Claude's context. Each detected value is replaced
|
|
6
|
+
* with a stable token (e.g. `[EMAIL_1]`). A per-execution reverse map
|
|
7
|
+
* lets sandbox code call `mcp.detokenize(token)` to recover the original
|
|
8
|
+
* value for outbound MCP calls.
|
|
9
|
+
*
|
|
10
|
+
* Design:
|
|
11
|
+
* - Built-in matchers only this sprint (email, phone, SSN, CC/Luhn,
|
|
12
|
+
* IBAN, IPv4/v6). Inline-regex matchers are deferred to the follow-up.
|
|
13
|
+
* - The reverse map is passed to `generateSandboxCode` and embedded in
|
|
14
|
+
* the sandbox preamble as a frozen object. It is NOT persisted and
|
|
15
|
+
* cannot outlive the `execute_code` call that created it.
|
|
16
|
+
* - Tokenization is deterministic within a call: the same value always
|
|
17
|
+
* gets the same token (idempotent within one tokenize() invocation via
|
|
18
|
+
* the `seen` map).
|
|
19
|
+
*
|
|
20
|
+
* @module utils/tokenize
|
|
21
|
+
*/
|
|
22
|
+
export type BuiltinMatcherName = 'email' | 'phone' | 'ssn' | 'credit_card' | 'iban' | 'ipv4' | 'ipv6';
|
|
23
|
+
export type RedactMatcher = BuiltinMatcherName | string;
|
|
24
|
+
export interface TokenizeResult {
|
|
25
|
+
/** The redacted value (tokens replace original sensitive data) */
|
|
26
|
+
redacted: unknown;
|
|
27
|
+
/**
|
|
28
|
+
* Reverse map from token → original value.
|
|
29
|
+
* Scoped to one `execute_code` call; never persisted.
|
|
30
|
+
*/
|
|
31
|
+
reverseMap: Record<string, string>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Tokenize PII in `value` according to the requested `matchers`.
|
|
35
|
+
*
|
|
36
|
+
* - Walks nested objects and arrays recursively.
|
|
37
|
+
* - String values are scanned for all active matchers.
|
|
38
|
+
* - Object keys are NOT tokenized (only values).
|
|
39
|
+
* - If the same literal appears twice it receives the same token
|
|
40
|
+
* (idempotent within one call).
|
|
41
|
+
*
|
|
42
|
+
* @param value The data returned by an MCP tool.
|
|
43
|
+
* @param matchers Array of built-in matcher names (e.g. `['email','phone']`).
|
|
44
|
+
* Unknown names are silently ignored (future-proof for inline-regex extension).
|
|
45
|
+
* @returns `{ redacted, reverseMap }` where `reverseMap[token] = original`.
|
|
46
|
+
*/
|
|
47
|
+
export declare function tokenize(value: unknown, matchers: ReadonlyArray<RedactMatcher>): TokenizeResult;
|
|
48
|
+
/**
|
|
49
|
+
* Given a reverse map and a token string, return the original value.
|
|
50
|
+
* Returns `undefined` if the token is not in the map.
|
|
51
|
+
*
|
|
52
|
+
* Used in the sandbox preamble to implement `mcp.detokenize(token)`.
|
|
53
|
+
*/
|
|
54
|
+
export declare function detokenize(token: string, reverseMap: Readonly<Record<string, string>>): string | undefined;
|
|
55
|
+
//# sourceMappingURL=tokenize.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PII Tokenization — Workstream X4 (Agent J)
|
|
3
|
+
*
|
|
4
|
+
* Strips sensitive values from MCP tool responses *before* they enter
|
|
5
|
+
* the Deno sandbox or Claude's context. Each detected value is replaced
|
|
6
|
+
* with a stable token (e.g. `[EMAIL_1]`). A per-execution reverse map
|
|
7
|
+
* lets sandbox code call `mcp.detokenize(token)` to recover the original
|
|
8
|
+
* value for outbound MCP calls.
|
|
9
|
+
*
|
|
10
|
+
* Design:
|
|
11
|
+
* - Built-in matchers only this sprint (email, phone, SSN, CC/Luhn,
|
|
12
|
+
* IBAN, IPv4/v6). Inline-regex matchers are deferred to the follow-up.
|
|
13
|
+
* - The reverse map is passed to `generateSandboxCode` and embedded in
|
|
14
|
+
* the sandbox preamble as a frozen object. It is NOT persisted and
|
|
15
|
+
* cannot outlive the `execute_code` call that created it.
|
|
16
|
+
* - Tokenization is deterministic within a call: the same value always
|
|
17
|
+
* gets the same token (idempotent within one tokenize() invocation via
|
|
18
|
+
* the `seen` map).
|
|
19
|
+
*
|
|
20
|
+
* @module utils/tokenize
|
|
21
|
+
*/
|
|
22
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
23
|
+
// Token format
|
|
24
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
25
|
+
const TOKEN_LABELS = {
|
|
26
|
+
email: 'EMAIL',
|
|
27
|
+
phone: 'PHONE',
|
|
28
|
+
ssn: 'SSN',
|
|
29
|
+
credit_card: 'CC',
|
|
30
|
+
iban: 'IBAN',
|
|
31
|
+
ipv4: 'IPV4',
|
|
32
|
+
ipv6: 'IPV6',
|
|
33
|
+
};
|
|
34
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
35
|
+
// Luhn algorithm (credit-card validation)
|
|
36
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
37
|
+
function luhnCheck(digits) {
|
|
38
|
+
let sum = 0;
|
|
39
|
+
let alternate = false;
|
|
40
|
+
for (let i = digits.length - 1; i >= 0; i--) {
|
|
41
|
+
let n = parseInt(digits[i], 10);
|
|
42
|
+
if (alternate) {
|
|
43
|
+
n *= 2;
|
|
44
|
+
if (n > 9)
|
|
45
|
+
n -= 9;
|
|
46
|
+
}
|
|
47
|
+
sum += n;
|
|
48
|
+
alternate = !alternate;
|
|
49
|
+
}
|
|
50
|
+
return sum % 10 === 0;
|
|
51
|
+
}
|
|
52
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
53
|
+
// IBAN checksum (ISO 13616 mod-97)
|
|
54
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
55
|
+
function ibanCheck(raw) {
|
|
56
|
+
// Move first 4 chars to end and convert letters to digits
|
|
57
|
+
const rearranged = (raw.slice(4) + raw.slice(0, 4)).toUpperCase();
|
|
58
|
+
let numeric = '';
|
|
59
|
+
for (const ch of rearranged) {
|
|
60
|
+
if (ch >= 'A' && ch <= 'Z') {
|
|
61
|
+
numeric += (ch.charCodeAt(0) - 55).toString();
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
numeric += ch;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// BigInt mod-97 (string is too long for Number)
|
|
68
|
+
let remainder = BigInt(0);
|
|
69
|
+
for (const ch of numeric) {
|
|
70
|
+
remainder = (remainder * 10n + BigInt(ch)) % 97n;
|
|
71
|
+
}
|
|
72
|
+
return remainder === 1n;
|
|
73
|
+
}
|
|
74
|
+
const BUILTIN_MATCHERS = {
|
|
75
|
+
// RFC 5322 simplified — local@domain.tld
|
|
76
|
+
email: {
|
|
77
|
+
label: TOKEN_LABELS.email,
|
|
78
|
+
pattern: /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+/g,
|
|
79
|
+
},
|
|
80
|
+
// Loose international: +CC NNN…, (NNN) NNN-NNNN, NNN-NNN-NNNN, etc.
|
|
81
|
+
// Last group is \d{3,} to cover 3-digit tails (+61 412 345 678) and
|
|
82
|
+
// 4-digit tails ((555) 867-5309). \+\d{7,15} catches compact international
|
|
83
|
+
// numbers without separators.
|
|
84
|
+
phone: {
|
|
85
|
+
label: TOKEN_LABELS.phone,
|
|
86
|
+
pattern: /(?:\+\d{1,3}[\s.-])?\(?\d{3}\)?[\s.-]\d{3}[\s.-]\d{3,}|\+\d{7,15}/g,
|
|
87
|
+
},
|
|
88
|
+
// SSN: NNN-NN-NNNN or 9-digit run. The 9-digit run is only matched
|
|
89
|
+
// when preceded/followed by a word boundary so we don't swallow longer IDs.
|
|
90
|
+
ssn: {
|
|
91
|
+
label: TOKEN_LABELS.ssn,
|
|
92
|
+
pattern: /\b\d{3}-\d{2}-\d{4}\b|\b\d{9}\b/g,
|
|
93
|
+
},
|
|
94
|
+
// Credit card: 13–19 digits with optional spaces/dashes, Luhn-validated.
|
|
95
|
+
credit_card: {
|
|
96
|
+
label: TOKEN_LABELS.credit_card,
|
|
97
|
+
pattern: /\b(?:\d[ -]?){13,19}\b/g,
|
|
98
|
+
extractDigits: (m) => m.replace(/[ -]/g, ''),
|
|
99
|
+
validate: (digits) => digits.length >= 13 && digits.length <= 19 && luhnCheck(digits),
|
|
100
|
+
},
|
|
101
|
+
// IBAN: 2-letter country, 2 check digits, 11–30 alphanumeric chars.
|
|
102
|
+
// Tolerates spaces every 4 chars (SEPA print form).
|
|
103
|
+
iban: {
|
|
104
|
+
label: TOKEN_LABELS.iban,
|
|
105
|
+
pattern: /\b[A-Z]{2}\d{2}(?:[ ]?[A-Z0-9]{4}){2,7}(?:[ ]?[A-Z0-9]{1,4})?\b/gi,
|
|
106
|
+
extractDigits: (m) => m.replace(/\s/g, ''),
|
|
107
|
+
validate: (raw) => {
|
|
108
|
+
const stripped = raw.replace(/\s/g, '');
|
|
109
|
+
return stripped.length >= 15 && stripped.length <= 34 && ibanCheck(stripped);
|
|
110
|
+
},
|
|
111
|
+
},
|
|
112
|
+
// IPv4: standard dotted-quad with optional CIDR suffix
|
|
113
|
+
ipv4: {
|
|
114
|
+
label: TOKEN_LABELS.ipv4,
|
|
115
|
+
pattern: /\b(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]?\d)(?:\/\d{1,2})?\b/g,
|
|
116
|
+
},
|
|
117
|
+
// IPv6: full, compressed (::), and mixed IPv4/v6 forms
|
|
118
|
+
ipv6: {
|
|
119
|
+
label: TOKEN_LABELS.ipv6,
|
|
120
|
+
pattern: /(?:[0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:)*::(?:[0-9a-fA-F]{1,4}:)*[0-9a-fA-F]{1,4}|::(?:[0-9a-fA-F]{1,4}:)*[0-9a-fA-F]{1,4}|(?:[0-9a-fA-F]{1,4}:)*::/g,
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
/**
|
|
124
|
+
* Tokenize PII in `value` according to the requested `matchers`.
|
|
125
|
+
*
|
|
126
|
+
* - Walks nested objects and arrays recursively.
|
|
127
|
+
* - String values are scanned for all active matchers.
|
|
128
|
+
* - Object keys are NOT tokenized (only values).
|
|
129
|
+
* - If the same literal appears twice it receives the same token
|
|
130
|
+
* (idempotent within one call).
|
|
131
|
+
*
|
|
132
|
+
* @param value The data returned by an MCP tool.
|
|
133
|
+
* @param matchers Array of built-in matcher names (e.g. `['email','phone']`).
|
|
134
|
+
* Unknown names are silently ignored (future-proof for inline-regex extension).
|
|
135
|
+
* @returns `{ redacted, reverseMap }` where `reverseMap[token] = original`.
|
|
136
|
+
*/
|
|
137
|
+
export function tokenize(value, matchers) {
|
|
138
|
+
// Build the active spec set once per call.
|
|
139
|
+
const activeSpecs = [];
|
|
140
|
+
for (const name of matchers) {
|
|
141
|
+
if (name in BUILTIN_MATCHERS) {
|
|
142
|
+
activeSpecs.push(BUILTIN_MATCHERS[name]);
|
|
143
|
+
}
|
|
144
|
+
// Unknown names (future inline-regex) are skipped silently.
|
|
145
|
+
}
|
|
146
|
+
if (activeSpecs.length === 0) {
|
|
147
|
+
return { redacted: value, reverseMap: {} };
|
|
148
|
+
}
|
|
149
|
+
const counters = {};
|
|
150
|
+
const seen = new Map(); // originalValue → token
|
|
151
|
+
const reverseMap = {};
|
|
152
|
+
function nextToken(label) {
|
|
153
|
+
counters[label] = (counters[label] ?? 0) + 1;
|
|
154
|
+
return `[${label}_${counters[label]}]`;
|
|
155
|
+
}
|
|
156
|
+
function redactString(input) {
|
|
157
|
+
let result = input;
|
|
158
|
+
for (const spec of activeSpecs) {
|
|
159
|
+
spec.pattern.lastIndex = 0; // reset stateful global regex
|
|
160
|
+
result = result.replace(spec.pattern, (match) => {
|
|
161
|
+
// Secondary validation (Luhn, IBAN mod-97)
|
|
162
|
+
if (spec.validate) {
|
|
163
|
+
const digits = spec.extractDigits ? spec.extractDigits(match) : match;
|
|
164
|
+
if (!spec.validate(digits))
|
|
165
|
+
return match; // not a valid PAN/IBAN — leave it
|
|
166
|
+
}
|
|
167
|
+
// Idempotent: same value → same token
|
|
168
|
+
if (seen.has(match)) {
|
|
169
|
+
return seen.get(match);
|
|
170
|
+
}
|
|
171
|
+
const token = nextToken(spec.label);
|
|
172
|
+
seen.set(match, token);
|
|
173
|
+
reverseMap[token] = match;
|
|
174
|
+
return token;
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
function walk(node) {
|
|
180
|
+
if (typeof node === 'string')
|
|
181
|
+
return redactString(node);
|
|
182
|
+
if (Array.isArray(node))
|
|
183
|
+
return node.map(walk);
|
|
184
|
+
if (node !== null && typeof node === 'object') {
|
|
185
|
+
const out = {};
|
|
186
|
+
for (const [k, v] of Object.entries(node)) {
|
|
187
|
+
out[k] = walk(v);
|
|
188
|
+
}
|
|
189
|
+
return out;
|
|
190
|
+
}
|
|
191
|
+
return node; // number, boolean, null, undefined — pass through
|
|
192
|
+
}
|
|
193
|
+
const redacted = walk(value);
|
|
194
|
+
return { redacted, reverseMap };
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Given a reverse map and a token string, return the original value.
|
|
198
|
+
* Returns `undefined` if the token is not in the map.
|
|
199
|
+
*
|
|
200
|
+
* Used in the sandbox preamble to implement `mcp.detokenize(token)`.
|
|
201
|
+
*/
|
|
202
|
+
export function detokenize(token, reverseMap) {
|
|
203
|
+
return reverseMap[token];
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=tokenize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
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 = "
|
|
2
|
-
export declare const BUILD_NUMBER =
|
|
3
|
-
export declare const BUILD_STRING = "
|
|
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)";
|
|
4
4
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,
|
|
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"}
|
package/dist/version.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const VERSION = '
|
|
2
|
-
export const BUILD_NUMBER =
|
|
3
|
-
export const BUILD_STRING = '
|
|
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)';
|
|
4
4
|
//# sourceMappingURL=version.js.map
|
package/dist/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@darkiceinteractive/mcp-conductor",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-beta.1",
|
|
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",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
8
8
|
"bin": {
|
|
9
|
-
"mcp-conductor": "./dist/index.js"
|
|
9
|
+
"mcp-conductor": "./dist/index.js",
|
|
10
|
+
"mcp-conductor-cli": "./dist/bin/cli.js"
|
|
10
11
|
},
|
|
11
12
|
"files": [
|
|
12
13
|
"dist",
|
|
@@ -62,11 +63,20 @@
|
|
|
62
63
|
"node": ">=18.0.0"
|
|
63
64
|
},
|
|
64
65
|
"dependencies": {
|
|
66
|
+
"@inquirer/prompts": "^7.10.1",
|
|
65
67
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
68
|
+
"ajv": "^8.20.0",
|
|
69
|
+
"cbor-x": "^1.6.4",
|
|
66
70
|
"chalk": "^5.3.0",
|
|
67
71
|
"chokidar": "^3.5.3",
|
|
72
|
+
"commander": "^12.1.0",
|
|
68
73
|
"conf": "^13.0.1",
|
|
69
74
|
"gray-matter": "^4.0.3",
|
|
75
|
+
"json-schema-to-typescript": "^15.0.4",
|
|
76
|
+
"lru-cache": "^11.3.5",
|
|
77
|
+
"nanoid": "^5.1.11",
|
|
78
|
+
"p-queue": "^8.1.1",
|
|
79
|
+
"picocolors": "^1.1.1",
|
|
70
80
|
"uuid": "^10.0.0",
|
|
71
81
|
"zod": "^3.23.8"
|
|
72
82
|
},
|