mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
feat(cli): make reasoning effort session-scoped
This commit is contained in:
parent
8b6fde3a35
commit
8590c2d0d9
9 changed files with 269 additions and 50 deletions
|
|
@ -154,6 +154,60 @@ class TestHandleReasoningCommand(unittest.TestCase):
|
|||
level = rc.get("effort", "medium")
|
||||
self.assertEqual(level, "xhigh")
|
||||
|
||||
def test_effort_defaults_to_global_save(self):
|
||||
"""Plain /reasoning <level> keeps the existing config-writing behavior."""
|
||||
from cli import CLI_CONFIG
|
||||
from hermes_cli.cli_commands_mixin import CLICommandsMixin
|
||||
|
||||
stub = self._make_cli(reasoning_config={"enabled": True, "effort": "medium"})
|
||||
with patch.dict(CLI_CONFIG.setdefault("agent", {}), {"reasoning_effort": "medium"}), \
|
||||
patch("cli.save_config_value", return_value=True) as save_config, \
|
||||
patch("cli._cprint"):
|
||||
CLICommandsMixin._handle_reasoning_command(stub, "/reasoning high")
|
||||
self.assertEqual(CLI_CONFIG["agent"]["reasoning_effort"], "high")
|
||||
|
||||
save_config.assert_called_once_with("agent.reasoning_effort", "high")
|
||||
self.assertEqual(stub.reasoning_config, {"enabled": True, "effort": "high"})
|
||||
self.assertIsNone(stub.agent)
|
||||
|
||||
def test_effort_session_flag_does_not_persist_config(self):
|
||||
"""--session opts into a temporary session-only effort override."""
|
||||
from hermes_cli.cli_commands_mixin import CLICommandsMixin
|
||||
|
||||
stub = self._make_cli(reasoning_config={"enabled": True, "effort": "medium"})
|
||||
with patch("cli.save_config_value") as save_config, patch("cli._cprint"):
|
||||
CLICommandsMixin._handle_reasoning_command(stub, "/reasoning high --session")
|
||||
|
||||
save_config.assert_not_called()
|
||||
self.assertEqual(stub.reasoning_config, {"enabled": True, "effort": "high"})
|
||||
self.assertIsNone(stub.agent)
|
||||
|
||||
def test_new_session_clears_session_reasoning_override(self):
|
||||
"""/new and /clear must not carry a session-only effort override forward."""
|
||||
from cli import CLI_CONFIG, HermesCLI
|
||||
|
||||
agent = SimpleNamespace(
|
||||
reasoning_config={"enabled": True, "effort": "high"},
|
||||
reset_session_state=MagicMock(),
|
||||
)
|
||||
stub = SimpleNamespace(
|
||||
agent=agent,
|
||||
conversation_history=[],
|
||||
session_id="old-session",
|
||||
_session_db=None,
|
||||
_pending_title=None,
|
||||
_resumed=False,
|
||||
reasoning_config={"enabled": True, "effort": "high"},
|
||||
_notify_session_boundary=MagicMock(),
|
||||
)
|
||||
|
||||
with patch.dict(CLI_CONFIG.setdefault("agent", {}), {"reasoning_effort": "medium"}):
|
||||
HermesCLI.new_session(stub, silent=True)
|
||||
|
||||
self.assertEqual(stub.reasoning_config, {"enabled": True, "effort": "medium"})
|
||||
self.assertEqual(agent.reasoning_config, {"enabled": True, "effort": "medium"})
|
||||
agent.reset_session_state.assert_called_once()
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Reasoning extraction and result dict
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue