fix(exec): isolate exec session managers

This commit is contained in:
yu-xin-c
2026-07-18 17:35:56 +08:00
committed by Xubin Ren
parent 7ac9a46978
commit 995cc44e89
8 changed files with 132 additions and 12 deletions
@@ -0,0 +1,40 @@
from types import SimpleNamespace
from unittest.mock import MagicMock
from nanobot.agent.loop import AgentLoop
from nanobot.bus.queue import MessageBus
def _provider() -> MagicMock:
provider = MagicMock()
provider.get_default_model.return_value = "test-model"
provider.generation = SimpleNamespace(max_tokens=4096, temperature=0.1, reasoning_effort=None)
return provider
def test_agent_loops_do_not_share_exec_session_managers(tmp_path):
loop_a = AgentLoop(
bus=MessageBus(),
provider=_provider(),
workspace=tmp_path / "a",
model="test-model",
context_window_tokens=4096,
)
loop_b = AgentLoop(
bus=MessageBus(),
provider=_provider(),
workspace=tmp_path / "b",
model="test-model",
context_window_tokens=4096,
)
exec_a = loop_a.tools.get("exec")
stdin_a = loop_a.tools.get("write_stdin")
list_a = loop_a.tools.get("list_exec_sessions")
exec_b = loop_b.tools.get("exec")
assert exec_a._session_manager is loop_a._exec_session_manager
assert stdin_a._manager is loop_a._exec_session_manager
assert list_a._manager is loop_a._exec_session_manager
assert exec_b._session_manager is loop_b._exec_session_manager
assert loop_a._exec_session_manager is not loop_b._exec_session_manager