From ee1ff8cc07fcac5e6e879bc8084835f339a6b52c Mon Sep 17 00:00:00 2001 From: Dax Raad Date: Tue, 4 Nov 2025 14:07:22 -0500 Subject: [PATCH] tui: add ability to interrupt running sessions from command palette --- .../cli/cmd/tui/component/prompt/index.tsx | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) 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 7835539e..785eb7e4 100644 --- a/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx +++ b/packages/opencode/src/cli/cmd/tui/component/prompt/index.tsx @@ -115,15 +115,11 @@ export function Prompt(props: PromptProps) { { title: "Clear prompt", value: "prompt.clear", - disabled: true, category: "Prompt", + disabled: true, onSelect: (dialog) => { input.extmarks.clear() - setStore("prompt", { - input: "", - parts: [], - }) - setStore("extmarkToPartIndex", new Map()) + input.clear() dialog.clear() }, }, @@ -156,16 +152,27 @@ export function Prompt(props: PromptProps) { } }, }, + { + title: "Interrupt session", + value: "session.interrupt", + keybind: "session_interrupt", + category: "Session", + disabled: true, + onSelect: (dialog) => { + if (!props.sessionID) return + sdk.client.session.abort({ + path: { + id: props.sessionID, + }, + }) + dialog.clear() + }, + }, ] }) sdk.event.on(TuiEvent.PromptAppend.type, (evt) => { - setStore( - "prompt", - produce((draft) => { - draft.input += evt.properties.text - }), - ) + input.insertText(evt.properties.text) }) createEffect(() => {