import { describe, expect, it } from "@effect/vitest";import * as Schema from "effect/Schema"; import { QueueMcpEditInput, QueueMcpListInput } from "./queueMcp.ts"; const decodeEdit = Schema.decodeUnknownSync(QueueMcpEditInput);const decodeList = Schema.decodeUnknownSync(QueueMcpListInput); describe("queue MCP contracts", () => { it("preserves nonblank prompt whitespace and rejects blank edits", () => { expect(decodeEdit({ queuedRunId: "run:queued", text: " keep indentation\n" }).text).toBe( " keep indentation\n", ); expect(() => decodeEdit({ queuedRunId: "run:queued", text: " \n\t " })).toThrow(); }); it("keeps list text pages compact while read remains the detailed path", () => { expect(decodeList({ maxCharsPerMessage: 8_000 }).maxCharsPerMessage).toBe(8_000); expect(() => decodeList({ maxCharsPerMessage: 8_001 })).toThrow(); });});
import { describe, expect, it } from "@effect/vitest";
import * as Schema from "effect/Schema";
import { QueueMcpEditInput, QueueMcpListInput } from "./queueMcp.ts";
const decodeEdit = Schema.decodeUnknownSync(QueueMcpEditInput);
const decodeList = Schema.decodeUnknownSync(QueueMcpListInput);
describe("queue MCP contracts", () => {
it("preserves nonblank prompt whitespace and rejects blank edits", () => {
expect(decodeEdit({ queuedRunId: "run:queued", text: " keep indentation\n" }).text).toBe(
" keep indentation\n",
);
expect(() => decodeEdit({ queuedRunId: "run:queued", text: " \n\t " })).toThrow();
});
it("keeps list text pages compact while read remains the detailed path", () => {
expect(decodeList({ maxCharsPerMessage: 8_000 }).maxCharsPerMessage).toBe(8_000);
expect(() => decodeList({ maxCharsPerMessage: 8_001 })).toThrow();
});
});