feat: add ephemeral /btw command for side questions#3504
feat: add ephemeral /btw command for side questions#3504areu01or00 wants to merge 1 commit intoNousResearch:mainfrom
Conversation
|
Reviewing this because I genuinely want this feature — ephemeral side questions is something I've wanted for a while. So this is coming from a place of "let's get this mergeable." The ephemeral isolation design is solid — Some issues worth addressing though: Critical
High
Medium
Nit
Good enough to ship after addressing the critical and high items. The rest can be follow-ups. |
Adds /btw <question> — ask a quick follow-up using the current session context without interrupting the main conversation. - Snapshots conversation history, answers with a no-tools agent - Response is not persisted to session history or DB - Runs in a background thread (CLI) / async task (gateway) - Per-session guard prevents concurrent /btw in gateway Implementation: - model_tools.py: enabled_toolsets=[] now correctly means "no tools" (was falsy, fell through to default "all tools") - run_agent.py: persist_session=False gates _persist_session() - cli.py: _handle_btw_command (background thread, Rich panel output) - gateway/run.py: _handle_btw_command + _run_btw_task (async task) - hermes_cli/commands.py: CommandDef for "btw" Inspired by PR #3504 by areu01or00, reimplemented cleanly on current main with the enabled_toolsets=[] fix and without the __btw_no_tools__ hack.
|
Merged via #4161 — reimplemented cleanly on current main. Your design was the right approach (snapshot history, no-tools agent, persist_session flag). Key changes: fixed enabled_toolsets=[] to actually mean 'no tools' instead of the btw_no_tools hack, added skip_context_files, and cleaned up the gateway code. Thanks @areu01or00! |
Adds /btw <question> — ask a quick follow-up using the current session context without interrupting the main conversation. - Snapshots conversation history, answers with a no-tools agent - Response is not persisted to session history or DB - Runs in a background thread (CLI) / async task (gateway) - Per-session guard prevents concurrent /btw in gateway Implementation: - model_tools.py: enabled_toolsets=[] now correctly means "no tools" (was falsy, fell through to default "all tools") - run_agent.py: persist_session=False gates _persist_session() - cli.py: _handle_btw_command (background thread, Rich panel output) - gateway/run.py: _handle_btw_command + _run_btw_task (async task) - hermes_cli/commands.py: CommandDef for "btw" Inspired by PR #3504 by areu01or00, reimplemented cleanly on current main with the enabled_toolsets=[] fix and without the __btw_no_tools__ hack.
What does this PR do?
Adds an ephemeral /btw side-question command to Hermes.
/btw lets users ask a quick follow-up without interrupting the main session. It snapshots the current session context, answers with a separate no-tools helper agent, and does not persist the /btw exchange back into the main session
history.
This is implemented for both the interactive CLI and the messaging gateway.
Related Issue
No tracked issue.
Type of Change
Changes Made
How to Test
python -m pytest tests/test_cli_btw_command.py
python -m pytest tests/gateway/test_btw_command.py
python -m pytest tests/hermes_cli/test_commands.py
Verify the /btw reply appears separately and does not interrupt the main task.
Verify the reply appears in the same chat/thread, does not interrupt the main run, and does not persist into main session history.
Checklist
Code
Documentation & Housekeeping
Screenshots / Logs
Targeted test results: