mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-08 03:01:47 +00:00
feat(tui): archive todos at turn end with incomplete hint
This commit is contained in:
parent
319c1c1691
commit
c78b528125
12 changed files with 948 additions and 70 deletions
|
|
@ -11,7 +11,7 @@ import { applyDelegationStatus, getDelegationState } from './delegationStore.js'
|
|||
import type { GatewayEventHandlerContext } from './interfaces.js'
|
||||
import { patchOverlayState } from './overlayStore.js'
|
||||
import { turnController } from './turnController.js'
|
||||
import { archiveDoneTodos } from './turnStore.js'
|
||||
import { archiveTodosAtTurnEnd } from './turnStore.js'
|
||||
import { getUiState, patchUiState } from './uiStore.js'
|
||||
|
||||
const NO_PROVIDER_RE = /\bNo (?:LLM|inference) provider configured\b/i
|
||||
|
|
@ -539,7 +539,7 @@ export function createGatewayEventHandler(ctx: GatewayEventHandlerContext): (ev:
|
|||
if (!wasInterrupted) {
|
||||
const msgs: Msg[] = finalMessages.length ? finalMessages : [{ role: 'assistant', text: finalText }]
|
||||
msgs.forEach(appendMessage)
|
||||
archiveDoneTodos().forEach(appendMessage)
|
||||
archiveTodosAtTurnEnd().forEach(appendMessage)
|
||||
|
||||
if (bellOnComplete && stdout?.isTTY) {
|
||||
stdout.write('\x07')
|
||||
|
|
|
|||
|
|
@ -40,14 +40,22 @@ export const patchTurnState = (next: Partial<TurnState> | ((state: TurnState) =>
|
|||
|
||||
export const toggleTodoCollapsed = () => patchTurnState(state => ({ ...state, todoCollapsed: !state.todoCollapsed }))
|
||||
|
||||
export const archiveDoneTodos = () => {
|
||||
export const archiveDoneTodos = () => archiveTodosAtTurnEnd()
|
||||
|
||||
export const archiveTodosAtTurnEnd = () => {
|
||||
const state = $turnState.get()
|
||||
|
||||
if (!isTodoDone(state.todos)) {
|
||||
if (!state.todos.length) {
|
||||
return []
|
||||
}
|
||||
|
||||
const msg: Msg = { kind: 'trail', role: 'system', text: '', todos: state.todos }
|
||||
const msg: Msg = {
|
||||
kind: 'trail',
|
||||
role: 'system',
|
||||
text: '',
|
||||
todos: state.todos,
|
||||
...(isTodoDone(state.todos) ? {} : { todoIncomplete: true })
|
||||
}
|
||||
|
||||
patchTurnState({ todoCollapsed: false, todos: [] })
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue