mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-12 13:52:15 +00:00
Show a shimmering "Summarizing thread" label during auto-compaction, skip the post-turn hydrate when compaction fired so the live transcript does not collapse to the stored summary-only session.
53 lines
1.5 KiB
TypeScript
53 lines
1.5 KiB
TypeScript
import { afterEach, beforeEach, describe, expect, it } from 'vitest'
|
|
|
|
import { $compactingSessions, $compactionActive, setSessionCompacting } from './compaction'
|
|
import { $activeSessionId } from './session'
|
|
|
|
describe('compaction store', () => {
|
|
beforeEach(() => {
|
|
$compactingSessions.set({})
|
|
$activeSessionId.set(null)
|
|
})
|
|
|
|
afterEach(() => {
|
|
$compactingSessions.set({})
|
|
$activeSessionId.set(null)
|
|
})
|
|
|
|
it('tracks compaction per session independently', () => {
|
|
setSessionCompacting('session-a', true)
|
|
setSessionCompacting('session-b', true)
|
|
|
|
expect($compactingSessions.get()).toEqual({ 'session-a': true, 'session-b': true })
|
|
})
|
|
|
|
it('exposes only the active session via the focus-scoped view', () => {
|
|
setSessionCompacting('session-a', true)
|
|
|
|
expect($compactionActive.get()).toBe(false)
|
|
|
|
$activeSessionId.set('session-a')
|
|
expect($compactionActive.get()).toBe(true)
|
|
|
|
$activeSessionId.set('session-b')
|
|
expect($compactionActive.get()).toBe(false)
|
|
})
|
|
|
|
it('clears a session without disturbing the others', () => {
|
|
setSessionCompacting('session-a', true)
|
|
setSessionCompacting('session-b', true)
|
|
|
|
setSessionCompacting('session-a', false)
|
|
|
|
expect($compactingSessions.get()).toEqual({ 'session-b': true })
|
|
})
|
|
|
|
it('is a no-op when clearing an unknown session', () => {
|
|
setSessionCompacting('session-a', true)
|
|
const before = $compactingSessions.get()
|
|
|
|
setSessionCompacting('session-missing', false)
|
|
|
|
expect($compactingSessions.get()).toBe(before)
|
|
})
|
|
})
|