hermes-agent/tools
teknium1 75efd73961 fix(gateway): never resurrect ended sessions for delegation completions; /new severs in-flight delegations
Completes the session-binding class on the gateway surface (#55578),
matching the TUI rules:

1. Fail-closed pinning: switch_session() re-opens ended sessions, so
   pinning a completion to a spawning session that has since ENDED
   (user /new, closed rotation) would resurrect a conversation the user
   explicitly ended and inject into it. The injection path now checks
   the pinned row's ended_at first and drops the injection with a
   WARNING when the spawning session is dead or unknown - the result
   stays in the delegation records.

2. /new ends the old conversation's delegations: _handle_reset_command
   calls interrupt_for_session() with the expiring durable session id
   (matching the parent_session_id pin stamped at dispatch) plus the
   routing key as fallback, so a reset can't leave dangling subagents
   whose completions have no live owner.

interrupt_for_session() gains the parent_session_id selector because a
gateway chat's session_key (the platform conversation key) survives a
reset while the session id rotates - key-based matching alone could
never sever a gateway conversation's delegations.
2026-07-08 08:10:28 -07:00
..
computer_use
environments fix(tools): keep shell snapshots owner-only 2026-07-07 05:22:42 -07:00
neutts_samples
__init__.py
ansi_strip.py
approval.py fix(approval): wire gateway notify round-trip into the plugin escalation gate 2026-07-07 15:14:30 -07:00
async_delegation.py fix(gateway): never resurrect ended sessions for delegation completions; /new severs in-flight delegations 2026-07-08 08:10:28 -07:00
binary_extensions.py
blueprints.py
browser_camofox.py
browser_camofox_state.py
browser_cdp_tool.py
browser_dialog_tool.py
browser_supervisor.py
browser_tool.py
budget_config.py
checkpoint_manager.py
clarify_gateway.py
clarify_tool.py
close_terminal_tool.py
code_execution_tool.py fix(interrupt): run user-approved commands from a clean interrupt slate 2026-07-06 04:58:42 -07:00
computer_use_tool.py
credential_files.py
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(delegate): pin async completion to spawning parent session (#57498) 2026-07-08 08:10:28 -07:00
discord_tool.py fix(discord): bound REST response reads 2026-07-07 02:40:04 -07:00
env_passthrough.py
env_probe.py
fal_common.py
feishu_doc_tool.py
feishu_drive_tool.py
file_operations.py fix(tools): make the YAML write gate syntax-only so multi-doc/tagged YAML isn't refused 2026-07-07 22:14:33 -07:00
file_state.py
file_tools.py
fuzzy_match.py
homeassistant_tool.py
hook_output_spill.py
image_generation_tool.py
image_source.py
interrupt.py fix(interrupt): run user-approved commands from a clean interrupt slate 2026-07-06 04:58:42 -07:00
kanban_tools.py
lazy_deps.py feat(sessions): trace export + HF upload via 'sessions export --format trace' (#60507) 2026-07-07 15:12:49 -07:00
managed_tool_gateway.py
mcp_oauth.py
mcp_oauth_manager.py
mcp_stdio_watchdog.py fix(mcp): guard POSIX-only kill primitives in stdio watchdog for the Windows footgun linter 2026-07-07 15:16:00 -07:00
mcp_tool.py Handle minimal MCP server fakes 2026-07-07 15:16:00 -07:00
memory_tool.py fix: default memory null target to memory store (#46356) 2026-07-07 02:10:43 -07:00
microsoft_graph_auth.py
microsoft_graph_client.py
neutts_synth.py
openrouter_client.py
osv_check.py
patch_parser.py
path_security.py
process_registry.py fix(delegation): positive-proof ownership for the post-turn drain 2026-07-08 07:39:52 -07:00
project_tools.py
read_extract.py
read_terminal_tool.py
registry.py
schema_sanitizer.py fix(schema): preserve multi-type arrays as anyOf instead of dropping branches 2026-07-07 02:52:17 -07:00
send_message_tool.py
session_search_tool.py
skill_manager_tool.py fix(skills): widen call-time skills-dir resolution to skill_manager_tool 2026-07-07 05:14:00 -07:00
skill_provenance.py
skill_usage.py
skills_ast_audit.py
skills_guard.py
skills_hub.py
skills_sync.py
skills_tool.py fix(skills): resolve skills dir from active profile 2026-07-07 05:14:00 -07:00
slash_confirm.py
terminal_tool.py fix(interrupt): run user-approved commands from a clean interrupt slate 2026-07-06 04:58:42 -07:00
thread_context.py
threat_patterns.py
tirith_security.py
todo_tool.py
tool_backend_helpers.py
tool_output_limits.py
tool_result_storage.py
tool_search.py
transcription_tools.py
tts_tool.py
url_safety.py fix: repair URL authority whitespace before web fetches (#46363) 2026-07-07 02:39:36 -07:00
video_generation_tool.py
vision_tools.py
voice_mode.py
web_tools.py fix(web): correct 'disabled plugin' diagnosis for web backends (#59573) 2026-07-06 04:38:17 -07:00
website_policy.py
write_approval.py
x_search_tool.py
xai_http.py
xai_video_tools.py
yuanbao_tools.py