fix(tui): add /queue command support across tui and routing
This commit is contained in:
@@ -326,6 +326,101 @@ export function App({
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Transfer not supported in fullscreen mode.' })]);
|
||||
return;
|
||||
|
||||
case 'queue': {
|
||||
if (!command.action || command.action === 'show') {
|
||||
const mode = session.getConfig('queue.mode') ?? 'collect';
|
||||
const cap = session.getConfig('queue.cap') ?? '50';
|
||||
const overflow = session.getConfig('queue.overflow') ?? 'drop_old';
|
||||
const debounceMs = session.getConfig('queue.debounce_ms') ?? '0';
|
||||
const summarizeOverflow = session.getConfig('queue.summarize_overflow') ?? 'true';
|
||||
const text = [
|
||||
'Queue policy:',
|
||||
`mode: ${mode}`,
|
||||
`cap: ${cap}`,
|
||||
`overflow: ${overflow}`,
|
||||
`debounce_ms: ${debounceMs}`,
|
||||
`summarize_overflow: ${summarizeOverflow}`,
|
||||
].join('\n');
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: text })]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (command.action === 'reset') {
|
||||
session.deleteConfig('queue.mode');
|
||||
session.deleteConfig('queue.cap');
|
||||
session.deleteConfig('queue.overflow');
|
||||
session.deleteConfig('queue.debounce_ms');
|
||||
session.deleteConfig('queue.summarize_overflow');
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Reset session queue overrides.' })]);
|
||||
return;
|
||||
}
|
||||
|
||||
const raw = (command.args ?? '').trim();
|
||||
const [rawKey, ...rest] = raw.split(/\s+/);
|
||||
const value = rest.join(' ').trim();
|
||||
if (!rawKey || !value) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Usage: /queue set <mode|cap|overflow|debounce_ms|summarize_overflow> <value>' })]);
|
||||
return;
|
||||
}
|
||||
|
||||
const key = rawKey.toLowerCase();
|
||||
if (key === 'mode') {
|
||||
if (!['collect', 'followup', 'steer', 'steer_backlog', 'interrupt'].includes(value)) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Invalid mode. Use: collect, followup, steer, steer_backlog, interrupt' })]);
|
||||
return;
|
||||
}
|
||||
session.setConfig('queue.mode', value);
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Set queue.mode=${value}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'cap') {
|
||||
const cap = Number.parseInt(value, 10);
|
||||
if (!Number.isFinite(cap) || cap < 1 || cap > 1000) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Invalid cap. Use an integer between 1 and 1000.' })]);
|
||||
return;
|
||||
}
|
||||
session.setConfig('queue.cap', String(cap));
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Set queue.cap=${cap}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'overflow') {
|
||||
if (value !== 'drop_old' && value !== 'drop_new') {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Invalid overflow. Use drop_old or drop_new.' })]);
|
||||
return;
|
||||
}
|
||||
session.setConfig('queue.overflow', value);
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Set queue.overflow=${value}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'debounce_ms') {
|
||||
const debounceMs = Number.parseInt(value, 10);
|
||||
if (!Number.isFinite(debounceMs) || debounceMs < 0 || debounceMs > 60_000) {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Invalid debounce_ms. Use an integer between 0 and 60000.' })]);
|
||||
return;
|
||||
}
|
||||
session.setConfig('queue.debounce_ms', String(debounceMs));
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Set queue.debounce_ms=${debounceMs}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
if (key === 'summarize_overflow') {
|
||||
const normalized = value.toLowerCase();
|
||||
if (normalized !== 'true' && normalized !== 'false') {
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Invalid summarize_overflow. Use true or false.' })]);
|
||||
return;
|
||||
}
|
||||
session.setConfig('queue.summarize_overflow', normalized);
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: `Set queue.summarize_overflow=${normalized}` })]);
|
||||
return;
|
||||
}
|
||||
|
||||
setMessages(prev => [...prev, session.addMessage({ role: 'assistant', content: 'Unknown queue key. Use mode, cap, overflow, debounce_ms, summarize_overflow.' })]);
|
||||
return;
|
||||
}
|
||||
|
||||
case 'message':
|
||||
break;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user