/** @jsxImportSource @opentui/solid */ import { testRender } from "@opentui/solid" import { Keymap } from "../../src/context/keymap" import { resolve } from "../../src/config" import { expect, test } from "bun:test" import { createSignal } from "solid-js" import { RunFooterView } from "../../src/mini/footer.view" import { RUN_THEME_FALLBACK } from "../../src/mini/theme" import type { FooterState, FooterSubagentState, FooterView } from "../../src/mini/types" test("down opens subagents from an empty prompt", async () => { const [state] = createSignal({ phase: "idle", status: "", notice: "", model: "gpt-5", usage: "", first: false, interrupt: 0, exit: 0, }) const [view] = createSignal({ type: "prompt" }) const [subagents] = createSignal({ tabs: [ { sessionID: "subagent-1", label: "Explore", description: "Inspect the keymap", status: "running", }, ], details: {}, permissions: [], forms: [], }) const config = resolve( { keybinds: { editor_open: "none", session_queued_prompts: "none" } }, { terminalSuspend: true }, ) function Harness() { return ( "/tmp"} findFiles={async () => []} agents={() => []} references={() => []} commands={() => []} providers={() => undefined} currentAgent={() => "Build"} currentAgentID={() => "build"} currentAgentExplicit={() => false} currentModel={() => undefined} variants={() => []} currentVariant={() => undefined} state={state} view={view} subagent={subagents} theme={() => RUN_THEME_FALLBACK} miniSettings={() => ({ thinking: "hide", shell_output: "hide", turn_summary: "show", footer: "show", splash: "show", mono: false, })} mono={false} onSubmit={() => true} onPermissionReply={() => {}} onFormReply={() => {}} onFormCancel={() => {}} onCycle={() => {}} onInterrupt={() => false} onEditorOpen={async () => undefined} onInputClear={() => {}} onExit={() => {}} onAgentSelect={() => {}} onModelSelect={() => {}} onVariantSelect={() => {}} onRows={() => {}} onLayout={() => {}} onStatus={() => {}} onMiniSettingChange={() => {}} /> ) } const app = await testRender(() => , { width: 100, height: 8, kittyKeyboard: true }) try { await app.renderOnce() expect(app.renderer.currentFocusedEditor?.plainText).toBe("") app.mockInput.pressArrow("down") await app.renderOnce() expect(app.captureCharFrame()).toContain("Select subagent") } finally { app.renderer.currentFocusedRenderable?.blur() app.renderer.currentFocusedEditor?.blur() app.renderer.destroy() } })