import { describe, expect, it } from "vitest"; import * as shared from "../src/index.js"; function schema(): { parse(value: unknown): unknown; safeParse(value: unknown): { success: boolean } } { const candidate = Reflect.get(shared, "HarnessEventSchema"); expect(candidate, "HarnessEventSchema must be exported").toBeDefined(); return candidate; } const base = { eventId: "evt_1", sessionId: "ses_1", timestamp: "2026-09-07T00:00:00.000Z", sequence: 1, }; describe("HarnessEventSchema", () => { it("accepts every required event discriminant", () => { const payloads: Record = { "session.started": { cwd: "workspace/sessions/ses_1" }, "session.ended": { reason: "deleted" }, "user.message": { messageId: "msg_1", text: "hello", attachmentIds: [] }, "assistant.delta": { messageId: "msg_2", delta: "hel" }, "assistant.completed": { messageId: "msg_2" }, "skill.requested": { name: "ads-analysis", source: "project" }, "skill.loaded": { name: "ads-analysis", source: "project" }, "tool.requested": { toolCallId: "call_1", toolName: "mock_ads_metrics", arguments: {} }, "tool.completed": { toolCallId: "call_1", toolName: "mock_ads_metrics", result: {} }, "tool.failed": { toolCallId: "call_1", toolName: "mock_ads_metrics", error: "failed" }, "approval.required": { approvalId: "ap_1", toolCallId: "call_1", toolName: "save_report_draft", riskLevel: "medium", expiresAt: "2026-09-07T00:01:00.000Z", arguments: {} }, "approval.resolved": { approvalId: "ap_1", status: "approved" }, "attachment.uploaded": { attachmentId: "att_1", name: "creative.png", mediaType: "image/png", byteSize: 12, width: 1, height: 1 }, "attachment.rejected": { name: "bad.svg", reason: "UNSUPPORTED_IMAGE" }, "model.configured": { providerId: "openai", modelId: "gpt-image", supportsImages: true, source: "session" }, "model.validation_failed": { code: "MODEL_CONNECTION_FAILED", message: "Connection failed" }, "run.started": { modelId: "gpt-image" }, "run.cancelled": { reason: "user" }, "run.completed": { messageId: "msg_2" }, "run.failed": { code: "MODEL_ERROR", message: "Run failed" }, }; for (const [type, payload] of Object.entries(payloads)) { expect(schema().safeParse({ ...base, type, payload }).success, type).toBe(true); } }); it("rejects a payload belonging to another discriminant", () => { expect(schema().safeParse({ ...base, type: "assistant.delta", payload: { approvalId: "ap_1" }, }).success).toBe(false); }); it("requires a positive sequence", () => { expect(schema().safeParse({ ...base, sequence: 0, type: "session.started", payload: { cwd: "workspace/sessions/ses_1" }, }).success).toBe(false); }); });