summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorKit Langton <[email protected]>2026-04-10 09:42:06 -0400
committerGitHub <[email protected]>2026-04-10 09:42:06 -0400
commit157c5d77f80571906ad3b5ac5527fa62b84adf23 (patch)
treed49e62b02d43f943b5a8b7a18f8fca0a276899af
parentce19c051be86b5d0fff458bf4d74803c40c06350 (diff)
downloadopencode-157c5d77f80571906ad3b5ac5527fa62b84adf23.tar.gz
opencode-157c5d77f80571906ad3b5ac5527fa62b84adf23.zip
refactor(tool): convert question tool internals to Effect (#21808)
-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),
}
}),
)