MCPcopy Create free account
hub / github.com/UsefulSoftwareCo/executor / startSeverableRelay

Function startSeverableRelay

e2e/cloud/mcp-priming-reconnect.test.ts:37–138  ·  view source on GitHub ↗
(
  originUrl: string,
)

Source from the content-addressed store, hash-verified

35 * before the multi-second tool result.
36 */
37const startSeverableRelay = (
38 originUrl: string,
39): Promise<{
40 readonly url: (path: string) => string;
41 readonly severPostMidCall: () => Promise<void>;
42 readonly close: () => void;
43}> => {
44 const origin = new URL(originUrl);
45 // The tools/call POST hop, captured the moment its response headers arrive
46 // (before any body: this is independent of whether the server emits a priming
47 // event, so the trigger is identical on fixed and unfixed servers). The sever
48 // must land AFTER the stream opened but BEFORE the tool result, so it fires a
49 // bounded grace after the headers — long enough for a priming event to have
50 // flushed and been read by the SDK, far short of the multi-second tool call.
51 const SEVER_GRACE_MS = 2_000;
52 let toolCallHop: { readonly upstream: ClientRequest; readonly res: ServerResponse } | null = null;
53 let onToolCallOpen: (() => void) | null = null;
54 const toolCallOpened = new Promise<void>((resolve) => {
55 onToolCallOpen = resolve;
56 });
57
58 const server = createServer((req, res) => {
59 // Detect the tools/call POST by its request body (initialize also returns
60 // SSE, so a plain content-type check would arm on the wrong stream).
61 const bodyChunks: Buffer[] = [];
62 let isToolCall = false;
63 req.on("data", (chunk: Buffer) => {
64 bodyChunks.push(chunk);
65 if (!isToolCall && Buffer.concat(bodyChunks).toString("utf8").includes('"tools/call"')) {
66 isToolCall = true;
67 }
68 });
69 const upstream = httpRequest(
70 {
71 host: origin.hostname,
72 port: Number(origin.port),
73 path: req.url,
74 method: req.method,
75 headers: { ...req.headers, host: origin.host },
76 },
77 (upstreamRes) => {
78 res.writeHead(upstreamRes.statusCode ?? 502, upstreamRes.headers);
79 if (
80 isToolCall &&
81 (upstreamRes.headers["content-type"] ?? "").includes("text/event-stream")
82 ) {
83 toolCallHop = { upstream, res };
84 onToolCallOpen?.();
85 }
86 upstreamRes.pipe(res);
87 },
88 );
89 upstream.on("error", () => {
90 try {
91 res.destroy();
92 } catch {
93 /* already torn down */
94 }

Callers 1

Calls 7

pushMethod · 0.80
toStringMethod · 0.80
listenMethod · 0.80
addressMethod · 0.80
destroyMethod · 0.65
closeMethod · 0.65
resolveFunction · 0.50

Tested by

no test coverage detected