155 lines · 4.2 KB · TypeScript
RawDownload
import { ProviderDriverKind, RuntimeRequestId, TurnId } from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test"; import {  makeAcpAssistantItemEvent,  makeAcpContentDeltaEvent,  makeAcpPlanUpdatedEvent,  makeAcpRequestOpenedEvent,  makeAcpRequestResolvedEvent,  makeAcpToolCallEvent,} from "./AcpCoreRuntimeEvents.ts"; describe("AcpCoreRuntimeEvents", () => {  it("maps ACP permission requests to canonical runtime events", () => {    const stamp = { eventId: "event-1" as never, createdAt: "2026-03-27T00:00:00.000Z" };    const turnId = TurnId.make("turn-1");    const permissionRequest = {      kind: "execute" as const,      detail: "cat package.json",      toolCall: {        toolCallId: "tool-1",        kind: "execute",        status: "pending" as const,        command: "cat package.json",        detail: "cat package.json",        data: { toolCallId: "tool-1", kind: "execute" },      },    };     expect(      makeAcpRequestOpenedEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        requestId: RuntimeRequestId.make("request-1"),        permissionRequest,        detail: "cat package.json",        args: { command: ["cat", "package.json"] },        source: "acp.jsonrpc",        method: "session/request_permission",        rawPayload: { sessionId: "session-1" },      }),    ).toMatchObject({      type: "request.opened",      payload: {        requestType: "exec_command_approval",        detail: "cat package.json",      },    });     expect(      makeAcpRequestResolvedEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        requestId: RuntimeRequestId.make("request-1"),        permissionRequest,        decision: "accept",      }),    ).toMatchObject({      type: "request.resolved",      payload: {        requestType: "exec_command_approval",        decision: "accept",      },    });  });   it("maps ACP core plan, tool-call, and content updates", () => {    const stamp = { eventId: "event-1" as never, createdAt: "2026-03-27T00:00:00.000Z" };    const turnId = TurnId.make("turn-1");     expect(      makeAcpPlanUpdatedEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        payload: {          plan: [{ step: "Inspect state", status: "inProgress" }],        },        source: "acp.cursor.extension",        method: "cursor/update_todos",        rawPayload: { todos: [] },      }),    ).toMatchObject({      type: "turn.plan.updated",      raw: {        method: "cursor/update_todos",      },    });     expect(      makeAcpToolCallEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        toolCall: {          toolCallId: "tool-1",          kind: "execute",          status: "completed",          title: "Terminal",          detail: "bun run test",          data: { command: "bun run test" },        },        rawPayload: { sessionId: "session-1" },      }),    ).toMatchObject({      type: "item.completed",      payload: {        itemType: "command_execution",        status: "completed",      },    });     expect(      makeAcpContentDeltaEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        itemId: "assistant:session-1:segment:0",        text: "hello",        rawPayload: { sessionId: "session-1" },      }),    ).toMatchObject({      type: "content.delta",      itemId: "assistant:session-1:segment:0",      payload: {        delta: "hello",      },    });     expect(      makeAcpAssistantItemEvent({        stamp,        provider: ProviderDriverKind.make("cursor"),        threadId: "thread-1" as never,        turnId,        itemId: "assistant:session-1:segment:0",        lifecycle: "item.started",      }),    ).toMatchObject({      type: "item.started",      itemId: "assistant:session-1:segment:0",      payload: {        itemType: "assistant_message",        status: "inProgress",      },    });  });});