refactor(providers): move provider snapshot creation into factory

This commit is contained in:
Xubin Ren
2026-04-26 14:05:13 +00:00
parent 65b0ae81af
commit f670da6c70
6 changed files with 53 additions and 53 deletions
+3 -3
View File
@@ -3,8 +3,8 @@ from types import SimpleNamespace
from unittest.mock import MagicMock
from nanobot.agent.loop import AgentLoop
from nanobot.agent.runtime import AgentRuntime
from nanobot.bus.queue import MessageBus
from nanobot.providers.factory import ProviderSnapshot
def _provider(default_model: str, max_tokens: int = 123) -> MagicMock:
@@ -23,7 +23,7 @@ def test_runtime_refresh_updates_loop_dependents(tmp_path: Path) -> None:
workspace=tmp_path,
model="old-model",
context_window_tokens=1000,
runtime_loader=lambda: AgentRuntime(
provider_snapshot_loader=lambda: ProviderSnapshot(
provider=new_provider,
model="new-model",
context_window_tokens=2000,
@@ -31,7 +31,7 @@ def test_runtime_refresh_updates_loop_dependents(tmp_path: Path) -> None:
),
)
loop._refresh_runtime()
loop._refresh_provider_snapshot()
assert loop.provider is new_provider
assert loop.model == "new-model"
+15 -15
View File
@@ -8,11 +8,11 @@ from unittest.mock import AsyncMock, MagicMock, patch
import pytest
from typer.testing import CliRunner
from nanobot.agent.runtime import AgentRuntime
from nanobot.bus.events import OutboundMessage
from nanobot.cli.commands import _make_provider, app
from nanobot.config.schema import Config
from nanobot.cron.types import CronJob, CronPayload
from nanobot.providers.factory import ProviderSnapshot
from nanobot.providers.openai_codex_provider import _strip_model_prefix
from nanobot.providers.registry import find_by_name
@@ -777,8 +777,8 @@ def _stop_gateway_provider(_config) -> object:
raise _StopGatewayError("stop")
def _test_agent_runtime(provider: object, config: Config) -> AgentRuntime:
return AgentRuntime(
def _test_provider_snapshot(provider: object, config: Config) -> ProviderSnapshot:
return ProviderSnapshot(
provider=provider,
model=config.agents.defaults.model,
context_window_tokens=config.agents.defaults.context_window_tokens,
@@ -815,12 +815,12 @@ def _patch_cli_command_runtime(
provider_factory,
)
monkeypatch.setattr(
"nanobot.agent.runtime.build_agent_runtime",
lambda _config: _test_agent_runtime(provider_factory(_config), _config),
"nanobot.providers.factory.build_provider_snapshot",
lambda _config: _test_provider_snapshot(provider_factory(_config), _config),
)
monkeypatch.setattr(
"nanobot.agent.runtime.load_agent_runtime",
lambda _config_path=None: _test_agent_runtime(provider_factory(config), config),
"nanobot.providers.factory.load_provider_snapshot",
lambda _config_path=None: _test_provider_snapshot(provider_factory(config), config),
)
if message_bus is not None:
@@ -962,12 +962,12 @@ def test_gateway_cron_evaluator_receives_scheduled_reminder_context(
monkeypatch.setattr("nanobot.cli.commands.sync_workspace_templates", lambda _path: None)
monkeypatch.setattr("nanobot.cli.commands._make_provider", lambda _config: provider)
monkeypatch.setattr(
"nanobot.agent.runtime.build_agent_runtime",
lambda _config: _test_agent_runtime(provider, _config),
"nanobot.providers.factory.build_provider_snapshot",
lambda _config: _test_provider_snapshot(provider, _config),
)
monkeypatch.setattr(
"nanobot.agent.runtime.load_agent_runtime",
lambda _config_path=None: _test_agent_runtime(provider, config),
"nanobot.providers.factory.load_provider_snapshot",
lambda _config_path=None: _test_provider_snapshot(provider, config),
)
monkeypatch.setattr("nanobot.bus.queue.MessageBus", lambda: bus)
@@ -1111,12 +1111,12 @@ def test_gateway_cron_job_suppresses_intermediate_progress(
monkeypatch.setattr("nanobot.cli.commands.sync_workspace_templates", lambda _path: None)
monkeypatch.setattr("nanobot.cli.commands._make_provider", lambda _config: object())
monkeypatch.setattr(
"nanobot.agent.runtime.build_agent_runtime",
lambda _config: _test_agent_runtime(object(), _config),
"nanobot.providers.factory.build_provider_snapshot",
lambda _config: _test_provider_snapshot(object(), _config),
)
monkeypatch.setattr(
"nanobot.agent.runtime.load_agent_runtime",
lambda _config_path=None: _test_agent_runtime(object(), config),
"nanobot.providers.factory.load_provider_snapshot",
lambda _config_path=None: _test_provider_snapshot(object(), config),
)
monkeypatch.setattr("nanobot.bus.queue.MessageBus", lambda: bus)
monkeypatch.setattr("nanobot.session.manager.SessionManager", lambda _workspace: object())