@mcpmesh/sdk 2.3.0 → 2.4.0

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 (77) hide show
  1. package/dist/__tests__/llm-agent-model-params.test.js +83 -0
  2. package/dist/__tests__/llm-agent-model-params.test.js.map +1 -1
  3. package/dist/__tests__/llm-max-iterations.test.d.ts +20 -0
  4. package/dist/__tests__/llm-max-iterations.test.d.ts.map +1 -0
  5. package/dist/__tests__/llm-max-iterations.test.js +250 -0
  6. package/dist/__tests__/llm-max-iterations.test.js.map +1 -0
  7. package/dist/__tests__/llm-mesh-error-mapping.test.d.ts +16 -0
  8. package/dist/__tests__/llm-mesh-error-mapping.test.d.ts.map +1 -0
  9. package/dist/__tests__/llm-mesh-error-mapping.test.js +135 -0
  10. package/dist/__tests__/llm-mesh-error-mapping.test.js.map +1 -0
  11. package/dist/__tests__/llm-provider-output-mode.test.d.ts +21 -0
  12. package/dist/__tests__/llm-provider-output-mode.test.d.ts.map +1 -0
  13. package/dist/__tests__/llm-provider-output-mode.test.js +115 -0
  14. package/dist/__tests__/llm-provider-output-mode.test.js.map +1 -0
  15. package/dist/__tests__/llm-provider-system-synthesis.test.d.ts +20 -0
  16. package/dist/__tests__/llm-provider-system-synthesis.test.d.ts.map +1 -0
  17. package/dist/__tests__/llm-provider-system-synthesis.test.js +167 -0
  18. package/dist/__tests__/llm-provider-system-synthesis.test.js.map +1 -0
  19. package/dist/__tests__/llm-response-model.test.d.ts +10 -0
  20. package/dist/__tests__/llm-response-model.test.d.ts.map +1 -0
  21. package/dist/__tests__/llm-response-model.test.js +92 -0
  22. package/dist/__tests__/llm-response-model.test.js.map +1 -0
  23. package/dist/__tests__/proxy-timeout-guard.test.d.ts +12 -0
  24. package/dist/__tests__/proxy-timeout-guard.test.d.ts.map +1 -0
  25. package/dist/__tests__/proxy-timeout-guard.test.js +85 -0
  26. package/dist/__tests__/proxy-timeout-guard.test.js.map +1 -0
  27. package/dist/__tests__/registry-disconnect-retains-deps.spec.d.ts +2 -0
  28. package/dist/__tests__/registry-disconnect-retains-deps.spec.d.ts.map +1 -0
  29. package/dist/__tests__/registry-disconnect-retains-deps.spec.js +101 -0
  30. package/dist/__tests__/registry-disconnect-retains-deps.spec.js.map +1 -0
  31. package/dist/__tests__/response-parser.test.js +29 -0
  32. package/dist/__tests__/response-parser.test.js.map +1 -1
  33. package/dist/agent.d.ts.map +1 -1
  34. package/dist/agent.js +4 -0
  35. package/dist/agent.js.map +1 -1
  36. package/dist/api-runtime.d.ts.map +1 -1
  37. package/dist/api-runtime.js +8 -1
  38. package/dist/api-runtime.js.map +1 -1
  39. package/dist/express.d.ts.map +1 -1
  40. package/dist/express.js +8 -1
  41. package/dist/express.js.map +1 -1
  42. package/dist/llm-agent.d.ts +34 -0
  43. package/dist/llm-agent.d.ts.map +1 -1
  44. package/dist/llm-agent.js +239 -434
  45. package/dist/llm-agent.js.map +1 -1
  46. package/dist/llm-provider.d.ts +33 -4
  47. package/dist/llm-provider.d.ts.map +1 -1
  48. package/dist/llm-provider.js +91 -4
  49. package/dist/llm-provider.js.map +1 -1
  50. package/dist/llm.d.ts +1 -1
  51. package/dist/llm.d.ts.map +1 -1
  52. package/dist/llm.js +8 -5
  53. package/dist/llm.js.map +1 -1
  54. package/dist/provider-handlers/gemini-handler.d.ts.map +1 -1
  55. package/dist/provider-handlers/gemini-handler.js +2 -14
  56. package/dist/provider-handlers/gemini-handler.js.map +1 -1
  57. package/dist/provider-handlers/openai-handler.d.ts.map +1 -1
  58. package/dist/provider-handlers/openai-handler.js +2 -15
  59. package/dist/provider-handlers/openai-handler.js.map +1 -1
  60. package/dist/provider-handlers/provider-handler.d.ts +12 -0
  61. package/dist/provider-handlers/provider-handler.d.ts.map +1 -1
  62. package/dist/provider-handlers/provider-handler.js +24 -0
  63. package/dist/provider-handlers/provider-handler.js.map +1 -1
  64. package/dist/proxy.d.ts.map +1 -1
  65. package/dist/proxy.js +189 -254
  66. package/dist/proxy.js.map +1 -1
  67. package/dist/response-parser.d.ts +10 -0
  68. package/dist/response-parser.d.ts.map +1 -1
  69. package/dist/response-parser.js +55 -0
  70. package/dist/response-parser.js.map +1 -1
  71. package/dist/tracing.d.ts +12 -0
  72. package/dist/tracing.d.ts.map +1 -1
  73. package/dist/tracing.js +37 -0
  74. package/dist/tracing.js.map +1 -1
  75. package/dist/types.d.ts +10 -2
  76. package/dist/types.d.ts.map +1 -1
  77. package/package.json +2 -2
