hermes-agent/plugins/platforms
Nikita Barkov 5d3f75110a fix(kanban): key terminal-event wakes to the creator's workspace scope
Slack session keys include the workspace id since #70190, but the kanban
notifier rebuilds the wake source from a subscription row that has no scope
column, so every terminal-event wake keyed without the workspace.

The legacy-key adoption shipped in the same change (`_legacy_slack_session_key`,
`_recovered_row_matches_source_scope`) resolves that unscoped key onto the same
session_id, so the wake passes the busy guards that are keyed by routing key
(`_active_sessions`, `_running_agents`) and only collides afterwards, on session
id, under the per-session turn lease (#64934) — which serializes it behind the
live turn's flush. On a live Slack gateway that shows up as a duplicate run on
one task plus 400+s of waiting before the woken turn starts.

Same failure mode as #56580 / #72191 (chat_type), one field over, and it needs
no schema change: `_thread_metadata_for_source()` already stamps
`slack_team_id`, the notify subscription persists that dict as
`delivery_metadata`, and the notifier already unpacks it. Rows written by
`kanban_tools._maybe_auto_subscribe` carry no workspace, so fall back to the
adapter's channel → workspace map via `scope_id_for_chat()`, read with getattr
so adapters opt in and unscoped platforms' keys stay byte-identical. Slack
answers it from `_remember_channel_team`, which drops channels claimed by two
workspaces, so an unknown or ambiguous channel degrades to today's behavior
instead of guessing wrong.

Also adds the contributor email mapping the attribution check requires.

Co-authored-by: Junie <junie@jetbrains.com>
2026-08-13 11:41:19 -07:00
..
a2a
buzz
dingtalk refactor: fold simplify-code review findings 2026-08-07 13:28:43 +05:30
discord refactor: fold tailored intents guidance into the connect classifier 2026-08-13 00:10:30 -07:00
email fix(email): dispatch partial batches, seen-after-fetch UIDs, reconnect UID baseline restore 2026-08-13 01:24:54 -07:00
feishu refactor: fold simplify-code review findings 2026-08-07 13:28:43 +05:30
google_chat fix(google-chat): post cron deliveries as new top-level threads, not replies 2026-08-13 11:05:40 -07:00
homeassistant
irc
line
matrix refactor(matrix): extract _strip_reply_fallback to deduplicate text+media handlers 2026-08-07 14:34:55 +05:30
mattermost fix(mattermost): escalate genuine WS auth failures through the fatal-error hook 2026-08-13 01:51:13 -07:00
ntfy
photon fix(gateway): classify terminal adapter connect failures + escalate long-lived retry loops (OOF-156) 2026-08-12 22:16:12 -07:00
raft
simplex refactor(simplex): hoist json.dumps above branch in _standalone_send 2026-08-08 13:56:12 +05:30
slack fix(kanban): key terminal-event wakes to the creator's workspace scope 2026-08-13 11:41:19 -07:00
sms
teams refactor: derive teams install hint via feature_install_command(venv_pip=True) 2026-08-07 13:28:43 +05:30
telegram fix(gateway): classify terminal adapter connect failures + escalate long-lived retry loops (OOF-156) 2026-08-12 22:16:12 -07:00
wecom refactor: fold simplify-code review findings 2026-08-07 13:28:43 +05:30
whatsapp fix(whatsapp): classify npm install failures as non-retryable fatal errors (#80095) 2026-08-13 02:37:12 -07:00