hermes-agent/tools
replygirl d9fe008db8 fix(slack): prefer live send adapter and try multi-workspace tokens individually
Two related Slack delivery fixes for send_message text sends:

- Route Slack text delivery through _send_via_adapter so the live
  in-process gateway adapter (multi-workspace aware, channel→client
  mapping, adapter-side gates) is preferred, with the plugin's
  _standalone_send as the out-of-process fallback — matching how the
  media path already behaves.
- _standalone_send: SLACK_BOT_TOKEN can be a comma-separated list in
  multi-workspace installs and slack_tokens.json carries OAuth
  per-workspace tokens; the standalone Web-API path used to send the
  literal comma-joined string, which Slack rejects as invalid_auth.
  Try each token individually, retrying on token-scoped errors
  (invalid_auth / not_in_channel / channel_not_found …) and stopping on
  terminal ones. User-DM resolution (U…/W… targets) also tries each
  token.

Adapted from #47547 by @replygirl — the original patched the legacy
tools/send_message_tool.py::_send_slack helper, which moved to the
Slack plugin's _standalone_send in #41112.

Salvaged from #47547
2026-07-23 12:01:24 -07:00
..
computer_use fix(computer-use): handle Linux cua window metadata 2026-07-23 08:11:58 -07:00
environments fix(kanban): harden delegated-child mutation boundary 2026-07-23 07:33:36 -07:00
neutts_samples
…
__init__.py
…
ansi_strip.py fix(cli): sanitize terminal escapes when replaying stored history (/resume recap, /status recap) 2026-07-17 04:53:38 -07:00
approval.py fix(approval): restore session approval for Tirith-flagged commands 2026-07-21 12:04:47 -07:00
async_delegation.py fix(delegation): persist origin_session_id in durable dispatch records 2026-07-23 11:55:17 -07:00
binary_extensions.py
…
blueprints.py fix: widen UTF-8 BOM tolerance to all sibling frontmatter parsers 2026-07-17 04:52:02 -07:00
browser_camofox.py
…
browser_camofox_state.py
…
browser_cdp_tool.py
…
browser_dialog_tool.py
…
browser_supervisor.py
…
browser_tool.py Fix headed browser sessions being killed after every turn 2026-07-18 10:07:46 -07:00
budget_config.py
…
checkpoint_manager.py
…
clarify_gateway.py fix(clarify): one canonical timeout across CLI, TUI/desktop, and gateway (#69774) 2026-07-22 23:25:13 -05:00
clarify_tool.py
…
close_terminal_tool.py
…
code_execution_tool.py fix(kanban): harden delegated-child mutation boundary 2026-07-23 07:33:36 -07:00
computer_use_tool.py
…
credential_files.py fix(credentials): hoist read-guard import, fail closed loudly (#67665) 2026-07-20 09:21:08 -07:00
cronjob_tools.py fix(cron): stop the ticker from stalling forever on a wedged jobs lock (#60703) (#60855) 2026-07-08 05:13:18 -07:00
daemon_pool.py
…
debug_helpers.py
…
delegate_tool.py fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 2026-07-23 11:55:17 -07:00
delegation_live_log.py fix(delegation): redact credentials in live subagent transcripts 2026-07-20 06:50:31 -07:00
desktop_ui.py feat(desktop): agent can focus panes + shared desktop-UI event bridge 2026-07-22 12:13:01 -05:00
discord_tool.py
…
env_passthrough.py
…
env_probe.py fix(tools): bound env probe subprocess so a Windows inherited pipe can't wedge sessions (#67964) 2026-07-20 06:50:11 -07:00
fal_common.py
…
feishu_doc_tool.py
…
feishu_drive_tool.py
…
file_operations.py fix(file-safety): distinguish safe-root write denial from credential blocks 2026-07-14 17:09:40 +05:30
file_state.py
…
file_tools.py refactor(terminal,file-tools): delete legacy env-side cwd tracking (step 4) 2026-07-16 00:18:38 -07:00
focus_pane_tool.py feat(desktop): agent can focus panes + shared desktop-UI event bridge 2026-07-22 12:13:01 -05:00
fuzzy_match.py
…
homeassistant_tool.py
…
hook_output_spill.py
…
image_generation_tool.py fix(deepinfra): harden multimodal provider routing 2026-07-14 02:59:39 +05:30
image_source.py
…
interrupt.py
…
kanban_tools.py fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 2026-07-23 11:55:17 -07:00
lazy_deps.py fix(honcho): update SDK and restore CI coverage 2026-07-16 12:48:48 -07:00
managed_tool_gateway.py
…
mcp_dashboard_oauth.py fix(mcp): preserve live OAuth state during reauth 2026-07-17 04:50:47 -07:00
mcp_oauth.py fix(mcp): preserve live OAuth state during reauth 2026-07-17 04:50:47 -07:00
mcp_oauth_manager.py fix(mcp): preserve live OAuth state during reauth 2026-07-17 04:50:47 -07:00
mcp_stdio_watchdog.py fix(mcp): use direct parent identity in stdio watchdog 2026-07-18 04:15:13 -07:00
mcp_tool.py fix(gateway): make Slack platform note capability-aware when slack tools present 2026-07-23 11:32:24 -07:00
memory_tool.py fix(compression): verify cached prompt embeds current memory before retaining 2026-07-20 13:13:02 +05:30
microsoft_graph_auth.py
…
microsoft_graph_client.py
…
neutts_synth.py
…
open_preview_tool.py feat(desktop): agent can focus panes + shared desktop-UI event bridge 2026-07-22 12:13:01 -05:00
openrouter_client.py
…
osv_check.py
…
patch_parser.py fix(patch): ignore inert context-only hunks (#63678) 2026-07-13 02:42:18 -07:00
path_security.py
…
process_registry.py feat(delegation): live-viewable subagent transcripts — tail your subagents while they work (#67479) 2026-07-19 10:29:14 -07:00
project_tools.py
…
read_extract.py
…
read_terminal_tool.py
…
registry.py perf(tools): text prefilter before AST parse in tool discovery 2026-07-13 18:14:15 -04:00
schema_sanitizer.py
…
send_message_tool.py fix(slack): prefer live send adapter and try multi-workspace tokens individually 2026-07-23 12:01:24 -07:00
session_search_tool.py fix(search): require compacted=1 not just active=0, scope delegation-under-compression 2026-07-22 16:59:09 -07:00
skill_manager_tool.py fix(curator): guard background review writes against manually authored skills 2026-07-18 20:17:22 +05:30
skill_provenance.py
…
skill_usage.py
…
skills_ast_audit.py
…
skills_guard.py fix(skills): bind bundles to exact files and origins 2026-07-12 02:59:27 -07:00
skills_hub.py fix(security): pin DNS resolutions for SSRF-safe fetches 2026-07-23 11:44:43 -07:00
skills_sync.py rip out brew + pip/PyPI wheel support (#68217) 2026-07-22 16:51:01 -04:00
skills_tool.py fix: return per-call copies from the skill-discovery cache 2026-07-09 15:38:14 +05:30
slash_confirm.py
…
terminal_tool.py fix(kanban): keep delegated results in worker turn 2026-07-23 08:33:55 -07:00
thread_context.py
…
threat_patterns.py
…
tirith_security.py
…
todo_tool.py fix(compression): preserve synthetic user provenance 2026-07-22 06:56:53 -07:00
tool_backend_helpers.py
…
tool_output_limits.py
…
tool_result_storage.py
…
tool_search.py
…
transcription_tools.py fix(kanban): harden delegated-child mutation boundary 2026-07-23 07:33:36 -07:00
tts_streaming.py feat(voice): speech-interrupted latch in the TTS streaming core 2026-07-22 17:53:06 -05:00
tts_tool.py fix(kanban): harden delegated-child mutation boundary 2026-07-23 07:33:36 -07:00
url_safety.py fix(security): pin DNS resolutions for SSRF-safe fetches 2026-07-23 11:44:43 -07:00
video_generation_tool.py feat(providers): Support DeepInfra as an LLM provider 2026-07-14 02:59:39 +05:30
vision_tools.py fix(security): pin DNS resolutions for SSRF-safe fetches 2026-07-23 11:44:43 -07:00
voice_mode.py Merge pull request #69511 from NousResearch/bb/voice-streaming 2026-07-22 18:13:08 -05:00
web_tools.py fix(web): handle short extract provider results 2026-07-10 19:14:06 +05:30
website_policy.py
…
write_approval.py
…
x_search_tool.py feat: configure X Search reasoning effort 2026-07-19 23:58:33 -07:00
xai_http.py fix(auth): make xAI OAuth pools multi-account resilient 2026-07-17 11:37:25 +05:30
xai_video_tools.py
…
yuanbao_tools.py
…