package/dist/proxy.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { AsyncLocalStorage } from "node:async_hooks";
7
7
  import { zodToJsonSchema } from "zod-to-json-schema";
8
- import { generateSpanId, publishTraceSpan, createTraceHeaders, matchesPropagateHeader, injectTraceContext, } from "./tracing.js";
8
+ import { generateSpanId, publishTraceSpan, createTraceHeaders, matchesPropagateHeader, injectTraceAndHeaders, } from "./tracing.js";
9
9
  import { isTimeoutError } from "./timeout-utils.js";
10
10
  import { getDispatcher } from "./http-pool.js";
11
11
  import { currentJob } from "./job-context.js";
@@ -162,19 +162,29 @@ export function createProxy(endpoint, capability, functionName, kwargs) {
162
162
  return proxyFn;
163
163
  }
164
164
  /**
165
- * Call an MCP tool via HTTP POST.
165
+ * Build the shared MCP `tools/call` request setup used by both the buffered
166
+ * (`callMcpTool`) and streaming (`streamMcpTool`) paths.
166
167
  *
167
- * Uses the MCP HTTP Streamable protocol:
168
- * POST /mcp with JSON-RPC 2.0 payload.
169
- * Includes distributed tracing: propagates trace context and publishes spans.
168
+ * Handles endpoint normalization, trace-context capture, merged-header build,
169
+ * fallback trace injection, payload assembly, effective-timeout resolution and
170
+ * header assembly. The streaming caller passes `opts.progressToken` so the
171
+ * payload gets `params._meta.progressToken` (the buffered caller omits it).
172
+ *
173
+ * Header insertion order is byte-identical to the pre-extraction code:
174
+ * customHeaders → Content-Type/Accept → trace headers → mergedHeaders →
175
+ * conditional X-Mesh-Timeout.
176
+ *
177
+ * `defaultTimeout` is the per-path fallback applied when the resolved timeout is
178
+ * non-positive (DEFAULT_CALL_OPTIONS.timeout for buffered,
179
+ * DEFAULT_CALL_OPTIONS.streamTimeout for stream).
170
180
  */
171
- export async function callMcpTool(endpoint, toolName, args, options, capability, extraHeaders) {
181
+ function buildMcpRequest(endpoint, toolName, args, options, extraHeaders, defaultTimeout, opts) {
172
182
  // Ensure endpoint ends with /mcp
173
183
  const mcpEndpoint = endpoint.endsWith("/mcp")
174
184
  ? endpoint
175
185
  : `${endpoint.replace(/\/$/, "")}/mcp`;
176
- // Tracing: create span for this outgoing proxy call
177
- // Use AsyncLocalStorage to get trace context for the current async execution
186
+ // Tracing: create span for this outgoing proxy call.
187
+ // Use AsyncLocalStorage to get trace context for the current async execution.
178
188
  const traceCtx = getCurrentTraceContext();
179
189
  const spanId = traceCtx ? generateSpanId() : null;
180
190
  const startTime = Date.now() / 1000;
@@ -188,32 +198,8 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
188
198
  }
189
199
  }
190
200
  }
191
- // Build arguments with trace context injection via Rust core
192
- let argsWithTrace;
193
- if (traceCtx && spanId) {
194
- try {
195
- const argsJson = JSON.stringify(args ?? {});
196
- const headersJson = Object.keys(mergedHeaders).length > 0 ? JSON.stringify(mergedHeaders) : undefined;
197
- const injectedJson = injectTraceContext(argsJson, traceCtx.traceId, spanId, headersJson);
198
- argsWithTrace = JSON.parse(injectedJson);
199
- }
200
- catch {
201
- // Fallback to manual injection
202
- argsWithTrace = { ...(args ?? {}) };
203
- argsWithTrace._trace_id = traceCtx.traceId;
204
- argsWithTrace._parent_span = spanId;
205
- if (Object.keys(mergedHeaders).length > 0) {
206
- argsWithTrace._mesh_headers = mergedHeaders;
207
- }
208
- }
209
- }
210
- else {
211
- argsWithTrace = { ...(args ?? {}) };
212
- // Still inject propagated headers even without trace context
213
- if (Object.keys(mergedHeaders).length > 0) {
214
- argsWithTrace._mesh_headers = mergedHeaders;
215
- }
216
- }
201
+ // Build arguments with trace context injection (Rust core, manual fallback)
202
+ const argsWithTrace = injectTraceAndHeaders(args ?? {}, traceCtx, spanId, mergedHeaders);
217
203
  const payload = {
218
204
  jsonrpc: "2.0",
219
205
  id: generateRequestId(),
@@ -221,6 +207,7 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
221
207
  params: {
222
208
  name: toolName,
223
209
  arguments: argsWithTrace,
210
+ ...(opts?.progressToken ? { _meta: { progressToken: opts.progressToken } } : {}),
224
211
  },
225
212
  };
226
213
  // Use X-Mesh-Timeout from propagated headers to override client timeout (#769).
@@ -234,57 +221,82 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
234
221
  effectiveTimeout = meshTimeoutMs;
235
222
  }
236
223
  }
237
- let lastError = null;
224
+ // A partial caller options object (or a caller passing timeout<=0) could leave
225
+ // this undefined or non-positive — that would cause setTimeout to fire on the
226
+ // next tick and abort the call immediately. Fall back to the path default.
227
+ if (typeof effectiveTimeout !== "number" || effectiveTimeout <= 0) {
228
+ effectiveTimeout = defaultTimeout;
229
+ }
238
230
  const bodyStr = JSON.stringify(payload);
239
231
  const requestBytes = Buffer.byteLength(bodyStr, "utf8");
