refactor(call-omo-agent): inject executeSync dependencies for tests

This commit is contained in:
YeonGyu-Kim
2026-02-14 22:06:23 +09:00
parent 3a690965fd
commit e995443120
2 changed files with 31 additions and 18 deletions

View File

@@ -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()

View File

@@ -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<string, unknown> }) => void
},
ctx: PluginInput
ctx: PluginInput,
deps: ExecuteSyncDeps = defaultDeps
): Promise<string> {
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<task_metadata>\nsession_id: ${sessionID}\n</task_metadata>`
}
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" + ["<task_metadata>", `session_id: ${sessionID}`, "</task_metadata>"].join("\n")