diff --git a/nanobot/agent/runner.py b/nanobot/agent/runner.py index 373d21815..bba644bd0 100644 --- a/nanobot/agent/runner.py +++ b/nanobot/agent/runner.py @@ -612,7 +612,7 @@ class AgentRunner: wants_progress_streaming = ( not wants_streaming and spec.progress_callback is not None - and getattr(self.provider, "stream_progress_via_chat_stream", False) is True + and getattr(self.provider, "supports_progress_deltas", False) is True ) if wants_streaming: diff --git a/nanobot/providers/base.py b/nanobot/providers/base.py index 40072b82e..a60ea09eb 100644 --- a/nanobot/providers/base.py +++ b/nanobot/providers/base.py @@ -91,7 +91,7 @@ _SYNTHETIC_USER_CONTENT = "(conversation continued)" class LLMProvider(ABC): """Base class for LLM providers.""" - stream_progress_via_chat_stream = False + supports_progress_deltas = False _CHAT_RETRY_DELAYS = (1, 2, 4) _PERSISTENT_MAX_DELAY = 60 diff --git a/nanobot/providers/openai_codex_provider.py b/nanobot/providers/openai_codex_provider.py index 103da9a7b..0cc8e5ca2 100644 --- a/nanobot/providers/openai_codex_provider.py +++ b/nanobot/providers/openai_codex_provider.py @@ -26,7 +26,7 @@ DEFAULT_ORIGINATOR = "nanobot" class OpenAICodexProvider(LLMProvider): """Use Codex OAuth to call the Responses API.""" - stream_progress_via_chat_stream = True + supports_progress_deltas = True def __init__(self, default_model: str = "openai-codex/gpt-5.1-codex"): super().__init__(api_key=None, api_base=None) diff --git a/tests/agent/test_loop_progress.py b/tests/agent/test_loop_progress.py index d4662edad..0c32a8f16 100644 --- a/tests/agent/test_loop_progress.py +++ b/tests/agent/test_loop_progress.py @@ -137,7 +137,7 @@ class TestToolEventProgress: """Providers that opt in can stream content deltas through _progress messages.""" bus = MessageBus() provider = MagicMock() - provider.stream_progress_via_chat_stream = True + provider.supports_progress_deltas = True provider.get_default_model.return_value = "openai-codex/gpt-5.5" async def chat_stream_with_retry(*, on_content_delta, **kwargs): @@ -175,7 +175,7 @@ class TestToolEventProgress: ) -> None: """If content was already streamed as progress, tool setup should not repeat it.""" loop = _make_loop(tmp_path) - loop.provider.stream_progress_via_chat_stream = True + loop.provider.supports_progress_deltas = True tool_call = ToolCallRequest(id="call1", name="custom_tool", arguments={"path": "foo.txt"}) calls = iter([ LLMResponse(content="I will inspect it.", tool_calls=[tool_call]), diff --git a/tests/providers/test_providers_init.py b/tests/providers/test_providers_init.py index 97c869def..620cf8daf 100644 --- a/tests/providers/test_providers_init.py +++ b/tests/providers/test_providers_init.py @@ -43,7 +43,7 @@ def test_explicit_provider_import_still_works(monkeypatch) -> None: assert "nanobot.providers.anthropic_provider" in sys.modules -def test_openai_codex_opts_into_progress_streaming() -> None: +def test_openai_codex_supports_progress_deltas() -> None: from nanobot.providers.openai_codex_provider import OpenAICodexProvider - assert OpenAICodexProvider.stream_progress_via_chat_stream is True + assert OpenAICodexProvider.supports_progress_deltas is True