Files
nanobot/tests/agent/test_runtime_probe.py
T

61 lines
2.2 KiB
Python

"""Temporary change-amplification probe for the runtime foundation."""
import asyncio
from dataclasses import replace
from unittest.mock import AsyncMock, MagicMock
import pytest
from nanobot.agent.tools.context import RequestContext, current_request_context, request_context
from nanobot.agent.tools.spawn import SpawnTool
from nanobot.providers.base import GenerationSettings, LLMResponse
@pytest.mark.asyncio
async def test_runtime_probe_reaches_all_consumers_without_new_plumbing(loop_factory) -> None:
provider = MagicMock()
provider.get_default_model.return_value = "test-model"
provider.generation = GenerationSettings(temperature=0.1, max_tokens=1024)
provider.chat_with_retry = AsyncMock(
return_value=LLMResponse(content="ok", tool_calls=[]),
)
loop = loop_factory(provider=provider, context_window_tokens=32_768)
loop.consolidator.maybe_consolidate_by_tokens = AsyncMock()
loop._schedule_background = lambda coro: coro.close()
runtime = replace(loop.llm_runtime(), runtime_probe="session:probe")
seen: dict[str, object] = {}
original_runner_run = loop.runner.run
async def observe_runner(spec):
seen["runner"] = spec.runtime
seen["request_context"] = current_request_context()
return await original_runner_run(spec)
loop.runner.run = observe_runner
await loop.process_direct("probe", session_key="sdk:probe", runtime=runtime)
assert seen["runner"] is runtime
request_ctx = seen["request_context"]
assert isinstance(request_ctx, RequestContext)
assert request_ctx.runtime is runtime
assert all(
call.kwargs["runtime"] is runtime
for call in loop.consolidator.maybe_consolidate_by_tokens.call_args_list
)
async def observe_subagent(*args):
seen["subagent"] = args[5]
loop.subagents._run_subagent = AsyncMock(side_effect=observe_subagent)
tool = SpawnTool(loop.subagents)
with request_context(request_ctx):
result = await tool.execute(task="observe the runtime probe")
tasks = list(loop.subagents._running_tasks.values())
await asyncio.gather(*tasks)
assert "started" in result
assert seen["subagent"] is runtime
assert runtime.runtime_probe == "session:probe"