54 lines · 1.6 KB · TypeScript
RawDownload
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" });});