232
+ // Build headers: custom headers first, then protocol-required headers override.
233
+ // FastMCP stateless HTTP requires BOTH content types in Accept (it returns SSE
234
+ // for streaming responses; missing application/json yields 406 Not Acceptable).
235
+ const headers = {
236
+ ...(options.customHeaders ?? {}),
237
+ "Content-Type": "application/json",
238
+ Accept: "application/json, text/event-stream",
239
+ };
240
+ // Propagate trace context (higher priority)
241
+ if (traceCtx && spanId) {
242
+ Object.assign(headers, createTraceHeaders(traceCtx.traceId, spanId));
243
+ }
244
+ // Inject merged headers (highest priority)
245
+ for (const [key, value] of Object.entries(mergedHeaders)) {
246
+ headers[key] = value;
247
+ }
248
+ // Set X-Mesh-Timeout for registry proxy (#769). If already propagated, keep it.
249
+ if (!headers["X-Mesh-Timeout"] && !headers["x-mesh-timeout"]) {
250
+ const callTimeout = process.env.MCP_MESH_CALL_TIMEOUT || String(Math.floor(options.timeout / 1000));
251
+ headers["X-Mesh-Timeout"] = callTimeout;
252
+ }
253
+ return { mcpEndpoint, bodyStr, requestId: payload.id, requestBytes, headers, effectiveTimeout, traceCtx, spanId, startTime };
254
+ }
255
+ /**
256
+ * Wire per-job cancel propagation (#886) onto an outbound AbortController.
257
+ *
258
+ * When the handler executing this outbound call is running under a MeshJob
259
+ * context AND the registry forwards a cancel via POST /jobs/{id}/cancel, fire
260
+ * the outbound AbortController so in-flight fetch is cancelled instead of
261
+ * stalling on socket reads. Fire-and-forget — the listener races against fetch
262
+ * completion / timeout; whichever wins, the others become no-ops
263
+ * (`controller.abort()` is idempotent and the dangling Promise resolves
264
+ * immediately once the registry entry is gone).
265
+ */
266
+ function wireJobCancel(controller) {
267
+ const jobSnap = currentJob();
268
+ if (jobSnap?.jobId) {
269
+ awaitJobCancel(jobSnap.jobId)
270
+ .then(() => {
271
+ if (!controller.signal.aborted) {
272
+ controller.abort();
273
+ }
274
+ })
275
+ .catch(() => {
276
+ // Defensive: napi rejection here would be unusual (the Rust
277
+ // implementation only awaits a CancellationToken), but a
278
+ // runtime shutdown mid-await could surface one. Swallow —
279
+ // the worst case is that the outbound fetch isn't proactively
280
+ // aborted, and the existing timeout / fetch-completion path
281
+ // still applies.
282
+ });
283
+ }
284
+ }
285
+ /**
286
+ * Call an MCP tool via HTTP POST.
287
+ *
288
+ * Uses the MCP HTTP Streamable protocol:
289
+ * POST /mcp with JSON-RPC 2.0 payload.
290
+ * Includes distributed tracing: propagates trace context and publishes spans.
291
+ */
292
+ export async function callMcpTool(endpoint, toolName, args, options, capability, extraHeaders) {
293
+ const { mcpEndpoint, bodyStr, requestBytes, headers, effectiveTimeout, traceCtx, spanId, startTime, } = buildMcpRequest(endpoint, toolName, args, options, extraHeaders, DEFAULT_CALL_OPTIONS.timeout);
294
+ let lastError = null;
240
295
  for (let attempt = 0; attempt < options.maxAttempts; attempt++) {
241
296
  try {
242
297
  const controller = new AbortController();
243
298
  const timeoutId = setTimeout(() => controller.abort(), effectiveTimeout);
244
- // Wire per-job cancel propagation (#886). When the handler executing
245
- // this outbound call is running under a MeshJob context AND the
246
- // registry forwards a cancel via POST /jobs/{id}/cancel, fire the
247
- // outbound AbortController so in-flight fetch is cancelled instead
248
- // of stalling on socket reads. Fire-and-forget — the listener races
249
- // against fetch completion / timeout; whichever wins, the others
250
- // become no-ops (`controller.abort()` is idempotent and the dangling
251
- // Promise resolves immediately once the registry entry is gone).
252
- const jobSnap = currentJob();
253
- if (jobSnap?.jobId) {
254
- awaitJobCancel(jobSnap.jobId)
255
- .then(() => {
256
- if (!controller.signal.aborted) {
257
- controller.abort();
258
- }
259
- })
260
- .catch(() => {
261
- // Defensive: napi rejection here would be unusual (the Rust
262
- // implementation only awaits a CancellationToken), but a
263
- // runtime shutdown mid-await could surface one. Swallow —
264
- // the worst case is that the outbound fetch isn't proactively
265
- // aborted, and the existing timeout / fetch-completion path
266
- // still applies.
267
- });
268
- }
269
- // Build headers: custom headers first, then protocol-required headers override
270
- const headers = {
271
- ...(options.customHeaders ?? {}),
272
- "Content-Type": "application/json",
273
- Accept: "application/json, text/event-stream",
274
- };
275
- // Propagate trace context (higher priority)
276
- if (traceCtx && spanId) {
277
- Object.assign(headers, createTraceHeaders(traceCtx.traceId, spanId));
278
- }
279
- // Inject merged headers (highest priority)
280
- for (const [key, value] of Object.entries(mergedHeaders)) {
281
- headers[key] = value;
282
- }
283
- // Set X-Mesh-Timeout for registry proxy (#769). If already propagated, keep it.
284
- if (!headers["X-Mesh-Timeout"] && !headers["x-mesh-timeout"]) {
285
- const callTimeout = process.env.MCP_MESH_CALL_TIMEOUT || String(Math.floor(options.timeout / 1000));
286
- headers["X-Mesh-Timeout"] = callTimeout;
287
- }
299
+ wireJobCancel(controller);
288
300
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
289
301
  const fetchOptions = {
290
302
  method: "POST",
@@ -310,7 +322,7 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
310
322
  const contentType = response.headers.get("content-type") ?? "";
311
323
  // Handle SSE streaming response
312
324
  if (contentType.includes("text/event-stream")) {
313
- const sseResult = await parseSSEResponse(response);
325
+ const sseResult = await readSSEResponseToContent(response);
314
326
  // Estimate response size from content-length header (exact size not available for SSE)
315
327
  const sseResponseBytes = contentLength > 0 ? contentLength : undefined;
316
328
  // Publish success span
@@ -327,6 +339,17 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
327
339
  publishProxySpan(traceCtx, spanId, startTime, toolName, capability, endpoint, false, errorMsg, "error", requestBytes, responseBytes);
328
340
  throw new Error(`MCP error: ${errorMsg}`);
329
341
  }
342
+ // Surface tool-level errors. An MCP CallToolResult with isError === true
343
+ // carries the failure message in its content; the JSON-RPC envelope above
344
+ // is success in that case. Throw so callers (LLM provider, tool proxy)
345
+ // re-wrap it instead of returning the error text as a successful result.
346
+ const innerResult = result.result;
347
+ if (innerResult && typeof innerResult === "object" && innerResult.isError === true) {
348
+ const toolErr = extractContent(innerResult);
349
+ const toolErrMsg = typeof toolErr === "string" ? toolErr : JSON.stringify(toolErr);
350
+ publishProxySpan(traceCtx, spanId, startTime, toolName, capability, endpoint, false, toolErrMsg, "error", requestBytes, responseBytes);
351
+ throw new Error(`MCP tool error: ${toolErrMsg}`);
352
+ }
330
353
  // Extract content from result
331
354
  const content = extractContent(result.result);
332
355
  // Publish success span
@@ -376,120 +399,17 @@ export async function callMcpTool(endpoint, toolName, args, options, capability,
376
399
  * ``fetch`` is aborted via ``AbortController`` and the reader is released.
377
400
  */
378
401
  export async function* streamMcpTool(endpoint, toolName, args, options, capability, extraHeaders) {
379
- // Ensure endpoint ends with /mcp
380
- const mcpEndpoint = endpoint.endsWith("/mcp")
381
- ? endpoint
382
- : `${endpoint.replace(/\/$/, "")}/mcp`;
383
- // Tracing: create span for this outgoing proxy stream call
384
- const traceCtx = getCurrentTraceContext();
385
- const spanId = traceCtx ? generateSpanId() : null;
386
- const startTime = Date.now() / 1000;
387
- // Build merged headers: session propagated + per-call (per-call wins, filtered by allowlist)
388
- const propagatedHeaders = getCurrentPropagatedHeaders();
389
- const mergedHeaders = { ...propagatedHeaders };
390
- if (extraHeaders) {
391
- for (const [key, value] of Object.entries(extraHeaders)) {
392
- if (matchesPropagateHeader(key)) {
393
- mergedHeaders[key.toLowerCase()] = value;
394
- }
395
- }
396
- }
397
- // Build arguments with trace context injection via Rust core
398
- let argsWithTrace;
399
- if (traceCtx && spanId) {
400
- try {
401
- const argsJson = JSON.stringify(args ?? {});
402
- const headersJson = Object.keys(mergedHeaders).length > 0 ? JSON.stringify(mergedHeaders) : undefined;
403
- const injectedJson = injectTraceContext(argsJson, traceCtx.traceId, spanId, headersJson);
404
- argsWithTrace = JSON.parse(injectedJson);
405
- }
406
- catch {
407
- argsWithTrace = { ...(args ?? {}) };
408
- argsWithTrace._trace_id = traceCtx.traceId;
409
- argsWithTrace._parent_span = spanId;
410
- if (Object.keys(mergedHeaders).length > 0) {
411
- argsWithTrace._mesh_headers = mergedHeaders;
412
- }
413
- }
414
- }
415
- else {
416
- argsWithTrace = { ...(args ?? {}) };
417
- if (Object.keys(mergedHeaders).length > 0) {
418
- argsWithTrace._mesh_headers = mergedHeaders;
419
- }
420
- }
421
- // Generate progress token to correlate notifications with this call
402
+ // Generate progress token to correlate notifications with this call.
403
+ // The request id comes back from buildMcpRequest (it built the payload) so the
404
+ // final-result matching below stays in sync with the wire id.
422
405
  const progressToken = generateProgressToken();
423
- const requestId = generateRequestId();
424
- const payload = {
425
- jsonrpc: "2.0",
426
- id: requestId,
427
- method: "tools/call",
428
- params: {
429
- name: toolName,
430
- arguments: argsWithTrace,
431
- _meta: { progressToken },
432
- },
433
- };
434
- // Use X-Mesh-Timeout from propagated headers to override client timeout (#769)
435
- let effectiveTimeout = options.timeout;
436
- const meshTimeoutStr = mergedHeaders["x-mesh-timeout"];
437
- if (meshTimeoutStr) {
438
- const meshTimeoutMs = parseInt(meshTimeoutStr, 10) * 1000;
439
- if (!isNaN(meshTimeoutMs) && meshTimeoutMs > 0) {
440
- effectiveTimeout = meshTimeoutMs;
441
- }
442
- }
443
- // Stream timeout defaults are usually generous (300s) but a partial caller
444
- // options object could leave this undefined or non-positive — that would
445
- // cause setTimeout to fire on next tick and abort the stream immediately.
446
- // Fall back to the buffered call default in that case.
447
- if (typeof effectiveTimeout !== "number" || effectiveTimeout <= 0) {
448
- effectiveTimeout = DEFAULT_CALL_OPTIONS.streamTimeout;
449
- }
450
- const bodyStr = JSON.stringify(payload);
451
- const requestBytes = Buffer.byteLength(bodyStr, "utf8");
406
+ const { mcpEndpoint, bodyStr, requestId, requestBytes, headers, effectiveTimeout, traceCtx, spanId, startTime, } = buildMcpRequest(endpoint, toolName, args, options, extraHeaders, DEFAULT_CALL_OPTIONS.streamTimeout, { progressToken });
452
407
  const controller = new AbortController();
453
408
  const timeoutId = setTimeout(() => controller.abort(), effectiveTimeout);
454
- // Wire per-job cancel propagation (#886). See callMcpTool above for
455
- // rationale; same pattern applied to the streaming path so a cancel
456
- // arriving mid-stream aborts the SSE reader instead of waiting for
457
- // the next chunk / streamTimeout (default 300s).
458
- const jobSnap = currentJob();
459
- if (jobSnap?.jobId) {
460
- awaitJobCancel(jobSnap.jobId)
461
- .then(() => {
462
- if (!controller.signal.aborted) {
463
- controller.abort();
464
- }
465
- })
466
- .catch(() => {
467
- // Defensive: napi rejection here would be unusual (the Rust
468
- // implementation only awaits a CancellationToken), but a
469
- // runtime shutdown mid-await could surface one. Swallow — the
470
- // worst case is that the outbound fetch isn't proactively
471
- // aborted, and the existing timeout / fetch-completion path
472
- // still applies.
473
- });
474
- }
475
- // Build headers — FastMCP stateless HTTP requires BOTH content types in
476
- // Accept (it returns SSE for streaming responses; missing application/json
477
- // here yields 406 Not Acceptable). Matches the buffered callMcpTool path.
478
- const headers = {
479
- ...(options.customHeaders ?? {}),
480
- "Content-Type": "application/json",
481
- Accept: "application/json, text/event-stream",
482
- };
483
- if (traceCtx && spanId) {
484
- Object.assign(headers, createTraceHeaders(traceCtx.traceId, spanId));
485
- }
486
- for (const [key, value] of Object.entries(mergedHeaders)) {
487
- headers[key] = value;
488
- }
489
- if (!headers["X-Mesh-Timeout"] && !headers["x-mesh-timeout"]) {
490
- const callTimeout = process.env.MCP_MESH_CALL_TIMEOUT || String(Math.floor(options.timeout / 1000));
491
- headers["X-Mesh-Timeout"] = callTimeout;
492
- }
409
+ // Wire per-job cancel propagation (#886) same pattern as callMcpTool so a
410
+ // cancel arriving mid-stream aborts the SSE reader instead of waiting for the
411
+ // next chunk / streamTimeout (default 300s).
412
+ wireJobCancel(controller);
493
413
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
494
414
  const fetchOptions = {
495
415
  method: "POST",
@@ -522,70 +442,39 @@ export async function* streamMcpTool(endpoint, toolName, args, options, capabili
522
442
  throw new Error(`MCP stream call: expected text/event-stream response, got: ${sseContentType || "<no Content-Type header>"}`);
523
443
  }
524
444
  reader = response.body.getReader();
525
- const decoder = new TextDecoder();
526
- let buffer = "";
527
- let streamDone = false;
528
- while (!streamDone) {
529
- const { done, value } = await reader.read();
530
- if (done)
531
- break;
532
- // Normalize CRLF to LF so the same parser handles either line ending
533
- buffer += decoder.decode(value, { stream: true }).replace(/\r\n/g, "\n");
534
- // SSE events are separated by blank lines (\n\n)
535
- let sep;
536
- while ((sep = buffer.indexOf("\n\n")) !== -1) {
537
- const rawEvent = buffer.slice(0, sep);
538
- buffer = buffer.slice(sep + 2);
539
- // Collect data: lines from this event (per spec, multi-line data joined by \n)
540
- const dataLines = [];
541
- for (const line of rawEvent.split("\n")) {
542
- if (line.startsWith("data: ")) {
543
- dataLines.push(line.slice(6));
544
- }
545
- else if (line.startsWith("data:")) {
546
- // Allow "data:" with no space (defensive)
547
- dataLines.push(line.slice(5));
548
- }
549
- }
550
- if (dataLines.length === 0)
551
- continue;
552
- const data = dataLines.join("\n");
553
- if (!data)
554
- continue;
555
- // Parse the JSON-RPC message
556
- let msg;
557
- try {
558
- msg = JSON.parse(data);
559
- }
560
- catch {
561
- // Ignore non-JSON data events (defensive)
562
- continue;
563
- }
564
- // Progress notification: yield message if it matches our token
565
- if (msg.method === "notifications/progress" && msg.params) {
566
- if (msg.params.progressToken === progressToken) {
567
- // FastMCP sends ``message``; some implementations may send ``data``
568
- const chunk = typeof msg.params.message === "string"
569
- ? msg.params.message
570
- : typeof msg.params.data === "string"
571
- ? msg.params.data
572
- : null;
573
- if (chunk !== null) {
574
- yield chunk;
575
- }
445
+ for await (const data of iterateSSEEvents(reader)) {
446
+ // Parse the JSON-RPC message
447
+ let msg;
448
+ try {
449
+ msg = JSON.parse(data);
450
+ }
451
+ catch {
452
+ // Ignore non-JSON data events (defensive)
453
+ continue;
454
+ }
455
+ // Progress notification: yield message if it matches our token
456
+ if (msg.method === "notifications/progress" && msg.params) {
457
+ if (msg.params.progressToken === progressToken) {
458
+ // FastMCP sends ``message``; some implementations may send ``data``
459
+ const chunk = typeof msg.params.message === "string"
460
+ ? msg.params.message
461
+ : typeof msg.params.data === "string"
462
+ ? msg.params.data
463
+ : null;
464
+ if (chunk !== null) {
465
+ yield chunk;
576
466
  }
577
- continue;
578
467
  }
579
- // Final response for our request: end the stream
580
- if (msg.id !== undefined && msg.id === requestId) {
581
- if (msg.error) {
582
- const em = msg.error.message ?? JSON.stringify(msg.error);
583
- throw new Error(`MCP error: ${em}`);
584
- }
585
- // result arrived done; do NOT yield the buffered final result
586
- streamDone = true;
587
- break;
468
+ continue;
469
+ }
470
+ // Final response for our request: end the stream
471
+ if (msg.id !== undefined && msg.id === requestId) {
472
+ if (msg.error) {
473
+ const em = msg.error.message ?? JSON.stringify(msg.error);
474
+ throw new Error(`MCP error: ${em}`);
588
475
  }
476
+ // result arrived — done; do NOT yield the buffered final result
477
+ break;
589
478
  }
590
479
  }
591
480
  }
@@ -669,9 +558,55 @@ function publishProxySpan(traceCtx, spanId, startTime, _toolName, _capability, e
669
558
  });
670
559
  }
671
560
  /**
672
- * Parse SSE response from MCP HTTP Streamable transport.
561
+ * Split an SSE byte stream into raw `data:` payload strings.
562
+ *
563
+ * Reads from the given reader, normalizes CRLF→LF, separates events on blank
564
+ * lines (`\n\n`), and joins each event's `data:` lines per the SSE spec.
565
+ * Empty/data-less events are skipped. Yields one string per event so callers
566
+ * can JSON-parse and dispatch without re-implementing the framing.
567
+ */
568
+ async function* iterateSSEEvents(reader) {
569
+ const decoder = new TextDecoder();
570
+ let buffer = "";
571
+ while (true) {
572
+ const { done, value } = await reader.read();
573
+ if (done)
574
+ break;
575
+ // Normalize CRLF to LF so the same parser handles either line ending
576
+ buffer += decoder.decode(value, { stream: true }).replace(/\r\n/g, "\n");
577
+ // SSE events are separated by blank lines (\n\n)
578
+ let sep;
579
+ while ((sep = buffer.indexOf("\n\n")) !== -1) {
580
+ const rawEvent = buffer.slice(0, sep);
581
+ buffer = buffer.slice(sep + 2);
582
+ // Collect data: lines from this event (per spec, multi-line data joined by \n)
583
+ const dataLines = [];
584
+ for (const line of rawEvent.split("\n")) {
585
+ if (line.startsWith("data: ")) {
586
+ dataLines.push(line.slice(6));
587
+ }
588
+ else if (line.startsWith("data:")) {
589
+ // Allow "data:" with no space (defensive)
590
+ dataLines.push(line.slice(5));
591
+ }
592
+ }
593
+ if (dataLines.length === 0)
594
+ continue;
595
+ const data = dataLines.join("\n");
596
+ if (!data)
597
+ continue;
598
+ yield data;
599
+ }
600
+ }
601
+ }
602
+ /**
603
+ * Read an SSE response from the MCP HTTP Streamable transport down to its
604
+ * final content (the JSON-RPC `result`).
605
+ *
606
+ * Distinct from `sse.ts`'s `parseSSEResponse` (string→object, Rust-core-backed):
607
+ * this consumes a whole `Response` body and returns the extracted content.
673
608
  */
674
- async function parseSSEResponse(response) {
609
+ async function readSSEResponseToContent(response) {
675
610
  const reader = response.body?.getReader();
676
611
  if (!reader) {
677
612
  throw new Error("No response body");
package/dist/proxy.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}