|
|
@@ -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: [
|
|
|
{
|