diff --git a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx index c484c62f7548..4d7b520430a3 100644 --- a/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx +++ b/packages/opencode/src/cli/cmd/tui/routes/session/question.tsx @@ -1,5 +1,5 @@ import { createStore } from "solid-js/store" -import { createMemo, createSignal, For, Show } from "solid-js" +import { createMemo, createSignal, For, onCleanup, onMount, Show } from "solid-js" import { useRenderer } from "@opentui/solid" import type { TextareaRenderable } from "@opentui/core" import { selectedForeground, tint, useTheme } from "../../context/theme" @@ -7,13 +7,16 @@ import type { QuestionAnswer, QuestionRequest } from "@opencode-ai/sdk/v2" import { useSDK } from "../../context/sdk" import { SplitBorder } from "../../component/border" import { useTuiConfig } from "../../context/tui-config" -import { OPENCODE_BASE_MODE, useBindings } from "../../keymap" +import { useBindings, useOpencodeModeStack } from "../../keymap" + +const QUESTION_MODE = "question" export function QuestionPrompt(props: { request: QuestionRequest }) { const sdk = useSDK() const { theme } = useTheme() const renderer = useRenderer() const tuiConfig = useTuiConfig() + const modeStack = useOpencodeModeStack() const questions = createMemo(() => props.request.questions) const single = createMemo(() => questions().length === 1 && questions()[0]?.multiple !== true) @@ -119,8 +122,13 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { pick(opt.label) } + onMount(() => { + const popMode = modeStack.push(QUESTION_MODE) + onCleanup(popMode) + }) + useBindings(() => ({ - mode: OPENCODE_BASE_MODE, + mode: QUESTION_MODE, enabled: store.editing && !confirm(), commands: [ { @@ -201,7 +209,7 @@ export function QuestionPrompt(props: { request: QuestionRequest }) { const max = Math.min(total, 9) return { - mode: OPENCODE_BASE_MODE, + mode: QUESTION_MODE, enabled: !store.editing, commands: [ {