// @vitest-environment jsdom import { act, createRef, forwardRef, useImperativeHandle } from "react"; import type { ReactNode } from "react"; import { createRoot } from "react-dom/client"; import { MemoryRouter } from "react-router-dom"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { Agent } from "@paperclipai/shared"; import { IssueChatThread, canStopIssueChatRun, resolveAssistantMessageFoldedState, resolveIssueChatHumanAuthor, } from "./IssueChatThread"; import type { AskUserQuestionsInteraction, RequestConfirmationInteraction, SuggestTasksInteraction, } from "../lib/issue-thread-interactions"; const { markdownEditorFocusMock } = vi.hoisted(() => ({ markdownEditorFocusMock: vi.fn(), })); const { appendMock } = vi.hoisted(() => ({ appendMock: vi.fn(async () => undefined), })); const { captureComposerViewportSnapshotMock, restoreComposerViewportSnapshotMock, shouldPreserveComposerViewportMock, } = vi.hoisted(() => ({ captureComposerViewportSnapshotMock: vi.fn(), restoreComposerViewportSnapshotMock: vi.fn(), shouldPreserveComposerViewportMock: vi.fn(), })); vi.mock("@assistant-ui/react", () => ({ AssistantRuntimeProvider: ({ children }: { children: ReactNode }) =>