diff --git a/src/tools/call-omo-agent/sync-executor.test.ts b/src/tools/call-omo-agent/sync-executor.test.ts index 744f08ff..de243aee 100644 --- a/src/tools/call-omo-agent/sync-executor.test.ts +++ b/src/tools/call-omo-agent/sync-executor.test.ts @@ -1,22 +1,16 @@ const { describe, test, expect, mock } = require("bun:test") -mock.module("./session-creator", () => ({ - createOrGetSession: mock(async () => ({ sessionID: "ses-test-123" })), -})) - -mock.module("./completion-poller", () => ({ - waitForCompletion: mock(async () => {}), -})) - -mock.module("./message-processor", () => ({ - processMessages: mock(async () => "agent response"), -})) - describe("executeSync", () => { test("passes question=false via tools parameter to block question tool", async () => { //#given const { executeSync } = require("./sync-executor") + const deps = { + createOrGetSession: mock(async () => ({ sessionID: "ses-test-123", isNew: true })), + waitForCompletion: mock(async () => {}), + processMessages: mock(async () => "agent response"), + } + let promptArgs: any const promptAsync = mock(async (input: any) => { promptArgs = input @@ -44,7 +38,7 @@ describe("executeSync", () => { } //#when - await executeSync(args, toolContext, ctx as any) + await executeSync(args, toolContext, ctx as any, deps) //#then expect(promptAsync).toHaveBeenCalled() @@ -55,6 +49,12 @@ describe("executeSync", () => { //#given const { executeSync } = require("./sync-executor") + const deps = { + createOrGetSession: mock(async () => ({ sessionID: "ses-test-123", isNew: true })), + waitForCompletion: mock(async () => {}), + processMessages: mock(async () => "agent response"), + } + let promptArgs: any const promptAsync = mock(async (input: any) => { promptArgs = input @@ -82,7 +82,7 @@ describe("executeSync", () => { } //#when - await executeSync(args, toolContext, ctx as any) + await executeSync(args, toolContext, ctx as any, deps) //#then expect(promptAsync).toHaveBeenCalled() diff --git a/src/tools/call-omo-agent/sync-executor.ts b/src/tools/call-omo-agent/sync-executor.ts index 9bd0f2de..d1310f92 100644 --- a/src/tools/call-omo-agent/sync-executor.ts +++ b/src/tools/call-omo-agent/sync-executor.ts @@ -6,6 +6,18 @@ import { createOrGetSession } from "./session-creator" import { waitForCompletion } from "./completion-poller" import { processMessages } from "./message-processor" +type ExecuteSyncDeps = { + createOrGetSession: typeof createOrGetSession + waitForCompletion: typeof waitForCompletion + processMessages: typeof processMessages +} + +const defaultDeps: ExecuteSyncDeps = { + createOrGetSession, + waitForCompletion, + processMessages, +} + export async function executeSync( args: CallOmoAgentArgs, toolContext: { @@ -15,9 +27,10 @@ export async function executeSync( abort: AbortSignal metadata?: (input: { title?: string; metadata?: Record }) => void }, - ctx: PluginInput + ctx: PluginInput, + deps: ExecuteSyncDeps = defaultDeps ): Promise { - const { sessionID } = await createOrGetSession(args, toolContext, ctx) + const { sessionID } = await deps.createOrGetSession(args, toolContext, ctx) await toolContext.metadata?.({ title: args.description, @@ -49,9 +62,9 @@ export async function executeSync( return `Error: Failed to send prompt: ${errorMessage}\n\n\nsession_id: ${sessionID}\n` } - await waitForCompletion(sessionID, toolContext, ctx) + await deps.waitForCompletion(sessionID, toolContext, ctx) - const responseText = await processMessages(sessionID, ctx) + const responseText = await deps.processMessages(sessionID, ctx) const output = responseText + "\n\n" + ["", `session_id: ${sessionID}`, ""].join("\n")