fix(tui): align slash command parsing and handlers
This commit is contained in:
@@ -70,6 +70,7 @@ export function App({
|
||||
const [streamingContent, setStreamingContent] = useState('');
|
||||
const [scrollOffset, setScrollOffset] = useState(0);
|
||||
const [tokenUsage, setTokenUsage] = useState<TokenUsage>({ inputTokens: 0, outputTokens: 0 });
|
||||
const [verbose, setVerbose] = useState(false);
|
||||
const [currentModel, setCurrentModel] = useState(() => {
|
||||
if (!modelRouter) {return model;}
|
||||
return modelRouter.getLabel(modelRouter.getTier());
|
||||
@@ -227,6 +228,24 @@ export function App({
|
||||
return;
|
||||
}
|
||||
|
||||
case 'compact': {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Compact command is not available in fullscreen TUI mode.' })]);
|
||||
return;
|
||||
}
|
||||
|
||||
case 'usage': {
|
||||
const text = `Token Usage\n\nTotal: ${tokenUsage.inputTokens} in / ${tokenUsage.outputTokens} out`;
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: text })]);
|
||||
return;
|
||||
}
|
||||
|
||||
case 'verbose': {
|
||||
const next = !verbose;
|
||||
setVerbose(next);
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Verbose mode: ${next ? 'on' : 'off'}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
case 'model': {
|
||||
if (!modelRouter) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Model switching not available.' })]);
|
||||
@@ -421,8 +440,20 @@ export function App({
|
||||
return;
|
||||
}
|
||||
|
||||
case 'backend':
|
||||
case 'login':
|
||||
case 'pair':
|
||||
case 'elevate':
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `/${command.type} is not supported in fullscreen mode.` })]);
|
||||
return;
|
||||
|
||||
case 'message':
|
||||
break;
|
||||
|
||||
default: {
|
||||
const exhaustive: never = command;
|
||||
throw new Error(`Unhandled command: ${JSON.stringify(exhaustive)}`);
|
||||
}
|
||||
}
|
||||
|
||||
if (command.type !== 'message' || isStreaming) {
|
||||
|
||||
Reference in New Issue
Block a user