fix(tui): wire subagent interrupt and drop granular background commands
This commit is contained in:
parent
2f4a688790
commit
eabf85aea2
2 changed files with 5 additions and 30 deletions
|
|
@ -12,7 +12,6 @@ export function ShellTab(props: { sessionID: string }) {
|
||||||
const fg = selectedForeground(theme)
|
const fg = selectedForeground(theme)
|
||||||
const composer = useComposerTab()
|
const composer = useComposerTab()
|
||||||
const killHint = useCommandShortcut("composer.shell.kill")
|
const killHint = useCommandShortcut("composer.shell.kill")
|
||||||
const backgroundHint = useCommandShortcut("composer.background")
|
|
||||||
|
|
||||||
const entries = createMemo(() =>
|
const entries = createMemo(() =>
|
||||||
data.shell
|
data.shell
|
||||||
|
|
@ -44,13 +43,7 @@ export function ShellTab(props: { sessionID: string }) {
|
||||||
const cleanup = composer.register({
|
const cleanup = composer.register({
|
||||||
id: "shell",
|
id: "shell",
|
||||||
label: "Shell",
|
label: "Shell",
|
||||||
hints: () =>
|
hints: () => (selectedEntry() ? [{ label: "kill", shortcut: killHint() }] : []),
|
||||||
selectedEntry()
|
|
||||||
? [
|
|
||||||
{ label: "kill", shortcut: killHint() },
|
|
||||||
{ label: "background", shortcut: backgroundHint() },
|
|
||||||
]
|
|
||||||
: [],
|
|
||||||
})
|
})
|
||||||
onCleanup(cleanup)
|
onCleanup(cleanup)
|
||||||
})
|
})
|
||||||
|
|
@ -89,18 +82,11 @@ export function ShellTab(props: { sessionID: string }) {
|
||||||
void data.shell.remove(entry.id)
|
void data.shell.remove(entry.id)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
name: "composer.background",
|
|
||||||
title: "Background shell command",
|
|
||||||
category: "Composer",
|
|
||||||
run() {},
|
|
||||||
},
|
|
||||||
],
|
],
|
||||||
bindings: [
|
bindings: [
|
||||||
{ key: "up", desc: "Previous shell", group: "Shell", cmd: "composer.shell.up" },
|
{ key: "up", desc: "Previous shell", group: "Shell", cmd: "composer.shell.up" },
|
||||||
{ key: "down", desc: "Next shell", group: "Shell", cmd: "composer.shell.down" },
|
{ key: "down", desc: "Next shell", group: "Shell", cmd: "composer.shell.down" },
|
||||||
{ key: "ctrl+d", desc: "Kill shell command", group: "Shell", cmd: "composer.shell.kill" },
|
{ key: "ctrl+d", desc: "Kill shell command", group: "Shell", cmd: "composer.shell.kill" },
|
||||||
{ key: "ctrl+b", desc: "Background shell command", group: "Shell", cmd: "composer.background" },
|
|
||||||
],
|
],
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ import { createStore } from "solid-js/store"
|
||||||
import { TextAttributes, RGBA, ScrollBoxRenderable } from "@opentui/core"
|
import { TextAttributes, RGBA, ScrollBoxRenderable } from "@opentui/core"
|
||||||
import { useRoute, useRouteData } from "../../../context/route"
|
import { useRoute, useRouteData } from "../../../context/route"
|
||||||
import { useData } from "../../../context/data"
|
import { useData } from "../../../context/data"
|
||||||
|
import { useSDK } from "../../../context/sdk"
|
||||||
import { useTheme, selectedForeground } from "../../../context/theme"
|
import { useTheme, selectedForeground } from "../../../context/theme"
|
||||||
import { Locale } from "../../../util/locale"
|
import { Locale } from "../../../util/locale"
|
||||||
import { useBindings, useCommandShortcut } from "../../../keymap"
|
import { useBindings, useCommandShortcut } from "../../../keymap"
|
||||||
|
|
@ -19,12 +20,12 @@ interface SubagentEntry {
|
||||||
export function SubagentsTab(props: { sessionID: string }) {
|
export function SubagentsTab(props: { sessionID: string }) {
|
||||||
const route = useRouteData("session")
|
const route = useRouteData("session")
|
||||||
const data = useData()
|
const data = useData()
|
||||||
|
const sdk = useSDK()
|
||||||
const { theme } = useTheme()
|
const { theme } = useTheme()
|
||||||
const fg = selectedForeground(theme)
|
const fg = selectedForeground(theme)
|
||||||
const navigate = useRoute().navigate
|
const navigate = useRoute().navigate
|
||||||
const composer = useComposerTab()
|
const composer = useComposerTab()
|
||||||
const interruptHint = useCommandShortcut("composer.subagent.interrupt")
|
const interruptHint = useCommandShortcut("composer.subagent.interrupt")
|
||||||
const backgroundHint = useCommandShortcut("composer.background")
|
|
||||||
|
|
||||||
const session = createMemo(() => data.session.get(props.sessionID))
|
const session = createMemo(() => data.session.get(props.sessionID))
|
||||||
|
|
||||||
|
|
@ -132,10 +133,7 @@ export function SubagentsTab(props: { sessionID: string }) {
|
||||||
hints: () => {
|
hints: () => {
|
||||||
const entry = selectedEntry()
|
const entry = selectedEntry()
|
||||||
if (!entry || entry.status !== "running") return []
|
if (!entry || entry.status !== "running") return []
|
||||||
return [
|
return [{ label: "interrupt", shortcut: interruptHint() }]
|
||||||
{ label: "interrupt", shortcut: interruptHint() },
|
|
||||||
...(entry.current ? [{ label: "background", shortcut: backgroundHint() }] : []),
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
onClose: () => {
|
onClose: () => {
|
||||||
const parentID = session()?.parentID
|
const parentID = session()?.parentID
|
||||||
|
|
@ -185,15 +183,7 @@ export function SubagentsTab(props: { sessionID: string }) {
|
||||||
run() {
|
run() {
|
||||||
const entry = selectedEntry()
|
const entry = selectedEntry()
|
||||||
if (!entry || entry.status !== "running") return
|
if (!entry || entry.status !== "running") return
|
||||||
},
|
void sdk.api.session.interrupt({ sessionID: entry.sessionID })
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "composer.background",
|
|
||||||
title: "Background subagent",
|
|
||||||
category: "Composer",
|
|
||||||
run() {
|
|
||||||
const entry = selectedEntry()
|
|
||||||
if (!entry || entry.status !== "running" || !entry.current) return
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
|
@ -202,7 +192,6 @@ export function SubagentsTab(props: { sessionID: string }) {
|
||||||
{ key: "down", desc: "Next subagent", group: "Subagents", cmd: "composer.subagent.down" },
|
{ key: "down", desc: "Next subagent", group: "Subagents", cmd: "composer.subagent.down" },
|
||||||
{ key: "return", desc: "Navigate to subagent", group: "Subagents", cmd: "composer.subagent.select" },
|
{ key: "return", desc: "Navigate to subagent", group: "Subagents", cmd: "composer.subagent.select" },
|
||||||
{ key: "ctrl+d", desc: "Interrupt subagent", group: "Subagents", cmd: "composer.subagent.interrupt" },
|
{ key: "ctrl+d", desc: "Interrupt subagent", group: "Subagents", cmd: "composer.subagent.interrupt" },
|
||||||
{ key: "ctrl+b", desc: "Background subagent", group: "Subagents", cmd: "composer.background" },
|
|
||||||
],
|
],
|
||||||
}))
|
}))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue