import { vi } from "vitest"; const mocks = vi.hoisted(() => ({ dispatchMock: vi.fn(), readAllowFromStoreMock: vi.fn(), upsertPairingRequestMock: vi.fn(), resolveAgentRouteMock: vi.fn(), finalizeInboundContextMock: vi.fn(), resolveConversationLabelMock: vi.fn(), createReplyPrefixOptionsMock: vi.fn(), recordSessionMetaFromInboundMock: vi.fn(), resolveStorePathMock: vi.fn(), })); vi.mock("../../../../src/auto-reply/reply/provider-dispatcher.js", () => ({ dispatchReplyWithDispatcher: (...args: unknown[]) => mocks.dispatchMock(...args), })); vi.mock("../../../../src/pairing/pairing-store.js", () => ({ readChannelAllowFromStore: (...args: unknown[]) => mocks.readAllowFromStoreMock(...args), upsertChannelPairingRequest: (...args: unknown[]) => mocks.upsertPairingRequestMock(...args), })); vi.mock("../../../../src/routing/resolve-route.js", () => ({ resolveAgentRoute: (...args: unknown[]) => mocks.resolveAgentRouteMock(...args), })); vi.mock("../../../../src/auto-reply/reply/inbound-context.js", () => ({ finalizeInboundContext: (...args: unknown[]) => mocks.finalizeInboundContextMock(...args), })); vi.mock("../../../../src/channels/conversation-label.js", () => ({ resolveConversationLabel: (...args: unknown[]) => mocks.resolveConversationLabelMock(...args), })); vi.mock("../../../../src/channels/reply-prefix.js", () => ({ createReplyPrefixOptions: (...args: unknown[]) => mocks.createReplyPrefixOptionsMock(...args), })); vi.mock("../../../../src/config/sessions.js", () => ({ recordSessionMetaFromInbound: (...args: unknown[]) => mocks.recordSessionMetaFromInboundMock(...args), resolveStorePath: (...args: unknown[]) => mocks.resolveStorePathMock(...args), })); type SlashHarnessMocks = { dispatchMock: ReturnType; readAllowFromStoreMock: ReturnType; upsertPairingRequestMock: ReturnType; resolveAgentRouteMock: ReturnType; finalizeInboundContextMock: ReturnType; resolveConversationLabelMock: ReturnType; createReplyPrefixOptionsMock: ReturnType; recordSessionMetaFromInboundMock: ReturnType; resolveStorePathMock: ReturnType; }; export function getSlackSlashMocks(): SlashHarnessMocks { return mocks; } export function resetSlackSlashMocks() { mocks.dispatchMock.mockReset().mockResolvedValue({ counts: { final: 1, tool: 0, block: 0 } }); mocks.readAllowFromStoreMock.mockReset().mockResolvedValue([]); mocks.upsertPairingRequestMock.mockReset().mockResolvedValue({ code: "PAIRCODE", created: true }); mocks.resolveAgentRouteMock.mockReset().mockReturnValue({ agentId: "test-agent", sessionKey: "session:1", accountId: "acct", }); mocks.finalizeInboundContextMock.mockReset().mockImplementation((ctx: unknown) => ctx); mocks.resolveConversationLabelMock.mockReset().mockReturnValue(undefined); mocks.createReplyPrefixOptionsMock.mockReset().mockReturnValue({}); mocks.recordSessionMetaFromInboundMock.mockReset().mockResolvedValue(undefined); mocks.resolveStorePathMock.mockReset().mockReturnValue("/tmp/remoteclaw-sessions.json"); }