diff --git a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx index a6ba797f33dd..148610cded06 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -1094,7 +1094,7 @@ export function Prompt(props: PromptProps) { textColor={keybind.leader ? theme.textMuted : theme.text} focusedTextColor={keybind.leader ? theme.textMuted : theme.text} minHeight={1} - maxHeight={6} + maxHeight={sync.data.config.experimental?.max_prompt_input_lines ?? 6} onContentChange={() => { const value = input.plainText setStore("prompt", "input", value) diff --git a/packages/opencode/src/config/config.ts b/packages/opencode/src/config/config.ts index 3a933f81e967..8742881e9c24 100644 --- a/packages/opencode/src/config/config.ts +++ b/packages/opencode/src/config/config.ts @@ -260,6 +260,9 @@ export const Info = Schema.Struct({ mcp_timeout: Schema.optional(PositiveInt).annotate({ description: "Timeout in milliseconds for model context protocol (MCP) requests", }), + max_prompt_input_lines: Schema.optional(Schema.Number.check(Schema.isInt()).check(Schema.isBetween(1, 99))).annotate({ + description: "Maximum number of lines for the prompt input text box (1-99, default: 6)", + }), }), ), }) diff --git a/packages/opencode/test/tool/task.test.ts b/packages/opencode/test/tool/task.test.ts index a8d62bb68c6f..9e4b990641a2 100644 --- a/packages/opencode/test/tool/task.test.ts +++ b/packages/opencode/test/tool/task.test.ts @@ -378,6 +378,7 @@ describe("tool.task", () => { }, }, experimental: { + max_prompt_input_lines: 6, primary_tools: ["bash", "read"], }, }, diff --git a/packages/sdk/js/src/v2/gen/types.gen.ts b/packages/sdk/js/src/v2/gen/types.gen.ts index 86c5a762b114..084c03d9303b 100644 --- a/packages/sdk/js/src/v2/gen/types.gen.ts +++ b/packages/sdk/js/src/v2/gen/types.gen.ts @@ -1236,6 +1236,10 @@ export type Config = { primary_tools?: Array continue_loop_on_deny?: boolean mcp_timeout?: number + /** + * Maximum number of lines for the prompt input text box (1-99, default: 6) + */ + max_prompt_input_lines?: number } }