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
+29 -2
View File
@@ -57,8 +57,8 @@ def test_tool_context_has_required_fields():
field_names = {f.name for f in fields(ToolContext)}
required = {
"config", "workspace", "bus", "subagent_manager",
"cron_service", "file_state_store", "provider_snapshot_loader",
"image_generation_provider_configs", "timezone",
"cron_service", "exec_session_manager", "file_state_store",
"provider_snapshot_loader", "image_generation_provider_configs", "timezone",
}
assert required <= field_names
@@ -68,6 +68,7 @@ def test_tool_context_defaults():
assert ctx.bus is None
assert ctx.subagent_manager is None
assert ctx.cron_service is None
assert ctx.exec_session_manager is None
assert ctx.provider_snapshot_loader is None
assert ctx.image_generation_provider_configs is None
assert ctx.timezone == "UTC"
@@ -137,6 +138,32 @@ def test_loader_registers_exec_with_real_tools_config(tmp_path):
assert registry.has("exec")
def test_loader_wires_shared_exec_session_manager(tmp_path):
from types import SimpleNamespace
from nanobot.agent.tools.exec_session import ExecSessionManager
from nanobot.agent.tools.registry import ToolRegistry
from nanobot.config.schema import ToolsConfig
manager = ExecSessionManager()
ctx = ToolContext(
config=ToolsConfig(),
workspace=str(tmp_path),
subagent_manager=SimpleNamespace(
get_running_count=lambda: 0,
max_concurrent_subagents=4,
),
exec_session_manager=manager,
timezone="UTC",
)
registry = ToolRegistry()
ToolLoader().load(ctx, registry)
assert registry.get("exec")._session_manager is manager
assert registry.get("write_stdin")._manager is manager
assert registry.get("list_exec_sessions")._manager is manager
# --- Task 4: _FsTool.create() ---