import { expect, it } from "@effect/vitest"; import { Effect } from "effect"; import { makeInMemoryMcpSessionStore, McpEngineBuildError, type McpBuildServerOptions, } from "./in-memory-session-store"; import { defaultMcpResource, type Principal } from "./seams"; const TEST_PRINCIPAL: Principal = { accountId: "acct_test", organizationId: "org_test", organizationName: "Test Org", email: "test@example.com", name: "Test", avatarUrl: null, roles: ["user"], }; it("preserves native elicitation mode when creating an in-memory MCP session", async () => { let buildOptions: McpBuildServerOptions | undefined; const sessions = makeInMemoryMcpSessionStore((_principal, options) => { buildOptions = options; return Effect.fail(new McpEngineBuildError({ cause: "stop after capturing options" })); }); const result = await Effect.runPromise( sessions.store.dispatch({ request: new Request("https://executor.test/mcp?elicitation_mode=native", { method: "POST", headers: { "content-type": "application/json" }, body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "initialize", params: { protocolVersion: "2025-06-18", capabilities: { elicitation: { form: {} } }, clientInfo: { name: "test-client", version: "1.0.0" }, }, }), }), principal: TEST_PRINCIPAL, resource: defaultMcpResource, sessionId: null, method: "POST", }), ); expect(result).toBeInstanceOf(Response); expect((result as Response).status).toBe(500); expect(buildOptions?.elicitationMode).toEqual({ mode: "native" }); });