Repository navigation
fix(slack): keep the thread status indicator on assistant.threads.setStatus - #206
Merged
Merged
Conversation
…Status a5522f6 routed status through agents.sessions.setStatus whenever the installed slack-sdk ships the typed method (>=3.44.0). That API accepts only the closed enum active|processing|suspended|closed, while every Hermes call site still sends the legacy free-text protocol: work-start phrases, per-tool live_status updates, typing_status_text, and an empty string to clear. All of them are rejected with invalid_arguments, and because status failures are debug-logged by design the indicator vanished silently on every turn (NousResearch#110374). Status now always uses the legacy method, which takes free text and auto-clears on reply until its February 2027 deprecation. Titles keep using agents.sessions.rename, which takes free text and was never affected. Not migrated to the enum on purpose: processing does not auto-clear when the app replies, so a turn ending without an explicit active would leave the spinner up for up to an hour, re-opening the stuck-indicator class fixed by NousResearch#64621 / NousResearch#24117; and the new API has no equivalent for custom status text, so adopting it drops live_status and typing_status_text. That trade is a product decision, not a regression fix. (cherry picked from commit 9b90259) Fork-Patch: slack-status-legacy
Fork-Patch: slack-status-legacy
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Slack thread status ("is thinking…", live tool phrases, elapsed heartbeat) goes back to
assistant.threads.setStatus, including the empty-string clear. Thread titles keep usingagents.sessions.rename. Cherry-picked from upstream NousResearch/hermes-agent#110391 with authorship preserved (-x).Motivation
Since slack-sdk 3.44 landed (fork bump to 3.44.1),
_session_status_methodroutes status throughagents.sessions.setStatus. That API takes a closed enum (active|processing|suspended|closed) and rejects every free-text status and the empty clear. The failure is debug-logged, so Slack users see no typing/status indicator at all. Io (LPG) has shown no indicator since its runtime picked this up. Upstream issue: #110374.The alternative (#123457) keeps the new API and maps to
processing/active, which drops custom status text and needs an explicit clear. That is a product change, so this PR takes the narrow restore until upstream decides.Verification
scripts/run_tests.sh tests/gateway/test_slack.py: pass.scripts/run_tests.sh tests/gateway/ -k slack: 728 passed, 0 failed, 2 skipped.scripts/check_fork_patches.py --source-only: OK. Pre-push portable gate: pass.Retirement
Drop this commit when upstream merges NousResearch#110391, NousResearch#123457, or an equivalent fix.