@darkiceinteractive/mcp-conductor 1.1.0 → 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 +65 -1
- package/dist/bridge/http-server.d.ts.map +1 -1
- package/dist/bridge/http-server.js +192 -7
- 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/bridge/session-registry.d.ts +64 -0
- package/dist/bridge/session-registry.d.ts.map +1 -0
- package/dist/bridge/session-registry.js +124 -0
- package/dist/bridge/session-registry.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 +10 -0
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +14 -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 +19 -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 +12 -0
- package/dist/runtime/executor.d.ts.map +1 -1
- package/dist/runtime/executor.js +148 -16
- 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 +6 -0
- package/dist/server/mcp-server.d.ts.map +1 -1
- package/dist/server/mcp-server.js +610 -45
- 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 +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +5 -1
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/orphan-watch.d.ts +34 -0
- package/dist/utils/orphan-watch.d.ts.map +1 -0
- package/dist/utils/orphan-watch.js +54 -0
- package/dist/utils/orphan-watch.js.map +1 -0
- package/dist/utils/redact.d.ts +15 -0
- package/dist/utils/redact.d.ts.map +1 -0
- package/dist/utils/redact.js +48 -0
- package/dist/utils/redact.js.map +1 -0
- 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 +13 -3
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ReliabilityProfile — per-tool/per-server/global reliability configuration.
|
|
3
|
+
*
|
|
4
|
+
* Resolution order:
|
|
5
|
+
* tool-level ToolDefinition.reliability → server-level config → global default
|
|
6
|
+
*/
|
|
7
|
+
/** Global defaults applied when no profile field is provided. */
|
|
8
|
+
export const DEFAULT_PROFILE = {
|
|
9
|
+
timeoutMs: 10_000,
|
|
10
|
+
retries: 2,
|
|
11
|
+
retryDelayMs: 100,
|
|
12
|
+
retryMaxDelayMs: 5_000,
|
|
13
|
+
circuitBreakerThreshold: 0.5,
|
|
14
|
+
circuitBreakerWindowMs: 60_000,
|
|
15
|
+
circuitBreakerMinCalls: 10,
|
|
16
|
+
halfOpenProbeIntervalMs: 30_000,
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Merge profile overrides onto the global default, producing a fully-resolved
|
|
20
|
+
* profile with every field set.
|
|
21
|
+
*/
|
|
22
|
+
export function resolveProfile(override, base = DEFAULT_PROFILE) {
|
|
23
|
+
if (!override)
|
|
24
|
+
return base;
|
|
25
|
+
return {
|
|
26
|
+
timeoutMs: override.timeoutMs ?? base.timeoutMs,
|
|
27
|
+
retries: override.retries ?? base.retries,
|
|
28
|
+
retryDelayMs: override.retryDelayMs ?? base.retryDelayMs,
|
|
29
|
+
retryMaxDelayMs: override.retryMaxDelayMs ?? base.retryMaxDelayMs,
|
|
30
|
+
circuitBreakerThreshold: override.circuitBreakerThreshold ?? base.circuitBreakerThreshold,
|
|
31
|
+
circuitBreakerWindowMs: override.circuitBreakerWindowMs ?? base.circuitBreakerWindowMs,
|
|
32
|
+
circuitBreakerMinCalls: override.circuitBreakerMinCalls ?? base.circuitBreakerMinCalls,
|
|
33
|
+
halfOpenProbeIntervalMs: override.halfOpenProbeIntervalMs ?? base.halfOpenProbeIntervalMs,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Mutation tool name patterns — tools matching any of these patterns do NOT
|
|
38
|
+
* retry by default (retries forced to 0 unless the profile explicitly overrides).
|
|
39
|
+
*/
|
|
40
|
+
const MUTATION_PATTERNS = [/_create$/, /_update$/, /_delete$/, /_remove$/, /_write$/];
|
|
41
|
+
/** Returns true if the tool name matches a mutation pattern. */
|
|
42
|
+
export function isMutation(toolName) {
|
|
43
|
+
return MUTATION_PATTERNS.some((p) => p.test(toolName));
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Apply mutation override: if the tool is a mutation AND the resolved profile
|
|
47
|
+
* did not explicitly set `retries`, force retries to 0.
|
|
48
|
+
*
|
|
49
|
+
* We detect "explicitly set" by checking whether the override provided the
|
|
50
|
+
* `retries` field directly (i.e., override?.retries is a number).
|
|
51
|
+
*/
|
|
52
|
+
export function applyMutationDefault(toolName, profile, explicitRetries) {
|
|
53
|
+
if (isMutation(toolName) && !explicitRetries) {
|
|
54
|
+
return { ...profile, retries: 0 };
|
|
55
|
+
}
|
|
56
|
+
return profile;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile.js","sourceRoot":"","sources":["../../src/reliability/profile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AA6BH,iEAAiE;AACjE,MAAM,CAAC,MAAM,eAAe,GAAiC;IAC3D,SAAS,EAAE,MAAM;IACjB,OAAO,EAAE,CAAC;IACV,YAAY,EAAE,GAAG;IACjB,eAAe,EAAE,KAAK;IACtB,uBAAuB,EAAE,GAAG;IAC5B,sBAAsB,EAAE,MAAM;IAC9B,sBAAsB,EAAE,EAAE;IAC1B,uBAAuB,EAAE,MAAM;CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,cAAc,CAC5B,QAA6B,EAC7B,OAAqC,eAAe;IAEpD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,OAAO;QACL,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;QAC/C,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO;QACzC,YAAY,EAAE,QAAQ,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY;QACxD,eAAe,EAAE,QAAQ,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;QACjE,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB;QACzF,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB;QACtF,sBAAsB,EAAE,QAAQ,CAAC,sBAAsB,IAAI,IAAI,CAAC,sBAAsB;QACtF,uBAAuB,EAAE,QAAQ,CAAC,uBAAuB,IAAI,IAAI,CAAC,uBAAuB;KAC1F,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,iBAAiB,GAAG,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;AAEtF,gEAAgE;AAChE,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAAgB,EAChB,OAAqC,EACrC,eAAwB;IAExB,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,OAAO,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponential backoff retry logic.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an async operation, retrying on retryable failures with exponentially
|
|
5
|
+
* increasing delays up to a configurable ceiling. Mutations (tools matching
|
|
6
|
+
* _create/_update/_delete patterns) receive retries=0 by default via the
|
|
7
|
+
* profile resolution layer — this module does not re-apply that guard, it
|
|
8
|
+
* simply honours whatever `retries` value arrives in options.
|
|
9
|
+
*/
|
|
10
|
+
export interface RetryOptions {
|
|
11
|
+
/** Number of additional attempts after the first failure (0 = no retries) */
|
|
12
|
+
retries: number;
|
|
13
|
+
/** Initial delay in ms before the first retry */
|
|
14
|
+
retryDelayMs: number;
|
|
15
|
+
/** Maximum delay ceiling in ms */
|
|
16
|
+
retryMaxDelayMs: number;
|
|
17
|
+
/** Server name for error context */
|
|
18
|
+
server: string;
|
|
19
|
+
/** Tool name for error context */
|
|
20
|
+
tool: string;
|
|
21
|
+
/**
|
|
22
|
+
* Optional sleep function — injectable for tests to avoid real delays.
|
|
23
|
+
* Defaults to a real setTimeout-based sleep.
|
|
24
|
+
*/
|
|
25
|
+
sleep?: (ms: number) => Promise<void>;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Execute `fn` with exponential backoff retries.
|
|
29
|
+
*
|
|
30
|
+
* Attempt sequence: 1 (initial) + up to `retries` additional attempts.
|
|
31
|
+
* Delay sequence: retryDelayMs, retryDelayMs*2, retryDelayMs*4, …, capped at retryMaxDelayMs.
|
|
32
|
+
*
|
|
33
|
+
* Only errors for which `isRetryable(err)` returns true are retried.
|
|
34
|
+
* Non-retryable errors propagate immediately without consuming retry budget.
|
|
35
|
+
*
|
|
36
|
+
* Throws RetryExhaustedError if all attempts fail on retryable errors.
|
|
37
|
+
*/
|
|
38
|
+
export declare function withRetry<T>(fn: () => Promise<T>, options: RetryOptions): Promise<T>;
|
|
39
|
+
//# sourceMappingURL=retry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/reliability/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,YAAY,EAAE,MAAM,CAAC;IACrB,kCAAkC;IAClC,eAAe,EAAE,MAAM,CAAC;IACxB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAKD;;;;;;;;;;GAUG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAiC1F"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Exponential backoff retry logic.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an async operation, retrying on retryable failures with exponentially
|
|
5
|
+
* increasing delays up to a configurable ceiling. Mutations (tools matching
|
|
6
|
+
* _create/_update/_delete patterns) receive retries=0 by default via the
|
|
7
|
+
* profile resolution layer — this module does not re-apply that guard, it
|
|
8
|
+
* simply honours whatever `retries` value arrives in options.
|
|
9
|
+
*/
|
|
10
|
+
import { RetryExhaustedError, isRetryable } from './errors.js';
|
|
11
|
+
const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
|
|
12
|
+
/**
|
|
13
|
+
* Execute `fn` with exponential backoff retries.
|
|
14
|
+
*
|
|
15
|
+
* Attempt sequence: 1 (initial) + up to `retries` additional attempts.
|
|
16
|
+
* Delay sequence: retryDelayMs, retryDelayMs*2, retryDelayMs*4, …, capped at retryMaxDelayMs.
|
|
17
|
+
*
|
|
18
|
+
* Only errors for which `isRetryable(err)` returns true are retried.
|
|
19
|
+
* Non-retryable errors propagate immediately without consuming retry budget.
|
|
20
|
+
*
|
|
21
|
+
* Throws RetryExhaustedError if all attempts fail on retryable errors.
|
|
22
|
+
*/
|
|
23
|
+
export async function withRetry(fn, options) {
|
|
24
|
+
const { retries, retryDelayMs, retryMaxDelayMs, server, tool } = options;
|
|
25
|
+
const sleep = options.sleep ?? defaultSleep;
|
|
26
|
+
let lastError;
|
|
27
|
+
let delay = retryDelayMs;
|
|
28
|
+
// Total attempts = 1 initial + retries
|
|
29
|
+
const maxAttempts = retries + 1;
|
|
30
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
31
|
+
try {
|
|
32
|
+
return await fn();
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
lastError = err;
|
|
36
|
+
// Non-retryable errors propagate immediately
|
|
37
|
+
if (!isRetryable(err)) {
|
|
38
|
+
throw err;
|
|
39
|
+
}
|
|
40
|
+
// Exhausted all attempts
|
|
41
|
+
if (attempt === maxAttempts) {
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
// Wait before next attempt with exponential backoff
|
|
45
|
+
await sleep(delay);
|
|
46
|
+
delay = Math.min(delay * 2, retryMaxDelayMs);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
throw new RetryExhaustedError(server, tool, maxAttempts, lastError);
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=retry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/reliability/retry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAoB/D,MAAM,YAAY,GAAG,CAAC,EAAU,EAAiB,EAAE,CACjD,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAEpD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAI,EAAoB,EAAE,OAAqB;IAC5E,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;IACzE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,YAAY,CAAC;IAE5C,IAAI,SAAkB,CAAC;IACvB,IAAI,KAAK,GAAG,YAAY,CAAC;IAEzB,uCAAuC;IACvC,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;IAEhC,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QACxD,IAAI,CAAC;YACH,OAAO,MAAM,EAAE,EAAE,CAAC;QACpB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,SAAS,GAAG,GAAG,CAAC;YAEhB,6CAA6C;YAC7C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtB,MAAM,GAAG,CAAC;YACZ,CAAC;YAED,yBAAyB;YACzB,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,MAAM;YACR,CAAC;YAED,oDAAoD;YACpD,MAAM,KAAK,CAAC,KAAK,CAAC,CAAC;YACnB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,eAAe,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAED,MAAM,IAAI,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout enforcement via Promise.race + AbortSignal.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an async function with a deadline. If the function does not resolve
|
|
5
|
+
* within timeoutMs, the promise rejects with TimeoutError and — where the
|
|
6
|
+
* caller supports it — signals cancellation via AbortSignal.
|
|
7
|
+
*
|
|
8
|
+
* AbortController integration is forward-compatible with Phase 4 bridge changes
|
|
9
|
+
* that will accept AbortSignal directly.
|
|
10
|
+
*/
|
|
11
|
+
export interface TimeoutOptions {
|
|
12
|
+
/** Deadline in milliseconds */
|
|
13
|
+
timeoutMs: number;
|
|
14
|
+
/** Server name for error context */
|
|
15
|
+
server: string;
|
|
16
|
+
/** Tool name for error context */
|
|
17
|
+
tool: string;
|
|
18
|
+
/** Attempt number (1-based) for error context */
|
|
19
|
+
attempt?: number;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Run `fn` with an AbortSignal, rejecting with TimeoutError if it exceeds
|
|
23
|
+
* timeoutMs. The AbortSignal is passed to `fn` so callers that support
|
|
24
|
+
* cancellation (Phase 4 bridge) can abort the underlying operation.
|
|
25
|
+
*
|
|
26
|
+
* Fast calls that resolve before the deadline are unaffected.
|
|
27
|
+
*/
|
|
28
|
+
export declare function withTimeout<T>(fn: (signal: AbortSignal) => Promise<T>, options: TimeoutOptions): Promise<T>;
|
|
29
|
+
/**
|
|
30
|
+
* Convenience overload for callers that do not need AbortSignal forwarding.
|
|
31
|
+
* Wraps a zero-argument async factory in a signal-aware shim.
|
|
32
|
+
*/
|
|
33
|
+
export declare function withTimeoutSimple<T>(fn: () => Promise<T>, options: TimeoutOptions): Promise<T>;
|
|
34
|
+
//# sourceMappingURL=timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.d.ts","sourceRoot":"","sources":["../../src/reliability/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAIH,MAAM,WAAW,cAAc;IAC7B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oCAAoC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,CAAC,CAAC,EACvC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,CAAC,CAAC,CA6BZ;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timeout enforcement via Promise.race + AbortSignal.
|
|
3
|
+
*
|
|
4
|
+
* Wraps an async function with a deadline. If the function does not resolve
|
|
5
|
+
* within timeoutMs, the promise rejects with TimeoutError and — where the
|
|
6
|
+
* caller supports it — signals cancellation via AbortSignal.
|
|
7
|
+
*
|
|
8
|
+
* AbortController integration is forward-compatible with Phase 4 bridge changes
|
|
9
|
+
* that will accept AbortSignal directly.
|
|
10
|
+
*/
|
|
11
|
+
import { TimeoutError } from './errors.js';
|
|
12
|
+
/**
|
|
13
|
+
* Run `fn` with an AbortSignal, rejecting with TimeoutError if it exceeds
|
|
14
|
+
* timeoutMs. The AbortSignal is passed to `fn` so callers that support
|
|
15
|
+
* cancellation (Phase 4 bridge) can abort the underlying operation.
|
|
16
|
+
*
|
|
17
|
+
* Fast calls that resolve before the deadline are unaffected.
|
|
18
|
+
*/
|
|
19
|
+
export async function withTimeout(fn, options) {
|
|
20
|
+
const { timeoutMs, server, tool, attempt = 1 } = options;
|
|
21
|
+
const controller = new AbortController();
|
|
22
|
+
const { signal } = controller;
|
|
23
|
+
let timer;
|
|
24
|
+
const timeoutPromise = new Promise((_resolve, reject) => {
|
|
25
|
+
timer = setTimeout(() => {
|
|
26
|
+
controller.abort();
|
|
27
|
+
reject(new TimeoutError(server, tool, timeoutMs, attempt));
|
|
28
|
+
}, timeoutMs);
|
|
29
|
+
});
|
|
30
|
+
try {
|
|
31
|
+
const result = await Promise.race([fn(signal), timeoutPromise]);
|
|
32
|
+
return result;
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
// Always clear the timer — prevents leaks on fast success or non-timeout errors
|
|
36
|
+
if (timer !== undefined) {
|
|
37
|
+
clearTimeout(timer);
|
|
38
|
+
}
|
|
39
|
+
// If the operation finished (success or non-timeout error) before the
|
|
40
|
+
// deadline, abort the signal so any in-progress I/O can clean up.
|
|
41
|
+
if (!signal.aborted) {
|
|
42
|
+
controller.abort();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Convenience overload for callers that do not need AbortSignal forwarding.
|
|
48
|
+
* Wraps a zero-argument async factory in a signal-aware shim.
|
|
49
|
+
*/
|
|
50
|
+
export async function withTimeoutSimple(fn, options) {
|
|
51
|
+
return withTimeout(() => fn(), options);
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../src/reliability/timeout.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAuC,EACvC,OAAuB;IAEvB,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;IAE9B,IAAI,KAAgD,CAAC;IAErD,MAAM,cAAc,GAAG,IAAI,OAAO,CAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE;QAC7D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACtB,UAAU,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,YAAY,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC,EAAE,SAAS,CAAC,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;YAAS,CAAC;QACT,gFAAgF;QAChF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QACD,sEAAsE;QACtE,kEAAkE;QAClE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAoB,EACpB,OAAuB;IAEvB,OAAO,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -29,6 +29,18 @@ export interface ExecutionOptions {
|
|
|
29
29
|
servers: string[];
|
|
30
30
|
/** Enable streaming mode for real-time progress updates */
|
|
31
31
|
stream?: boolean;
|
|
32
|
+
/**
|
|
33
|
+
* AbortSignal tied to the caller's request. When the signal fires we
|
|
34
|
+
* terminate the Deno process via the same SIGTERM→SIGKILL path used for
|
|
35
|
+
* shutdown. Surfaces MCP cancellation from the client side.
|
|
36
|
+
*/
|
|
37
|
+
signal?: AbortSignal;
|
|
38
|
+
/**
|
|
39
|
+
* Caller-provided execution id. Lets the MCP server preallocate the id
|
|
40
|
+
* and subscribe to the matching ExecutionStream *before* Deno spawns, so
|
|
41
|
+
* we never miss the first progress event.
|
|
42
|
+
*/
|
|
43
|
+
executionId?: string;
|
|
32
44
|
}
|
|
33
45
|
/**
|
|
34
46
|
* Deno Sandbox Executor
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGxD,MAAM,WAAW,eAAe;IAC9B,qDAAqD;IACrD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;QACpD,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;IACF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,EAAE;QACP,eAAe,EAAE,MAAM,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC;QAClB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAgfD;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAwC;IAC/D,OAAO,CAAC,sBAAsB,CAAS;IACvC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAwB;gBAEjC,MAAM,EAAE,aAAa;IAejC;;;;;;;;OAQG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAgBnC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwC/B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA8EhF;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAkUhB"}
|
package/dist/runtime/executor.js
CHANGED
|
@@ -34,6 +34,11 @@ const __logs: string[] = [];
|
|
|
34
34
|
// Rate limit tracking per server
|
|
35
35
|
const __rateLimits: Record<string, { detected: boolean; delayMs: number; lastError: number }> = {};
|
|
36
36
|
|
|
37
|
+
// X4 PII reverse map — accumulated from tool call responses within this execution.
|
|
38
|
+
// Tokens minted in a prior execute_code call are NOT present here (each call
|
|
39
|
+
// gets a fresh map). Never returned to Claude — used only by mcp.detokenize().
|
|
40
|
+
const __reverseMap: Record<string, string> = {};
|
|
41
|
+
|
|
37
42
|
// Helper to detect if response is a rate limit error
|
|
38
43
|
function __isRateLimitError(result: unknown): boolean {
|
|
39
44
|
if (typeof result === 'string') {
|
|
@@ -76,6 +81,21 @@ console.log = (...args: unknown[]) => {
|
|
|
76
81
|
}
|
|
77
82
|
};
|
|
78
83
|
|
|
84
|
+
// MCPToolError shim — mirrors the server-side class so instanceof checks work
|
|
85
|
+
// in the sandbox without importing the server bundle.
|
|
86
|
+
class MCPToolError extends Error {
|
|
87
|
+
readonly name = 'MCPToolError';
|
|
88
|
+
constructor(
|
|
89
|
+
readonly code: string,
|
|
90
|
+
readonly server: string,
|
|
91
|
+
readonly tool: string,
|
|
92
|
+
readonly upstream: unknown
|
|
93
|
+
) {
|
|
94
|
+
super(\`[\${server}.\${tool}] \${code}\`);
|
|
95
|
+
Object.setPrototypeOf(this, MCPToolError.prototype);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
79
99
|
// MCP Server Client with streaming support
|
|
80
100
|
class MCPServerClient {
|
|
81
101
|
constructor(public readonly name: string) {}
|
|
@@ -111,6 +131,12 @@ class MCPServerClient {
|
|
|
111
131
|
__metrics.dataProcessedBytes += data.metrics.dataSize;
|
|
112
132
|
}
|
|
113
133
|
|
|
134
|
+
// X4: accumulate PII reverse map tokens from this tool call into the
|
|
135
|
+
// execution-scoped map so mcp.detokenize() can resolve them.
|
|
136
|
+
if (data.reverseMap && typeof data.reverseMap === 'object') {
|
|
137
|
+
Object.assign(__reverseMap, data.reverseMap);
|
|
138
|
+
}
|
|
139
|
+
|
|
114
140
|
if (data.error) {
|
|
115
141
|
// Report tool call error when streaming
|
|
116
142
|
if (STREAM_ENABLED) {
|
|
@@ -122,6 +148,10 @@ class MCPServerClient {
|
|
|
122
148
|
error: data.error.message,
|
|
123
149
|
});
|
|
124
150
|
}
|
|
151
|
+
// Reconstruct MCPToolError if the bridge serialized structured fields
|
|
152
|
+
if (data.error.type === 'mcp_tool_error' && data.error.code !== undefined) {
|
|
153
|
+
throw new MCPToolError(data.error.code, data.error.server ?? this.name, data.error.tool ?? tool, data.error.message);
|
|
154
|
+
}
|
|
125
155
|
throw new Error(\`Tool error (\${this.name}.\${tool}): \${data.error.message}\`);
|
|
126
156
|
}
|
|
127
157
|
|
|
@@ -227,6 +257,22 @@ const __mcpBase = {
|
|
|
227
257
|
loaded_servers: [] as string[],
|
|
228
258
|
},
|
|
229
259
|
|
|
260
|
+
/**
|
|
261
|
+
* X4 PII detokenization — recover the original sensitive value for a token
|
|
262
|
+
* minted by the hub's response tokenizer within this same execute_code call.
|
|
263
|
+
*
|
|
264
|
+
* Example:
|
|
265
|
+
* const email = mcp.detokenize('[EMAIL_1]'); // → 'x@y.com'
|
|
266
|
+
* await mcp.server('crm').call('lookup', { email });
|
|
267
|
+
*
|
|
268
|
+
* Returns undefined if the token was not minted in this call (e.g. it comes
|
|
269
|
+
* from a prior execute_code call — tokens do not survive call boundaries).
|
|
270
|
+
* Never call this on the final return value — Claude should see the token.
|
|
271
|
+
*/
|
|
272
|
+
detokenize(token: string): string | undefined {
|
|
273
|
+
return __reverseMap[token];
|
|
274
|
+
},
|
|
275
|
+
|
|
230
276
|
// Skills API placeholder for MVP
|
|
231
277
|
skills: {
|
|
232
278
|
list(): Array<{ name: string; category: string; description: string }> {
|
|
@@ -244,32 +290,51 @@ const __mcpBase = {
|
|
|
244
290
|
* Smart batch execution with automatic rate limit detection and handling.
|
|
245
291
|
* Attempts parallel execution first, falls back to sequential with delays if rate limited.
|
|
246
292
|
*
|
|
247
|
-
*
|
|
293
|
+
* Two call shapes are supported:
|
|
294
|
+
* 1. Descriptor form (rate-limit aware): \`mcp.batch([{ server, tool, params }, ...])\`
|
|
295
|
+
* 2. Callback form (composable, bypasses rate-limit detection):
|
|
296
|
+
* \`mcp.batch([() => mcp.server('x').call('y', {}), ...])\`
|
|
297
|
+
*
|
|
298
|
+
* Mix-and-match in one call is not supported — pick a shape per call.
|
|
299
|
+
*
|
|
300
|
+
* @param calls Array of descriptors OR array of () => Promise<T>
|
|
248
301
|
* @param options Optional { maxParallel, retryDelayMs }
|
|
249
302
|
* @returns Array of results in same order as calls
|
|
250
303
|
*/
|
|
251
304
|
async batch<T = unknown>(
|
|
252
|
-
calls: Array<
|
|
305
|
+
calls: Array<
|
|
306
|
+
| { server: string; tool: string; params?: Record<string, unknown> }
|
|
307
|
+
| (() => Promise<T>)
|
|
308
|
+
>,
|
|
253
309
|
options: { maxParallel?: number; retryDelayMs?: number; forceParallel?: boolean } = {}
|
|
254
310
|
): Promise<T[]> {
|
|
255
|
-
|
|
256
|
-
|
|
311
|
+
// Detect callback form by inspecting the first element. The callback form
|
|
312
|
+
// bypasses rate-limit detection because we don't know which servers are
|
|
313
|
+
// being called — Promise.all is sufficient.
|
|
314
|
+
if (calls.length > 0 && typeof calls[0] === 'function') {
|
|
315
|
+
return Promise.all((calls as Array<() => Promise<T>>).map(fn => fn()));
|
|
316
|
+
}
|
|
317
|
+
|
|
318
|
+
// Descriptor form — preserves all existing behaviour (rate limits, retries).
|
|
319
|
+
const descriptorCalls = calls as Array<{ server: string; tool: string; params?: Record<string, unknown> }>;
|
|
320
|
+
const { maxParallel = descriptorCalls.length, retryDelayMs = 1100, forceParallel = false } = options;
|
|
321
|
+
const results: T[] = new Array(descriptorCalls.length);
|
|
257
322
|
|
|
258
323
|
// Clear rate limit cache if forcing parallel (e.g., after API upgrade)
|
|
259
324
|
if (forceParallel) {
|
|
260
|
-
for (const call of
|
|
325
|
+
for (const call of descriptorCalls) {
|
|
261
326
|
delete __rateLimits[call.server];
|
|
262
327
|
}
|
|
263
328
|
mcp.log(\`🔄 Force parallel mode enabled - rate limit cache cleared\`);
|
|
264
329
|
}
|
|
265
330
|
|
|
266
331
|
// Check if any server has known rate limits
|
|
267
|
-
const hasKnownRateLimit = !forceParallel &&
|
|
332
|
+
const hasKnownRateLimit = !forceParallel && descriptorCalls.some(c => __rateLimits[c.server]?.detected);
|
|
268
333
|
|
|
269
334
|
if (hasKnownRateLimit) {
|
|
270
335
|
// Sequential with delays for rate-limited servers
|
|
271
|
-
for (let i = 0; i <
|
|
272
|
-
const { server, tool, params = {} } =
|
|
336
|
+
for (let i = 0; i < descriptorCalls.length; i++) {
|
|
337
|
+
const { server, tool, params = {} } = descriptorCalls[i];
|
|
273
338
|
const rateLimit = __rateLimits[server];
|
|
274
339
|
if (rateLimit?.detected && i > 0) {
|
|
275
340
|
await __sleep(rateLimit.delayMs);
|
|
@@ -282,7 +347,7 @@ const __mcpBase = {
|
|
|
282
347
|
|
|
283
348
|
// Try parallel execution first
|
|
284
349
|
const parallelResults = await Promise.all(
|
|
285
|
-
|
|
350
|
+
descriptorCalls.map(async ({ server, tool, params = {} }) => {
|
|
286
351
|
const client = new MCPServerClient(server);
|
|
287
352
|
return client.call(tool, params);
|
|
288
353
|
})
|
|
@@ -294,12 +359,12 @@ const __mcpBase = {
|
|
|
294
359
|
if (__isRateLimitError(parallelResults[i])) {
|
|
295
360
|
rateLimitedIndices.push(i);
|
|
296
361
|
// Mark this server as rate limited
|
|
297
|
-
__rateLimits[
|
|
362
|
+
__rateLimits[descriptorCalls[i].server] = {
|
|
298
363
|
detected: true,
|
|
299
364
|
delayMs: retryDelayMs,
|
|
300
365
|
lastError: Date.now(),
|
|
301
366
|
};
|
|
302
|
-
mcp.log(\`⚠️ RATE LIMITED: \${
|
|
367
|
+
mcp.log(\`⚠️ RATE LIMITED: \${descriptorCalls[i].server} - Free tier limit hit. Retrying with delays...\`);
|
|
303
368
|
mcp.log(\`💡 TIP: Upgrade your API plan for parallel execution: https://brave.com/search/api/\`);
|
|
304
369
|
} else {
|
|
305
370
|
results[i] = parallelResults[i] as T;
|
|
@@ -310,7 +375,7 @@ const __mcpBase = {
|
|
|
310
375
|
if (rateLimitedIndices.length > 0) {
|
|
311
376
|
for (const idx of rateLimitedIndices) {
|
|
312
377
|
await __sleep(retryDelayMs);
|
|
313
|
-
const { server, tool, params = {} } =
|
|
378
|
+
const { server, tool, params = {} } = descriptorCalls[idx];
|
|
314
379
|
const client = new MCPServerClient(server);
|
|
315
380
|
results[idx] = await client.call(tool, params) as T;
|
|
316
381
|
}
|
|
@@ -444,7 +509,7 @@ export class DenoExecutor {
|
|
|
444
509
|
denoAvailable = null;
|
|
445
510
|
constructor(config) {
|
|
446
511
|
this.config = config;
|
|
447
|
-
this.maxConcurrentProcesses = config.maxConcurrentProcesses ??
|
|
512
|
+
this.maxConcurrentProcesses = config.maxConcurrentProcesses ?? 8;
|
|
448
513
|
this.maxOutputBytes = config.maxOutputBytes ?? 10 * 1024 * 1024;
|
|
449
514
|
this.tempDir = join(tmpdir(), 'mcp-executor');
|
|
450
515
|
// Ensure temp directory exists
|
|
@@ -558,9 +623,19 @@ export class DenoExecutor {
|
|
|
558
623
|
* Execute code in the Deno sandbox
|
|
559
624
|
*/
|
|
560
625
|
async execute(code, options) {
|
|
561
|
-
const executionId = generateExecutionId();
|
|
626
|
+
const executionId = options.executionId ?? generateExecutionId();
|
|
562
627
|
const startTime = Date.now();
|
|
563
628
|
const streamEnabled = options.stream ?? false;
|
|
629
|
+
// Short-circuit if the caller already cancelled before we started.
|
|
630
|
+
if (options.signal?.aborted) {
|
|
631
|
+
return {
|
|
632
|
+
executionId,
|
|
633
|
+
success: false,
|
|
634
|
+
error: { type: 'runtime', message: 'Execution cancelled before start' },
|
|
635
|
+
logs: [],
|
|
636
|
+
metrics: { executionTimeMs: 0, toolCalls: 0, dataProcessedBytes: 0, resultSizeBytes: 0 },
|
|
637
|
+
};
|
|
638
|
+
}
|
|
564
639
|
logger.debug('Starting execution', { executionId, streamEnabled });
|
|
565
640
|
// Validate Deno is available
|
|
566
641
|
const hasDenoAvailable = await this.checkDeno();
|
|
@@ -587,7 +662,7 @@ export class DenoExecutor {
|
|
|
587
662
|
const tempFile = join(this.tempDir, `exec_${executionId}.ts`);
|
|
588
663
|
writeFileSync(tempFile, sandboxCode);
|
|
589
664
|
try {
|
|
590
|
-
const result = await this.runDeno(tempFile, options.timeoutMs, executionId, options.bridgeUrl);
|
|
665
|
+
const result = await this.runDeno(tempFile, options.timeoutMs, executionId, options.bridgeUrl, options.signal);
|
|
591
666
|
return {
|
|
592
667
|
...result,
|
|
593
668
|
executionId,
|
|
@@ -617,7 +692,7 @@ export class DenoExecutor {
|
|
|
617
692
|
/**
|
|
618
693
|
* Run Deno subprocess
|
|
619
694
|
*/
|
|
620
|
-
runDeno(filePath, timeoutMs, executionId, bridgeUrl) {
|
|
695
|
+
runDeno(filePath, timeoutMs, executionId, bridgeUrl, signal) {
|
|
621
696
|
return new Promise((resolve) => {
|
|
622
697
|
// Reject if shutting down
|
|
623
698
|
if (this.isShuttingDown) {
|
|
@@ -693,6 +768,35 @@ export class DenoExecutor {
|
|
|
693
768
|
killed = true;
|
|
694
769
|
proc.kill('SIGKILL');
|
|
695
770
|
}, timeoutMs);
|
|
771
|
+
// Honour MCP cancellation (RequestHandlerExtra.signal). We kill the
|
|
772
|
+
// process and flag cancellation so the close handler returns the
|
|
773
|
+
// dedicated error type instead of a timeout / runtime error.
|
|
774
|
+
let cancelled = false;
|
|
775
|
+
const onAbort = () => {
|
|
776
|
+
cancelled = true;
|
|
777
|
+
killed = true;
|
|
778
|
+
logger.info('Execution cancelled by client', { executionId });
|
|
779
|
+
try {
|
|
780
|
+
proc.kill('SIGTERM');
|
|
781
|
+
// Escalate to SIGKILL if the process doesn't exit in the grace window.
|
|
782
|
+
setTimeout(() => {
|
|
783
|
+
if (this.activeProcesses.has(executionId)) {
|
|
784
|
+
proc.kill('SIGKILL');
|
|
785
|
+
}
|
|
786
|
+
}, LIFECYCLE_TIMEOUTS.PROCESS_FORCE_KILL_MS).unref?.();
|
|
787
|
+
}
|
|
788
|
+
catch {
|
|
789
|
+
// Process may already be gone.
|
|
790
|
+
}
|
|
791
|
+
};
|
|
792
|
+
if (signal) {
|
|
793
|
+
if (signal.aborted) {
|
|
794
|
+
onAbort();
|
|
795
|
+
}
|
|
796
|
+
else {
|
|
797
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
798
|
+
}
|
|
799
|
+
}
|
|
696
800
|
// Bounded stdout/stderr buffering
|
|
697
801
|
const stdoutChunks = [];
|
|
698
802
|
let stdoutLen = 0;
|
|
@@ -731,8 +835,29 @@ export class DenoExecutor {
|
|
|
731
835
|
proc.on('close', (code) => {
|
|
732
836
|
clearTimeout(timer);
|
|
733
837
|
this.activeProcesses.delete(executionId);
|
|
838
|
+
if (signal) {
|
|
839
|
+
signal.removeEventListener('abort', onAbort);
|
|
840
|
+
}
|
|
734
841
|
const stdout = Buffer.concat(stdoutChunks).toString('utf-8');
|
|
735
842
|
const stderr = Buffer.concat(stderrChunks).toString('utf-8');
|
|
843
|
+
if (cancelled) {
|
|
844
|
+
resolve({
|
|
845
|
+
executionId,
|
|
846
|
+
success: false,
|
|
847
|
+
error: {
|
|
848
|
+
type: 'runtime',
|
|
849
|
+
message: 'Execution cancelled by client',
|
|
850
|
+
},
|
|
851
|
+
logs: [],
|
|
852
|
+
metrics: {
|
|
853
|
+
executionTimeMs: 0,
|
|
854
|
+
toolCalls: 0,
|
|
855
|
+
dataProcessedBytes: 0,
|
|
856
|
+
resultSizeBytes: 0,
|
|
857
|
+
},
|
|
858
|
+
});
|
|
859
|
+
return;
|
|
860
|
+
}
|
|
736
861
|
if (killed) {
|
|
737
862
|
resolve({
|
|
738
863
|
executionId,
|
|
@@ -836,6 +961,13 @@ export class DenoExecutor {
|
|
|
836
961
|
proc.on('error', (error) => {
|
|
837
962
|
clearTimeout(timer);
|
|
838
963
|
this.activeProcesses.delete(executionId);
|
|
964
|
+
// Symmetric with the close handler — without this the abort
|
|
965
|
+
// listener stays attached to the AbortSignal until the SDK GCs
|
|
966
|
+
// the request, leaking closure refs across repeated spawn
|
|
967
|
+
// failures (EAGAIN/EMFILE/ENOENT).
|
|
968
|
+
if (signal) {
|
|
969
|
+
signal.removeEventListener('abort', onAbort);
|
|
970
|
+
}
|
|
839
971
|
// Reset deno check cache on spawn failure
|
|
840
972
|
if (error.message.includes('ENOENT')) {
|
|
841
973
|
this.denoAvailable = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/runtime/executor.ts"],"names":[],"mappings":"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"}
|