hermes-agent/tests/gateway
teknium1 d80c30cc92 feat(gateway): proactive async memory flush on session expiry
Previously, when a session expired (idle/daily reset), the memory flush
ran synchronously inside get_or_create_session — blocking the user's
message for 10-60s while an LLM call saved memories.

Now a background watcher task (_session_expiry_watcher) runs every 5 min,
detects expired sessions, and flushes memories proactively in a thread
pool.  By the time the user sends their next message, memories are
already saved and the response is immediate.

Changes:
- Add _is_session_expired(entry) to SessionStore — works from entry
  alone without needing a SessionSource
- Add _pre_flushed_sessions set to track already-flushed sessions
- Remove sync _on_auto_reset callback from get_or_create_session
- Refactor flush into _flush_memories_for_session (sync worker) +
  _async_flush_memories (thread pool wrapper)
- Add _session_expiry_watcher background task, started in start()
- Simplify /reset command to use shared fire-and-forget flush
- Add 10 tests for expiry detection, callback removal, tracking
2026-03-07 11:27:50 -08:00
..
__init__.py test: reorganize test structure and add missing unit tests 2026-02-26 03:20:08 +03:00
test_async_memory_flush.py feat(gateway): proactive async memory flush on session expiry 2026-03-07 11:27:50 -08:00
test_channel_directory.py test: add unit tests for 8 untested modules (batch 3) (#191) 2026-03-01 05:28:12 -08:00
test_config.py test: reorganize test structure and add missing unit tests 2026-02-26 03:20:08 +03:00
test_delivery.py test: reorganize test structure and add missing unit tests 2026-02-26 03:20:08 +03:00
test_document_cache.py fix(security): patch path traversal, size bypass, and prompt injection in document processing 2026-02-27 11:53:46 -05:00
test_homeassistant.py feat: enhance Home Assistant integration with service discovery and setup 2026-03-03 05:16:53 -08:00
test_hooks.py test: strengthen assertions across 7 test files (batch 1) 2026-03-05 18:39:37 -08:00
test_media_extraction.py fix(gateway): prevent TTS voice messages from accumulating across turns 2026-02-28 03:38:27 -05:00
test_mirror.py test: add unit tests for 8 untested modules (batch 3) (#191) 2026-03-01 05:28:12 -08:00
test_pairing.py test: strengthen assertions across 7 test files (batch 1) 2026-03-05 18:39:37 -08:00
test_platform_base.py test: strengthen assertions across 7 test files (batch 1) 2026-03-05 18:39:37 -08:00
test_session.py Merge PR #370: fix(session): use database session count for has_any_sessions 2026-03-04 05:37:15 -08:00
test_sticker_cache.py test: add unit tests for 8 untested modules (batch 3) (#191) 2026-03-01 05:28:12 -08:00
test_telegram_documents.py fix(security): patch path traversal, size bypass, and prompt injection in document processing 2026-02-27 11:53:46 -05:00
test_telegram_format.py fix: prevent italic regex from spanning newlines in Telegram formatter 2026-02-28 22:01:48 +03:00
test_transcript_offset.py fix(gateway): use filtered history length for transcript message extraction 2026-03-04 21:34:40 +03:00
test_update_command.py feat: add /update slash command for gateway platforms 2026-03-05 01:20:58 -08:00
test_whatsapp_connect.py fix(whatsapp): replace Linux-only fuser with cross-platform port cleanup 2026-03-05 17:13:14 +03:00