diff --git a/src/handlers/runtime/invoke/invoke.test.tsx b/src/handlers/runtime/invoke/invoke.test.tsx index d2b22ef7b..a9315a8d0 100644 --- a/src/handlers/runtime/invoke/invoke.test.tsx +++ b/src/handlers/runtime/invoke/invoke.test.tsx @@ -107,6 +107,7 @@ describe("runtime invoke", () => { payload: new TextEncoder().encode('{"prompt":"hello"}'), contentType: "application/json", runtimeUserId: "default", + accept: "text/event-stream", }); expect(invoke.args[1]).toEqual({ region: REGION }); expect(lookup.args[2]).toBe(invoke.args[2]); diff --git a/src/handlers/runtime/invoke/request.test.ts b/src/handlers/runtime/invoke/request.test.ts index f1db5b8d8..d71a297e0 100644 --- a/src/handlers/runtime/invoke/request.test.ts +++ b/src/handlers/runtime/invoke/request.test.ts @@ -221,6 +221,34 @@ describe("normalizeRuntimeInvokeRequest", () => { expect(request.runtimeUserId).toBe("default"); }); + test.each([["HTTP"], ["A2A"]] as const)( + "defaults %s requests to JSON content and SSE accept", + (serverProtocol) => { + const request = normalizeRuntimeInvokeRequest( + detail({ protocolConfiguration: { serverProtocol } }), + { + runtimeId: RUNTIME_ID, + payload: new Uint8Array(), + }, + ); + + expect(request.contentType).toBe("application/json"); + expect(request.accept).toBe("text/event-stream"); + }, + ); + + test("lets explicit content-type and accept override the defaults", () => { + const request = normalizeRuntimeInvokeRequest(detail(), { + runtimeId: RUNTIME_ID, + payload: new Uint8Array(), + contentType: "application/cbor", + accept: "application/json", + }); + + expect(request.contentType).toBe("application/cbor"); + expect(request.accept).toBe("application/json"); + }); + test("maps every request field and ordered allowed headers once", () => { const request = normalizeRuntimeInvokeRequest( detail({ diff --git a/src/handlers/runtime/invoke/request.ts b/src/handlers/runtime/invoke/request.ts index d5400a9f3..9f185de74 100644 --- a/src/handlers/runtime/invoke/request.ts +++ b/src/handlers/runtime/invoke/request.ts @@ -172,7 +172,7 @@ export function normalizeRuntimeInvokeRequest( contentType: contentType || "application/json", ...modeled, runtimeUserId: modeled.runtimeUserId ?? DEFAULT_RUNTIME_USER_ID, - accept: modeled.accept ?? (mcp ? "application/json, text/event-stream" : undefined), + accept: modeled.accept ?? (mcp ? "application/json, text/event-stream" : "text/event-stream"), ...(applicationHeaders.length > 0 && { applicationHeaders }), }; }