mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-04-25 00:51:20 +00:00
feat(tui): queue pre-session input, auto-flush when session lands
The TUI is fully interactive from the first frame but `session.create` (agent + tools + MCP) takes ~2s. Plain-text messages typed before the session is live used to fail with "session not ready yet"; slash and shell commands worked but agent prompts were dropped. Now: - `dispatchSubmission` enqueues plain text when `sid` is null (slash/shell still short-circuit first) - `useMainApp` tracks sid transitions and kicks off one `sendQueued()` when the session first becomes ready; subsequent queued messages drain on `message.complete` as before - Fixed pre-existing double-Enter bug that dequeued without sid check User flow: type `hello` → shows in `queuedDisplay` preview → 2s later agent wakes → message auto-sends → reply streams. Zero wasted input.
This commit is contained in:
parent
c6ed61430a
commit
f3920fec0b
2 changed files with 36 additions and 8 deletions
|
|
@ -372,6 +372,28 @@ export function useMainApp(gw: GatewayClient) {
|
|||
sys
|
||||
})
|
||||
|
||||
// Flush any pre-session queued input once the session lands.
|
||||
// Message.complete already drains subsequent items; this only kicks off the first.
|
||||
const prevSidRef = useRef<null | string>(null)
|
||||
useEffect(() => {
|
||||
const prev = prevSidRef.current
|
||||
prevSidRef.current = ui.sid
|
||||
|
||||
if (prev !== null || !ui.sid || ui.busy) {
|
||||
return
|
||||
}
|
||||
|
||||
if (composerRefs.queueEditRef.current !== null) {
|
||||
return
|
||||
}
|
||||
|
||||
const next = composerActions.dequeue()
|
||||
|
||||
if (next) {
|
||||
sendQueued(next)
|
||||
}
|
||||
}, [ui.sid, ui.busy, composerActions, composerRefs, sendQueued])
|
||||
|
||||
const { pagerPageSize } = useInputHandlers({
|
||||
actions: {
|
||||
answerClarify,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue