diff options
| author | Kit Langton <[email protected]> | 2026-04-10 09:42:06 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2026-04-10 09:42:06 -0400 |
| commit | 157c5d77f80571906ad3b5ac5527fa62b84adf23 (patch) | |
| tree | d49e62b02d43f943b5a8b7a18f8fca0a276899af | |
| parent | ce19c051be86b5d0fff458bf4d74803c40c06350 (diff) | |
| download | opencode-157c5d77f80571906ad3b5ac5527fa62b84adf23.tar.gz opencode-157c5d77f80571906ad3b5ac5527fa62b84adf23.zip | |
refactor(tool): convert question tool internals to Effect (#21808)
| -rw-r--r-- | packages/opencode/src/tool/question.ts | 29 |
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), } }), ) |
