Repository navigation
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. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Competing with #110389 for the same fix (#110374). This PR routes status back to the legacy |
|
Live reproduction/confirmation from a Slack Socket Mode deployment on slack-sdk with Agent Sessions support: |
|
@alt-glitch can we finały merge a bugfix for this? My hermes via Slack gives 0 feedback since one month already... |
Fixes #110374.
Problem
a5522f6 routed status through
agents.sessions.setStatuswhenever the installed slack-sdk ships the typed method (>=3.44.0). That API accepts only the closed enumactive|processing|suspended|closed, while every Hermes call site still sends the legacy free-text protocol:live_status: full|verbupdates andtyping_status_textAll are rejected with
invalid_arguments, and since status failures are debug-logged by design, the indicator disappeared silently on every turn with no output at INFO/WARNING.Fix
Status always uses the legacy
assistant.threads.setStatus, which takes free text and auto-clears on reply, until its February 2027 deprecation. Titles keep usingagents.sessions.rename— that takes free text and was never affected.Why not migrate to the enum
Two things make the enum a product decision rather than a bugfix, both flagged in the issue:
processingdoes not auto-clear when the app replies. A turn ending without an explicitactivewould leave the spinner up for up to an hour, re-opening the stuck-indicator class fixed by fix(slack): clear stuck assistant status on /stop and resume typing after clarify #64621 / Slack Assistant thread can stay stuck in 'is thinking...' after response is sent #24117.live_statusandtyping_status_textin favour of a generic loading UX.Worth deciding explicitly before the 2027 deadline; this PR just stops the silent breakage.
Tests
TestAgentSessionsApiRoutingnow pins the routing in both directions: with_AGENT_SESSIONS_SUPPORTED = True, the set and the clear must both hit the legacy method and must not callagents_sessions_setStatus. The title test is unchanged. Both new tests fail without the adapter change. Fulltests/gateway/test_slack.py: 242 passed, 1 skipped.🤖 Generated with Claude Code