fix: extract question text from questions array per opencode tool schema

This commit is contained in:
YeonGyu-Kim
2026-03-18 18:27:09 +09:00
parent 399796cbe4
commit 458ec06b0e
2 changed files with 28 additions and 2 deletions
+23 -1
View File
@@ -44,7 +44,7 @@ describe("createOpenClawHook", () => {
await hook?.["tool.execute.before"]?.( await hook?.["tool.execute.before"]?.(
{ tool: "ask_user_question", sessionID: "session-2" }, { tool: "ask_user_question", sessionID: "session-2" },
{ args: { question: "Need approval?" } }, { args: { questions: [{ question: "Need approval?", options: [{ label: "Yes" }] }] } },
) )
expect(wakeOpenClawMock).toHaveBeenCalledWith( expect(wakeOpenClawMock).toHaveBeenCalledWith(
@@ -57,4 +57,26 @@ describe("createOpenClawHook", () => {
}), }),
) )
}) })
test("falls back to args.question string when questions array absent", async () => {
const { createOpenClawHook } = await import("./openclaw")
const hook = createOpenClawHook(
{ directory: "/tmp/project" } as any,
{ openclaw: { enabled: true } } as any,
)
await hook?.["tool.execute.before"]?.(
{ tool: "question", sessionID: "session-3" },
{ args: { question: "Fallback?" } },
)
expect(wakeOpenClawMock).toHaveBeenCalledWith(
expect.anything(),
"ask-user-question",
expect.objectContaining({
question: "Fallback?",
sessionId: "session-3",
}),
)
})
}) })
+5 -1
View File
@@ -50,7 +50,11 @@ export function createOpenClawHook(
return return
} }
const question = typeof output.args.question === "string" ? output.args.question : undefined // question tool uses args.questions array, not args.question
const questions = Array.isArray(output.args.questions) ? output.args.questions : []
const question = questions.length > 0 && typeof questions[0]?.question === "string"
? questions[0].question
: typeof output.args.question === "string" ? output.args.question : undefined
const context: OpenClawContext = { const context: OpenClawContext = {
sessionId: input.sessionID, sessionId: input.sessionID,
projectPath: ctx.directory, projectPath: ctx.directory,