steerable-agent-runtime 0.6.30__tar.gz → 0.6.32__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/PKG-INFO +1 -1
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/pyproject.toml +1 -1
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime.egg-info/PKG-INFO +1 -1
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_hooks.py +43 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/README.md +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/setup.cfg +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/__init__.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/antihallucination.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/approval.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/approval_policy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/ask_user.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/branch.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/cache_control.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/calibration.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/compaction.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/compaction_policy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/config.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/default.harness.json +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/default.harness.yaml +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/delegation_gate.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/errors.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/gateway_catalog.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/handoff.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/harness.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/harness_spec.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/history.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/hooks.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/__init__.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/anthropic_native.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/compat.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/errors.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/google_genai.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/openai_compat.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/openai_responses.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/parts.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/presets.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/llm/system_proxy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/loop.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/maintenance.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/mcp.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/mcp_server.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/model_catalog.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/model_info.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/model_resolve.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/native_bridge.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/observation_aging.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/orchestration.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/otel.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/plugins.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/pool.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/pricing.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/pseudo.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/recording.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/reminders.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/replay.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/resume.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/retry.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/sandboxed.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/skills.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/spill.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/storage/__init__.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/storage/in_memory.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/storage/sqlalchemy_store.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/storage/sqlite_store.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/storage/write_lease.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/subagent.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/todo.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/tokens.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/tool_schema.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/tool_search.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/tools.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/tracing.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/transport/__init__.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/transport/fastapi_sse.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/transport/stdio_jsonrpc.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/world_state.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime.egg-info/SOURCES.txt +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime.egg-info/dependency_links.txt +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime.egg-info/requires.txt +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime.egg-info/top_level.txt +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_antihallucination.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_approval.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_approval_policy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_ask_user.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_branch.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_cache_control.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_cache_instrumentation.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_calibration.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_compaction.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_compaction_policy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_compaction_strategy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_config.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_content_parts.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_delegation_gate.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_error_taxonomy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_fragment_bounds.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_gateway_catalog.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_golden.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_handoff.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_harness.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_harness_spec.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_history.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_history_persistence.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_in_memory_storage.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_gemini_wire.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_responses_wire.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_stream_e2e.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_wire_helpers.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_long_session.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_cancellation.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_replay.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_sandbox_event.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_terminal.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_maintenance.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_mcp.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_mcp_server.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_catalog.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_equivalence.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_info.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_resolve.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_native_default.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_observation_aging.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_orchestration.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_otel.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_parallel_tools.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_plugins.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_provider_compat.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_provider_presets.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_pseudo.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_pyo3_api_surface.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_recording.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_reminders.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_replay_crosslang.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_resume.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_retry_hooks.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_safety_gate.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_sandboxed.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_skills.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_soft_timeout.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_spill.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_sqlite_storage.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_steer.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_storage_contract.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_stream_strip.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_subagent.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_system_proxy.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_todo.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_todo_gate.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tokens.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_exposure.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_hygiene.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_router.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_schema.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_timeout.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_trace_recorder.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_transport_jsonrpc.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_transport_sse.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_usage_attribution.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_world_state.py +0 -0
- {steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_write_lease.py +0 -0
|
@@ -429,6 +429,49 @@ async def test_on_request_error_retry_recovers() -> None:
|
|
|
429
429
|
assert "".join(deltas) == "recovered after retry"
|
|
430
430
|
|
|
431
431
|
|
|
432
|
+
@pytest.mark.asyncio
|
|
433
|
+
async def test_on_request_error_retry_recovers_mid_stream(
|
|
434
|
+
monkeypatch: pytest.MonkeyPatch,
|
|
435
|
+
) -> None:
|
|
436
|
+
monkeypatch.setenv("STEERABLE_RUST_CORELOOP", "0")
|
|
437
|
+
|
|
438
|
+
class _Provider:
|
|
439
|
+
name = "mid-stream-retry"
|
|
440
|
+
model = "mid-stream-retry"
|
|
441
|
+
|
|
442
|
+
def __init__(self) -> None:
|
|
443
|
+
self.attempts = 0
|
|
444
|
+
|
|
445
|
+
def stream(self, messages, *, tools=None, **kwargs):
|
|
446
|
+
async def _gen():
|
|
447
|
+
self.attempts += 1
|
|
448
|
+
if self.attempts == 1:
|
|
449
|
+
yield LLMStreamChunk(content_delta="partial")
|
|
450
|
+
raise ConnectionError("incomplete chunked read")
|
|
451
|
+
yield LLMStreamChunk(content_delta="recovered after retry")
|
|
452
|
+
yield LLMStreamChunk(finish_reason="stop")
|
|
453
|
+
|
|
454
|
+
return _gen()
|
|
455
|
+
|
|
456
|
+
class _Retry(NoopHooks):
|
|
457
|
+
def __init__(self) -> None:
|
|
458
|
+
self.calls = 0
|
|
459
|
+
|
|
460
|
+
async def on_request_error(self, error, transcript, ctx):
|
|
461
|
+
self.calls += 1
|
|
462
|
+
return RetryAction(kind="retry", delay_ms=0)
|
|
463
|
+
|
|
464
|
+
hooks = _Retry()
|
|
465
|
+
provider = _Provider()
|
|
466
|
+
loop = CoreLoop(provider, RouterToolExecutor(ToolRouter()), hooks=hooks)
|
|
467
|
+
events = await collect(loop.run([LLMMessage.text_of("user", "go")]))
|
|
468
|
+
|
|
469
|
+
assert provider.attempts == 2
|
|
470
|
+
assert hooks.calls == 1
|
|
471
|
+
assert final_completion(events)["status"] == "completed"
|
|
472
|
+
assert loop.history.projection[-1].content_text == "recovered after retry"
|
|
473
|
+
|
|
474
|
+
|
|
432
475
|
@pytest.mark.asyncio
|
|
433
476
|
async def test_on_request_error_fail_emits_error_event_and_ends() -> None:
|
|
434
477
|
provider = make_provider([{"error": ConnectionError("stream dropped")}])
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/src/steerable_agent_runtime/mcp.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_antihallucination.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_approval_policy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_cache_control.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_compaction_policy.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_compaction_strategy.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_content_parts.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_delegation_gate.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_error_taxonomy.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_fragment_bounds.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_gateway_catalog.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_harness_spec.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_history_persistence.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_in_memory_storage.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_gemini_wire.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_responses_wire.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_stream_e2e.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_llm_wire_helpers.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_long_session.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_cancellation.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_sandbox_event.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_loop_terminal.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_catalog.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_equivalence.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_model_resolve.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_native_default.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_observation_aging.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_orchestration.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_parallel_tools.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_provider_compat.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_provider_presets.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_pyo3_api_surface.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_replay_crosslang.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_soft_timeout.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_sqlite_storage.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_storage_contract.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_stream_strip.py
RENAMED
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_system_proxy.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_exposure.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_hygiene.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_tool_timeout.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_trace_recorder.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_transport_jsonrpc.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_transport_sse.py
RENAMED
|
File without changes
|
{steerable_agent_runtime-0.6.30 → steerable_agent_runtime-0.6.32}/tests/test_usage_attribution.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|