mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-05-06 02:41:48 +00:00
- drop unused TUI helpers, test-only layout scaffolding, and stale public debug exports - remove an unused profiler import and trim test-only coverage for deleted helpers
66 lines
1.9 KiB
TypeScript
66 lines
1.9 KiB
TypeScript
import { beforeEach, describe, expect, it } from 'vitest'
|
|
|
|
import {
|
|
archiveDoneTodos,
|
|
archiveTodosAtTurnEnd,
|
|
getTurnState,
|
|
patchTurnState,
|
|
resetTurnState,
|
|
toggleTodoCollapsed
|
|
} from '../app/turnStore.js'
|
|
|
|
describe('turnStore live progress helpers', () => {
|
|
beforeEach(() => resetTurnState())
|
|
|
|
it('archives completed todos into a transcript trail and clears the live anchor', () => {
|
|
patchTurnState({
|
|
todos: [
|
|
{ content: 'prep', id: 'prep', status: 'completed' },
|
|
{ content: 'serve', id: 'serve', status: 'completed' }
|
|
]
|
|
})
|
|
|
|
expect(archiveTodosAtTurnEnd()).toEqual([
|
|
{
|
|
kind: 'trail',
|
|
role: 'system',
|
|
text: '',
|
|
todoCollapsedByDefault: true,
|
|
todos: [
|
|
{ content: 'prep', id: 'prep', status: 'completed' },
|
|
{ content: 'serve', id: 'serve', status: 'completed' }
|
|
]
|
|
}
|
|
])
|
|
expect(getTurnState().todos).toEqual([])
|
|
})
|
|
|
|
it('archives incomplete todos with an incomplete flag so the hint renders', () => {
|
|
patchTurnState({
|
|
todos: [
|
|
{ content: 'cook', id: 'cook', status: 'completed' },
|
|
{ content: 'serve', id: 'serve', status: 'in_progress' },
|
|
{ content: 'eat', id: 'eat', status: 'pending' }
|
|
]
|
|
})
|
|
|
|
const archived = archiveTodosAtTurnEnd()
|
|
expect(archived).toHaveLength(1)
|
|
expect(archived[0]!.todoIncomplete).toBe(true)
|
|
expect(archived[0]!.todos?.map(t => t.id)).toEqual(['cook', 'serve', 'eat'])
|
|
expect(getTurnState().todos).toEqual([])
|
|
})
|
|
|
|
it('returns nothing when there are no todos at turn end', () => {
|
|
expect(archiveTodosAtTurnEnd()).toEqual([])
|
|
expect(archiveDoneTodos()).toEqual([])
|
|
})
|
|
|
|
it('tracks collapsed state independently of todo content', () => {
|
|
toggleTodoCollapsed()
|
|
expect(getTurnState().todoCollapsed).toBe(true)
|
|
|
|
toggleTodoCollapsed()
|
|
expect(getTurnState().todoCollapsed).toBe(false)
|
|
})
|
|
})
|