mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-23 16:36:23 +00:00
_fetch_thread_context() caches per-thread Slack history under a 60-second TTL, but expired entries are never removed. On the current adapter this is worse than when first reported: each entry now also retains the raw conversations.replies payloads (messages) for watermark re-formatting, so a busy multi-channel workspace accumulates full message lists forever. _bot_message_ts, _mentioned_threads, and _assistant_threads all enforce a MAX constant with active eviction in the same __init__; _thread_context_cache had the TTL declared but no matching eviction path. Fix: add _THREAD_CACHE_MAX = 2500 and purge expired entries (fetched_at older than _THREAD_CACHE_TTL) whenever a new write pushes the cache past the limit. TTL-based eviction is used instead of LRU because fresh entries are still needed; evicting them would immediately re-trigger a rate-limited conversations.replies call. Adds two unit tests: one verifying stale entries are purged on overflow, one verifying fresh entries survive. Reapplied from #23375 onto the current adapter (moved to plugins/platforms/slack/adapter.py; cache entries now carry raw message payloads and parent_user_id). |
||
|---|---|---|
| .. | ||
| browser | ||
| context_engine | ||
| cron_providers | ||
| dashboard_auth | ||
| disk-cleanup | ||
| google_meet | ||
| hermes-achievements | ||
| image_gen | ||
| kanban | ||
| memory | ||
| model-providers | ||
| observability | ||
| platforms | ||
| security-guidance | ||
| spotify | ||
| teams_pipeline | ||
| video_gen | ||
| web | ||
| __init__.py | ||
| plugin_utils.py | ||