@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.
Files changed (293) hide show
  1. package/README.md +35 -5
  2. package/dist/bin/cli.d.ts +20 -0
  3. package/dist/bin/cli.d.ts.map +1 -0
  4. package/dist/bin/cli.js +260 -0
  5. package/dist/bin/cli.js.map +1 -0
  6. package/dist/bridge/http-server.d.ts +65 -1
  7. package/dist/bridge/http-server.d.ts.map +1 -1
  8. package/dist/bridge/http-server.js +192 -7
  9. package/dist/bridge/http-server.js.map +1 -1
  10. package/dist/bridge/index.d.ts +1 -0
  11. package/dist/bridge/index.d.ts.map +1 -1
  12. package/dist/bridge/index.js +1 -0
  13. package/dist/bridge/index.js.map +1 -1
  14. package/dist/bridge/pool.d.ts +95 -0
  15. package/dist/bridge/pool.d.ts.map +1 -0
  16. package/dist/bridge/pool.js +384 -0
  17. package/dist/bridge/pool.js.map +1 -0
  18. package/dist/bridge/session-registry.d.ts +64 -0
  19. package/dist/bridge/session-registry.d.ts.map +1 -0
  20. package/dist/bridge/session-registry.js +124 -0
  21. package/dist/bridge/session-registry.js.map +1 -0
  22. package/dist/cache/cache.d.ts +43 -0
  23. package/dist/cache/cache.d.ts.map +1 -0
  24. package/dist/cache/cache.js +167 -0
  25. package/dist/cache/cache.js.map +1 -0
  26. package/dist/cache/delta.d.ts +32 -0
  27. package/dist/cache/delta.d.ts.map +1 -0
  28. package/dist/cache/delta.js +131 -0
  29. package/dist/cache/delta.js.map +1 -0
  30. package/dist/cache/disk.d.ts +65 -0
  31. package/dist/cache/disk.d.ts.map +1 -0
  32. package/dist/cache/disk.js +238 -0
  33. package/dist/cache/disk.js.map +1 -0
  34. package/dist/cache/index.d.ts +53 -0
  35. package/dist/cache/index.d.ts.map +1 -0
  36. package/dist/cache/index.js +12 -0
  37. package/dist/cache/index.js.map +1 -0
  38. package/dist/cache/key.d.ts +44 -0
  39. package/dist/cache/key.d.ts.map +1 -0
  40. package/dist/cache/key.js +83 -0
  41. package/dist/cache/key.js.map +1 -0
  42. package/dist/cache/lru.d.ts +57 -0
  43. package/dist/cache/lru.d.ts.map +1 -0
  44. package/dist/cache/lru.js +112 -0
  45. package/dist/cache/lru.js.map +1 -0
  46. package/dist/cache/policy.d.ts +34 -0
  47. package/dist/cache/policy.d.ts.map +1 -0
  48. package/dist/cache/policy.js +95 -0
  49. package/dist/cache/policy.js.map +1 -0
  50. package/dist/cli/commands/doctor.d.ts +33 -0
  51. package/dist/cli/commands/doctor.d.ts.map +1 -0
  52. package/dist/cli/commands/doctor.js +135 -0
  53. package/dist/cli/commands/doctor.js.map +1 -0
  54. package/dist/cli/commands/export-servers.d.ts +22 -0
  55. package/dist/cli/commands/export-servers.d.ts.map +1 -0
  56. package/dist/cli/commands/export-servers.js +45 -0
  57. package/dist/cli/commands/export-servers.js.map +1 -0
  58. package/dist/cli/commands/import-servers.d.ts +57 -0
  59. package/dist/cli/commands/import-servers.d.ts.map +1 -0
  60. package/dist/cli/commands/import-servers.js +137 -0
  61. package/dist/cli/commands/import-servers.js.map +1 -0
  62. package/dist/cli/commands/routing.d.ts +34 -0
  63. package/dist/cli/commands/routing.d.ts.map +1 -0
  64. package/dist/cli/commands/routing.js +60 -0
  65. package/dist/cli/commands/routing.js.map +1 -0
  66. package/dist/cli/commands/test-server.d.ts +34 -0
  67. package/dist/cli/commands/test-server.d.ts.map +1 -0
  68. package/dist/cli/commands/test-server.js +86 -0
  69. package/dist/cli/commands/test-server.js.map +1 -0
  70. package/dist/cli/daemon.d.ts +60 -0
  71. package/dist/cli/daemon.d.ts.map +1 -0
  72. package/dist/cli/daemon.js +244 -0
  73. package/dist/cli/daemon.js.map +1 -0
  74. package/dist/cli/replay.d.ts +16 -0
  75. package/dist/cli/replay.d.ts.map +1 -0
  76. package/dist/cli/replay.js +89 -0
  77. package/dist/cli/replay.js.map +1 -0
  78. package/dist/cli/wizard/setup.d.ts +12 -0
  79. package/dist/cli/wizard/setup.d.ts.map +1 -0
  80. package/dist/cli/wizard/setup.js +71 -0
  81. package/dist/cli/wizard/setup.js.map +1 -0
  82. package/dist/config/defaults.d.ts +10 -0
  83. package/dist/config/defaults.d.ts.map +1 -1
  84. package/dist/config/defaults.js +14 -1
  85. package/dist/config/defaults.js.map +1 -1
  86. package/dist/config/schema.d.ts +34 -0
  87. package/dist/config/schema.d.ts.map +1 -1
  88. package/dist/daemon/client.d.ts +97 -0
  89. package/dist/daemon/client.d.ts.map +1 -0
  90. package/dist/daemon/client.js +279 -0
  91. package/dist/daemon/client.js.map +1 -0
  92. package/dist/daemon/discovery.d.ts +50 -0
  93. package/dist/daemon/discovery.d.ts.map +1 -0
  94. package/dist/daemon/discovery.js +104 -0
  95. package/dist/daemon/discovery.js.map +1 -0
  96. package/dist/daemon/index.d.ts +16 -0
  97. package/dist/daemon/index.d.ts.map +1 -0
  98. package/dist/daemon/index.js +11 -0
  99. package/dist/daemon/index.js.map +1 -0
  100. package/dist/daemon/sandbox-api.d.ts +45 -0
  101. package/dist/daemon/sandbox-api.d.ts.map +1 -0
  102. package/dist/daemon/sandbox-api.js +74 -0
  103. package/dist/daemon/sandbox-api.js.map +1 -0
  104. package/dist/daemon/server.d.ts +65 -0
  105. package/dist/daemon/server.d.ts.map +1 -0
  106. package/dist/daemon/server.js +351 -0
  107. package/dist/daemon/server.js.map +1 -0
  108. package/dist/daemon/shared-kv.d.ts +81 -0
  109. package/dist/daemon/shared-kv.d.ts.map +1 -0
  110. package/dist/daemon/shared-kv.js +215 -0
  111. package/dist/daemon/shared-kv.js.map +1 -0
  112. package/dist/daemon/shared-lock.d.ts +71 -0
  113. package/dist/daemon/shared-lock.d.ts.map +1 -0
  114. package/dist/daemon/shared-lock.js +119 -0
  115. package/dist/daemon/shared-lock.js.map +1 -0
  116. package/dist/hub/mcp-hub.d.ts +23 -0
  117. package/dist/hub/mcp-hub.d.ts.map +1 -1
  118. package/dist/hub/mcp-hub.js +34 -1
  119. package/dist/hub/mcp-hub.js.map +1 -1
  120. package/dist/index.js +19 -0
  121. package/dist/index.js.map +1 -1
  122. package/dist/observability/anomaly.d.ts +67 -0
  123. package/dist/observability/anomaly.d.ts.map +1 -0
  124. package/dist/observability/anomaly.js +141 -0
  125. package/dist/observability/anomaly.js.map +1 -0
  126. package/dist/observability/cost-predictor.d.ts +49 -0
  127. package/dist/observability/cost-predictor.d.ts.map +1 -0
  128. package/dist/observability/cost-predictor.js +145 -0
  129. package/dist/observability/cost-predictor.js.map +1 -0
  130. package/dist/observability/hot-path.d.ts +49 -0
  131. package/dist/observability/hot-path.d.ts.map +1 -0
  132. package/dist/observability/hot-path.js +125 -0
  133. package/dist/observability/hot-path.js.map +1 -0
  134. package/dist/observability/index.d.ts +10 -0
  135. package/dist/observability/index.d.ts.map +1 -0
  136. package/dist/observability/index.js +10 -0
  137. package/dist/observability/index.js.map +1 -0
  138. package/dist/observability/replay.d.ts +104 -0
  139. package/dist/observability/replay.d.ts.map +1 -0
  140. package/dist/observability/replay.js +239 -0
  141. package/dist/observability/replay.js.map +1 -0
  142. package/dist/registry/built-in-recommendations.d.ts +54 -0
  143. package/dist/registry/built-in-recommendations.d.ts.map +1 -0
  144. package/dist/registry/built-in-recommendations.js +65 -0
  145. package/dist/registry/built-in-recommendations.js.map +1 -0
  146. package/dist/registry/events.d.ts +26 -0
  147. package/dist/registry/events.d.ts.map +1 -0
  148. package/dist/registry/events.js +22 -0
  149. package/dist/registry/events.js.map +1 -0
  150. package/dist/registry/index.d.ts +159 -0
  151. package/dist/registry/index.d.ts.map +1 -0
  152. package/dist/registry/index.js +12 -0
  153. package/dist/registry/index.js.map +1 -0
  154. package/dist/registry/registry.d.ts +87 -0
  155. package/dist/registry/registry.d.ts.map +1 -0
  156. package/dist/registry/registry.js +294 -0
  157. package/dist/registry/registry.js.map +1 -0
  158. package/dist/registry/snapshot.d.ts +42 -0
  159. package/dist/registry/snapshot.d.ts.map +1 -0
  160. package/dist/registry/snapshot.js +71 -0
  161. package/dist/registry/snapshot.js.map +1 -0
  162. package/dist/registry/typegen.d.ts +48 -0
  163. package/dist/registry/typegen.d.ts.map +1 -0
  164. package/dist/registry/typegen.js +200 -0
  165. package/dist/registry/typegen.js.map +1 -0
  166. package/dist/registry/validator.d.ts +23 -0
  167. package/dist/registry/validator.d.ts.map +1 -0
  168. package/dist/registry/validator.js +50 -0
  169. package/dist/registry/validator.js.map +1 -0
  170. package/dist/reliability/breaker.d.ts +57 -0
  171. package/dist/reliability/breaker.d.ts.map +1 -0
  172. package/dist/reliability/breaker.js +130 -0
  173. package/dist/reliability/breaker.js.map +1 -0
  174. package/dist/reliability/errors.d.ts +78 -0
  175. package/dist/reliability/errors.d.ts.map +1 -0
  176. package/dist/reliability/errors.js +160 -0
  177. package/dist/reliability/errors.js.map +1 -0
  178. package/dist/reliability/gateway.d.ts +88 -0
  179. package/dist/reliability/gateway.d.ts.map +1 -0
  180. package/dist/reliability/gateway.js +180 -0
  181. package/dist/reliability/gateway.js.map +1 -0
  182. package/dist/reliability/index.d.ts +20 -0
  183. package/dist/reliability/index.d.ts.map +1 -0
  184. package/dist/reliability/index.js +16 -0
  185. package/dist/reliability/index.js.map +1 -0
  186. package/dist/reliability/profile.d.ts +49 -0
  187. package/dist/reliability/profile.d.ts.map +1 -0
  188. package/dist/reliability/profile.js +58 -0
  189. package/dist/reliability/profile.js.map +1 -0
  190. package/dist/reliability/retry.d.ts +39 -0
  191. package/dist/reliability/retry.d.ts.map +1 -0
  192. package/dist/reliability/retry.js +51 -0
  193. package/dist/reliability/retry.js.map +1 -0
  194. package/dist/reliability/timeout.d.ts +34 -0
  195. package/dist/reliability/timeout.d.ts.map +1 -0
  196. package/dist/reliability/timeout.js +53 -0
  197. package/dist/reliability/timeout.js.map +1 -0
  198. package/dist/runtime/executor.d.ts +12 -0
  199. package/dist/runtime/executor.d.ts.map +1 -1
  200. package/dist/runtime/executor.js +148 -16
  201. package/dist/runtime/executor.js.map +1 -1
  202. package/dist/runtime/findtool/embed.d.ts +28 -0
  203. package/dist/runtime/findtool/embed.d.ts.map +1 -0
  204. package/dist/runtime/findtool/embed.js +85 -0
  205. package/dist/runtime/findtool/embed.js.map +1 -0
  206. package/dist/runtime/findtool/index.d.ts +52 -0
  207. package/dist/runtime/findtool/index.d.ts.map +1 -0
  208. package/dist/runtime/findtool/index.js +78 -0
  209. package/dist/runtime/findtool/index.js.map +1 -0
  210. package/dist/runtime/findtool/vector-index.d.ts +53 -0
  211. package/dist/runtime/findtool/vector-index.d.ts.map +1 -0
  212. package/dist/runtime/findtool/vector-index.js +71 -0
  213. package/dist/runtime/findtool/vector-index.js.map +1 -0
  214. package/dist/runtime/helpers/budget.d.ts +27 -0
  215. package/dist/runtime/helpers/budget.d.ts.map +1 -0
  216. package/dist/runtime/helpers/budget.js +103 -0
  217. package/dist/runtime/helpers/budget.js.map +1 -0
  218. package/dist/runtime/helpers/compact.d.ts +32 -0
  219. package/dist/runtime/helpers/compact.d.ts.map +1 -0
  220. package/dist/runtime/helpers/compact.js +93 -0
  221. package/dist/runtime/helpers/compact.js.map +1 -0
  222. package/dist/runtime/helpers/delta.d.ts +45 -0
  223. package/dist/runtime/helpers/delta.d.ts.map +1 -0
  224. package/dist/runtime/helpers/delta.js +116 -0
  225. package/dist/runtime/helpers/delta.js.map +1 -0
  226. package/dist/runtime/helpers/index.d.ts +16 -0
  227. package/dist/runtime/helpers/index.d.ts.map +1 -0
  228. package/dist/runtime/helpers/index.js +13 -0
  229. package/dist/runtime/helpers/index.js.map +1 -0
  230. package/dist/runtime/helpers/summarize.d.ts +24 -0
  231. package/dist/runtime/helpers/summarize.d.ts.map +1 -0
  232. package/dist/runtime/helpers/summarize.js +124 -0
  233. package/dist/runtime/helpers/summarize.js.map +1 -0
  234. package/dist/runtime/helpers/worker-preload.d.ts +25 -0
  235. package/dist/runtime/helpers/worker-preload.d.ts.map +1 -0
  236. package/dist/runtime/helpers/worker-preload.js +223 -0
  237. package/dist/runtime/helpers/worker-preload.js.map +1 -0
  238. package/dist/runtime/index.d.ts +1 -0
  239. package/dist/runtime/index.d.ts.map +1 -1
  240. package/dist/runtime/index.js +1 -0
  241. package/dist/runtime/index.js.map +1 -1
  242. package/dist/runtime/pool/index.d.ts +11 -0
  243. package/dist/runtime/pool/index.d.ts.map +1 -0
  244. package/dist/runtime/pool/index.js +8 -0
  245. package/dist/runtime/pool/index.js.map +1 -0
  246. package/dist/runtime/pool/recycle.d.ts +44 -0
  247. package/dist/runtime/pool/recycle.d.ts.map +1 -0
  248. package/dist/runtime/pool/recycle.js +50 -0
  249. package/dist/runtime/pool/recycle.js.map +1 -0
  250. package/dist/runtime/pool/worker-pool.d.ts +77 -0
  251. package/dist/runtime/pool/worker-pool.d.ts.map +1 -0
  252. package/dist/runtime/pool/worker-pool.js +216 -0
  253. package/dist/runtime/pool/worker-pool.js.map +1 -0
  254. package/dist/runtime/pool/worker.d.ts +80 -0
  255. package/dist/runtime/pool/worker.d.ts.map +1 -0
  256. package/dist/runtime/pool/worker.js +324 -0
  257. package/dist/runtime/pool/worker.js.map +1 -0
  258. package/dist/server/mcp-server.d.ts +6 -0
  259. package/dist/server/mcp-server.d.ts.map +1 -1
  260. package/dist/server/mcp-server.js +610 -45
  261. package/dist/server/mcp-server.js.map +1 -1
  262. package/dist/server/passthrough-registrar.d.ts +73 -0
  263. package/dist/server/passthrough-registrar.d.ts.map +1 -0
  264. package/dist/server/passthrough-registrar.js +110 -0
  265. package/dist/server/passthrough-registrar.js.map +1 -0
  266. package/dist/skills/skills-engine.d.ts +9 -1
  267. package/dist/skills/skills-engine.d.ts.map +1 -1
  268. package/dist/skills/skills-engine.js +20 -3
  269. package/dist/skills/skills-engine.js.map +1 -1
  270. package/dist/utils/index.d.ts +3 -0
  271. package/dist/utils/index.d.ts.map +1 -1
  272. package/dist/utils/index.js +3 -0
  273. package/dist/utils/index.js.map +1 -1
  274. package/dist/utils/logger.d.ts.map +1 -1
  275. package/dist/utils/logger.js +5 -1
  276. package/dist/utils/logger.js.map +1 -1
  277. package/dist/utils/orphan-watch.d.ts +34 -0
  278. package/dist/utils/orphan-watch.d.ts.map +1 -0
  279. package/dist/utils/orphan-watch.js +54 -0
  280. package/dist/utils/orphan-watch.js.map +1 -0
  281. package/dist/utils/redact.d.ts +15 -0
  282. package/dist/utils/redact.d.ts.map +1 -0
  283. package/dist/utils/redact.js +48 -0
  284. package/dist/utils/redact.js.map +1 -0
  285. package/dist/utils/tokenize.d.ts +55 -0
  286. package/dist/utils/tokenize.d.ts.map +1 -0
  287. package/dist/utils/tokenize.js +205 -0
  288. package/dist/utils/tokenize.js.map +1 -0
  289. package/dist/version.d.ts +3 -3
  290. package/dist/version.d.ts.map +1 -1
  291. package/dist/version.js +3 -3
  292. package/dist/version.js.map +1 -1
  293. 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;CAClB;AA+aD;;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;IA6DhF;;OAEG;IACH,mBAAmB,IAAI,MAAM;IAI7B;;OAEG;IACH,OAAO,CAAC,OAAO;CAmQhB"}
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"}
@@ -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
- * @param calls Array of { server, tool, params } objects
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<{ server: string; tool: string; params?: Record<string, unknown> }>,
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
- const { maxParallel = calls.length, retryDelayMs = 1100, forceParallel = false } = options;
256
- const results: T[] = new Array(calls.length);
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 calls) {
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 && calls.some(c => __rateLimits[c.server]?.detected);
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 < calls.length; i++) {
272
- const { server, tool, params = {} } = calls[i];
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
- calls.map(async ({ server, tool, params = {} }) => {
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[calls[i].server] = {
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: \${calls[i].server} - Free tier limit hit. Retrying with delays...\`);
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 = {} } = calls[idx];
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 ?? 5;
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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"}