refactor(call-omo-agent): inject executeSync dependencies for tests
This commit is contained in:
parent
3a690965fd
commit
e995443120
@ -1,22 +1,16 @@
|
|||||||
const { describe, test, expect, mock } = require("bun:test")
|
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", () => {
|
describe("executeSync", () => {
|
||||||
test("passes question=false via tools parameter to block question tool", async () => {
|
test("passes question=false via tools parameter to block question tool", async () => {
|
||||||
//#given
|
//#given
|
||||||
const { executeSync } = require("./sync-executor")
|
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
|
let promptArgs: any
|
||||||
const promptAsync = mock(async (input: any) => {
|
const promptAsync = mock(async (input: any) => {
|
||||||
promptArgs = input
|
promptArgs = input
|
||||||
@ -44,7 +38,7 @@ describe("executeSync", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//#when
|
//#when
|
||||||
await executeSync(args, toolContext, ctx as any)
|
await executeSync(args, toolContext, ctx as any, deps)
|
||||||
|
|
||||||
//#then
|
//#then
|
||||||
expect(promptAsync).toHaveBeenCalled()
|
expect(promptAsync).toHaveBeenCalled()
|
||||||
@ -55,6 +49,12 @@ describe("executeSync", () => {
|
|||||||
//#given
|
//#given
|
||||||
const { executeSync } = require("./sync-executor")
|
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
|
let promptArgs: any
|
||||||
const promptAsync = mock(async (input: any) => {
|
const promptAsync = mock(async (input: any) => {
|
||||||
promptArgs = input
|
promptArgs = input
|
||||||
@ -82,7 +82,7 @@ describe("executeSync", () => {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//#when
|
//#when
|
||||||
await executeSync(args, toolContext, ctx as any)
|
await executeSync(args, toolContext, ctx as any, deps)
|
||||||
|
|
||||||
//#then
|
//#then
|
||||||
expect(promptAsync).toHaveBeenCalled()
|
expect(promptAsync).toHaveBeenCalled()
|
||||||
|
|||||||
@ -6,6 +6,18 @@ import { createOrGetSession } from "./session-creator"
|
|||||||
import { waitForCompletion } from "./completion-poller"
|
import { waitForCompletion } from "./completion-poller"
|
||||||
import { processMessages } from "./message-processor"
|
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(
|
export async function executeSync(
|
||||||
args: CallOmoAgentArgs,
|
args: CallOmoAgentArgs,
|
||||||
toolContext: {
|
toolContext: {
|
||||||
@ -15,9 +27,10 @@ export async function executeSync(
|
|||||||
abort: AbortSignal
|
abort: AbortSignal
|
||||||
metadata?: (input: { title?: string; metadata?: Record<string, unknown> }) => void
|
metadata?: (input: { title?: string; metadata?: Record<string, unknown> }) => void
|
||||||
},
|
},
|
||||||
ctx: PluginInput
|
ctx: PluginInput,
|
||||||
|
deps: ExecuteSyncDeps = defaultDeps
|
||||||
): Promise<string> {
|
): Promise<string> {
|
||||||
const { sessionID } = await createOrGetSession(args, toolContext, ctx)
|
const { sessionID } = await deps.createOrGetSession(args, toolContext, ctx)
|
||||||
|
|
||||||
await toolContext.metadata?.({
|
await toolContext.metadata?.({
|
||||||
title: args.description,
|
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>`
|
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 =
|
const output =
|
||||||
responseText + "\n\n" + ["<task_metadata>", `session_id: ${sessionID}`, "</task_metadata>"].join("\n")
|
responseText + "\n\n" + ["<task_metadata>", `session_id: ${sessionID}`, "</task_metadata>"].join("\n")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user