mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-22 16:25:58 +00:00
The un-mentioned wake decision relied on three checks: thread root in _bot_message_ts (populated only by the adapter's own send() path), _mentioned_threads (populated on @mention), and an existing session. Two gaps (#63530): - Gap A: bot messages posted OUTSIDE gateway send() — skills/scripts calling chat.postMessage directly, cron/API posts — never enter _bot_message_ts, so human replies in those threads were silently dropped. - Gap B: _bot_message_ts is process memory; after a gateway restart the bot stopped waking on replies to threads it started before the restart. Fix: add a 4th, API-derived check — _bot_authored_thread_root — which resolves the thread root's author via conversations.replies (cached in _thread_context_cache via the new parent_user_id field, TTL-bounded). Root authorship comes from Slack itself, so it covers outside-send posts and survives restarts, unlike in-memory ts tracking. The wake decision is extracted into _should_wake_on_unmentioned_message for direct unit testing; the legacy checks remain first (cheap, additive). Fixes #63530. Salvaged from #64067 by @knoal (author metadata normalized to their GitHub identity), rebased over the thread-context formatter split and extended with per-team bot-id resolution for multi-workspace installs. |
||
|---|---|---|
| .. | ||
| 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 | ||