summaryrefslogtreecommitdiffhomepage
path: root/packages
diff options
context:
space:
mode:
Diffstat (limited to 'packages')
-rw-r--r--packages/opencode/src/tool/question.ts29
1 files changed, 14 insertions, 15 deletions
diff --git a/packages/opencode/src/tool/question.ts b/packages/opencode/src/tool/question.ts
index 23c9b35c8..f7adbadcf 100644
--- a/packages/opencode/src/tool/question.ts
+++ b/packages/opencode/src/tool/question.ts
@@ -20,27 +20,26 @@ export const QuestionTool = Tool.defineEffect<typeof parameters, Metadata, Quest
return {
description: DESCRIPTION,
parameters,
- async execute(params: z.infer<typeof parameters>, ctx: Tool.Context<Metadata>) {
- const answers = await question
- .ask({
+ execute: (params: z.infer<typeof parameters>, ctx: Tool.Context<Metadata>) =>
+ Effect.gen(function* () {
+ const answers = yield* question.ask({
sessionID: ctx.sessionID,
questions: params.questions,
tool: ctx.callID ? { messageID: ctx.messageID, callID: ctx.callID } : undefined,
})
- .pipe(Effect.runPromise)
- const formatted = params.questions
- .map((q, i) => `"${q.question}"="${answers[i]?.length ? answers[i].join(", ") : "Unanswered"}"`)
- .join(", ")
+ const formatted = params.questions
+ .map((q, i) => `"${q.question}"="${answers[i]?.length ? answers[i].join(", ") : "Unanswered"}"`)
+ .join(", ")
- return {
- title: `Asked ${params.questions.length} question${params.questions.length > 1 ? "s" : ""}`,
- output: `User has answered your questions: ${formatted}. You can now continue with the user's answers in mind.`,
- metadata: {
- answers,
- },
- }
- },
+ return {
+ title: `Asked ${params.questions.length} question${params.questions.length > 1 ? "s" : ""}`,
+ output: `User has answered your questions: ${formatted}. You can now continue with the user's answers in mind.`,
+ metadata: {
+ answers,
+ },
+ }
+ }).pipe(Effect.runPromise),
}
}),
)