import React from 'react'; import { Box, useApp, useInput } from 'ink'; import { TopBar } from './components/top-bar.js'; import { BottomBar } from './components/bottom-bar.js'; import { MessageList } from './components/message-list.js'; import { InputBar } from './components/input-bar.js'; import { useSocket } from './hooks/use-socket.js'; import { useGitInfo } from './hooks/use-git-info.js'; export interface TuiAppProps { gatewayUrl: string; conversationId?: string; sessionCookie?: string; } export function TuiApp({ gatewayUrl, conversationId, sessionCookie }: TuiAppProps) { const { exit } = useApp(); const gitInfo = useGitInfo(); const socket = useSocket({ gatewayUrl, sessionCookie, initialConversationId: conversationId, }); useInput((ch, key) => { if (key.ctrl && ch === 'c') { exit(); } // Ctrl+T: cycle thinking level if (key.ctrl && ch === 't') { const levels = socket.availableThinkingLevels; if (levels.length > 0) { const currentIdx = levels.indexOf(socket.thinkingLevel); const nextIdx = (currentIdx + 1) % levels.length; const next = levels[nextIdx]; if (next) { socket.setThinkingLevel(next); } } } }); return ( ); }