steerable-agent-runtime 0.6.35__tar.gz → 0.6.38__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.35 → steerable_agent_runtime-0.6.38}/PKG-INFO +6 -4
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/README.md +4 -3
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/pyproject.toml +5 -2
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/compat.py +15 -13
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/openai_compat.py +8 -6
- steerable_agent_runtime-0.6.38/src/steerable_agent_runtime/loop.py +1002 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/native_bridge.py +43 -28
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime.egg-info/PKG-INFO +6 -4
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime.egg-info/requires.txt +1 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_hooks.py +61 -5
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_llm_wire_helpers.py +11 -11
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_loop.py +5 -24
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_native_default.py +21 -39
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_provider_compat.py +8 -7
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_pyo3_api_surface.py +3 -2
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_soft_timeout.py +1 -6
- steerable_agent_runtime-0.6.35/src/steerable_agent_runtime/loop.py +0 -2789
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/setup.cfg +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/__init__.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/antihallucination.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/approval.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/approval_policy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/ask_user.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/branch.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/cache_control.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/calibration.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/compaction.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/compaction_policy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/config.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/default.harness.json +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/default.harness.yaml +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/delegation_gate.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/errors.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/gateway_catalog.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/handoff.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/harness.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/harness_spec.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/history.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/hooks.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/__init__.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/anthropic_native.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/errors.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/google_genai.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/openai_responses.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/parts.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/presets.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/llm/system_proxy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/maintenance.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/mcp.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/mcp_server.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/model_catalog.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/model_info.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/model_resolve.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/observation_aging.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/orchestration.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/otel.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/plugins.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/pool.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/pricing.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/pseudo.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/recording.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/reminders.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/replay.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/resume.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/retry.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/sandboxed.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/skills.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/spill.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/storage/__init__.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/storage/in_memory.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/storage/sqlalchemy_store.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/storage/sqlite_store.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/storage/write_lease.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/subagent.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/todo.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/tokens.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/tool_schema.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/tool_search.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/tools.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/tracing.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/transport/__init__.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/transport/fastapi_sse.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/transport/stdio_jsonrpc.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime/world_state.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime.egg-info/SOURCES.txt +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime.egg-info/dependency_links.txt +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/src/steerable_agent_runtime.egg-info/top_level.txt +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_antihallucination.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_approval.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_approval_policy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_ask_user.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_branch.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_cache_control.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_cache_instrumentation.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_calibration.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_compaction.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_compaction_policy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_compaction_strategy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_config.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_content_parts.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_delegation_gate.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_error_taxonomy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_fragment_bounds.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_gateway_catalog.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_golden.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_handoff.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_harness.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_harness_spec.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_history.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_history_persistence.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_in_memory_storage.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_llm_gemini_wire.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_llm_responses_wire.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_llm_stream_e2e.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_long_session.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_loop_cancellation.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_loop_replay.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_loop_sandbox_event.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_loop_terminal.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_maintenance.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_mcp.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_mcp_server.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_model_catalog.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_model_equivalence.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_model_info.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_model_resolve.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_observation_aging.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_orchestration.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_otel.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_parallel_tools.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_plugins.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_provider_presets.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_pseudo.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_recording.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_reminders.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_replay_crosslang.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_resume.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_retry_hooks.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_safety_gate.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_sandboxed.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_skills.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_spill.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_sqlite_storage.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_steer.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_storage_contract.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_stream_strip.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_subagent.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_system_proxy.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_todo.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_todo_gate.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tokens.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tool_exposure.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tool_hygiene.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tool_router.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tool_schema.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_tool_timeout.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_trace_recorder.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_transport_jsonrpc.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_transport_sse.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_usage_attribution.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_world_state.py +0 -0
- {steerable_agent_runtime-0.6.35 → steerable_agent_runtime-0.6.38}/tests/test_write_lease.py +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: steerable-agent-runtime
|
|
3
|
-
Version: 0.6.
|
|
3
|
+
Version: 0.6.38
|
|
4
4
|
Summary: Steerable agent runtime: LLM, tool, storage, and transport adapters.
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
7
7
|
Requires-Dist: pydantic>=2.10.0
|
|
8
8
|
Requires-Dist: steerable-agent-protocol<1.0.0,>=0.1.0
|
|
9
9
|
Requires-Dist: steerable-agent-harness<1.0.0,>=0.1.0
|
|
10
|
+
Requires-Dist: steerable-agent-runtime-native==0.6.38
|
|
10
11
|
Provides-Extra: sqlalchemy
|
|
11
12
|
Requires-Dist: sqlalchemy>=2.0; extra == "sqlalchemy"
|
|
12
13
|
Provides-Extra: fastapi
|
|
@@ -60,9 +61,10 @@ pip install "steerable-agent-runtime[sqlalchemy]"
|
|
|
60
61
|
pip install "steerable-agent-runtime[fastapi]"
|
|
61
62
|
```
|
|
62
63
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
CoreLoop execution is the Rust engine. `steerable-agent-runtime-native`
|
|
65
|
+
is a required dependency of this package (same lockstep version). A
|
|
66
|
+
missing wheel fails import or `CoreLoop.run()`; there is no Python
|
|
67
|
+
engine fallback.
|
|
66
68
|
|
|
67
69
|
```bash
|
|
68
70
|
pip install steerable-agent-runtime-native
|
|
@@ -35,9 +35,10 @@ pip install "steerable-agent-runtime[sqlalchemy]"
|
|
|
35
35
|
pip install "steerable-agent-runtime[fastapi]"
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
38
|
+
CoreLoop execution is the Rust engine. `steerable-agent-runtime-native`
|
|
39
|
+
is a required dependency of this package (same lockstep version). A
|
|
40
|
+
missing wheel fails import or `CoreLoop.run()`; there is no Python
|
|
41
|
+
engine fallback.
|
|
41
42
|
|
|
42
43
|
```bash
|
|
43
44
|
pip install steerable-agent-runtime-native
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "steerable-agent-runtime"
|
|
3
|
-
version = "0.6.
|
|
3
|
+
version = "0.6.38"
|
|
4
4
|
description = "Steerable agent runtime: LLM, tool, storage, and transport adapters."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
requires-python = ">=3.10"
|
|
7
7
|
# Pre-1.0 inter-package pins use `>=X,<1.0.0` ranges — flexible enough
|
|
8
8
|
# that any 0.x lockstep version installs cleanly. `bump_to.sh` keeps
|
|
9
|
-
# all
|
|
9
|
+
# all 8 Steerable packages at the same X.Y.Z, enforced by the
|
|
10
10
|
# release.yml lockstep gate. Tighten to `~=1.0` post-GA.
|
|
11
11
|
# See packages/agent-harness/py/pyproject.toml for the rationale.
|
|
12
|
+
# CoreLoop execution is the Rust engine. The matching native wheel
|
|
13
|
+
# is a hard dependency: install or startup fails if it is missing.
|
|
12
14
|
dependencies = [
|
|
13
15
|
"pydantic>=2.10.0",
|
|
14
16
|
"steerable-agent-protocol>=0.1.0,<1.0.0",
|
|
15
17
|
"steerable-agent-harness>=0.1.0,<1.0.0",
|
|
18
|
+
"steerable-agent-runtime-native==0.6.38",
|
|
16
19
|
]
|
|
17
20
|
|
|
18
21
|
[project.optional-dependencies]
|
|
@@ -73,7 +73,7 @@ _FLAG_WIRE_SPEC: tuple[tuple[str, str, str, str], ...] = (
|
|
|
73
73
|
"echoEmptyReasoningForToolCalls",
|
|
74
74
|
"echo_empty_reasoning_for_tool_calls",
|
|
75
75
|
"bool",
|
|
76
|
-
'Echo the reasoning field as "" on
|
|
76
|
+
'Echo the reasoning field as "" on every assistant turn that produced no reasoning',
|
|
77
77
|
),
|
|
78
78
|
(
|
|
79
79
|
"cachedTokensFields",
|
|
@@ -144,13 +144,13 @@ class OpenAICompatFlags:
|
|
|
144
144
|
#: ("The `reasoning_content` in the thinking mode must be passed back to
|
|
145
145
|
#: the API.", live-verified 2026-09-08 with deepseek-v4-flash).
|
|
146
146
|
reasoning_echo_field: str = "reasoning"
|
|
147
|
-
#: Whether an assistant message
|
|
148
|
-
#:
|
|
149
|
-
#:
|
|
150
|
-
#:
|
|
151
|
-
#:
|
|
152
|
-
#:
|
|
153
|
-
#:
|
|
147
|
+
#: Whether an assistant message with *no* reasoning must still echo the
|
|
148
|
+
#: field (as ``""``). DeepSeek thinking mode 400s the follow-up when
|
|
149
|
+
#: ``reasoning_content`` is absent from **any** replayed assistant
|
|
150
|
+
#: message, not only tool-call rounds: a narration-requested final
|
|
151
|
+
#: summary, a cut draft, or a resumed record can all legitimately have
|
|
152
|
+
#: no reasoning and still poison the next request. Reference vendors omit
|
|
153
|
+
#: the field instead.
|
|
154
154
|
echo_empty_reasoning_for_tool_calls: bool = False
|
|
155
155
|
#: Usage locations read for cached prompt tokens, in preference order.
|
|
156
156
|
#: Dotted paths resolve nested objects. OpenAI nests under
|
|
@@ -218,11 +218,13 @@ PROVIDER_COMPAT_HOSTS: list[tuple[str, OpenAICompatFlags]] = [
|
|
|
218
218
|
# does not support this tool_choice", live-verified 2026-09-08
|
|
219
219
|
# with deepseek-v4-flash); ``auto`` and omission both work.
|
|
220
220
|
supports_forced_tool_choice=False,
|
|
221
|
-
# Thinking mode also 400s
|
|
222
|
-
#
|
|
223
|
-
# produced no reasoning at all (live-verified 2026-09-13
|
|
224
|
-
# resumed record
|
|
225
|
-
#
|
|
221
|
+
# Thinking mode also 400s when the ``reasoning_content`` key is
|
|
222
|
+
# missing from *any* replayed assistant message, even when that
|
|
223
|
+
# round produced no reasoning at all (live-verified 2026-09-13
|
|
224
|
+
# on a resumed record; reproduced 2026-09-16 on a
|
|
225
|
+
# narration-requested final summary: "The `reasoning_content` in
|
|
226
|
+
# the thinking mode must be passed back to the API."). Echo an
|
|
227
|
+
# empty string on every assistant message without reasoning.
|
|
226
228
|
echo_empty_reasoning_for_tool_calls=True,
|
|
227
229
|
cached_tokens_fields=(
|
|
228
230
|
"prompt_cache_hit_tokens",
|
|
@@ -599,12 +599,14 @@ def _encode_message(
|
|
|
599
599
|
out["reasoning_details"] = message.reasoning_details
|
|
600
600
|
elif message.reasoning:
|
|
601
601
|
out[flags.reasoning_echo_field] = message.reasoning
|
|
602
|
-
elif message.
|
|
603
|
-
# DeepSeek thinking mode:
|
|
604
|
-
# must
|
|
605
|
-
#
|
|
606
|
-
#
|
|
607
|
-
#
|
|
602
|
+
elif message.role == "assistant" and flags.echo_empty_reasoning_for_tool_calls:
|
|
603
|
+
# DeepSeek thinking mode: **every** assistant message in the replayed
|
|
604
|
+
# history must carry the reasoning key, not just tool-call rounds.
|
|
605
|
+
# A round can legitimately emit no reasoning (a short final summary,
|
|
606
|
+
# a narration-requested close-out, a cut/resumed draft); omitting the
|
|
607
|
+
# key 400s the very next request with "The `reasoning_content` in the
|
|
608
|
+
# thinking mode must be passed back to the API.". Send "" so the
|
|
609
|
+
# key round-trips even when this particular round produced none.
|
|
608
610
|
out[flags.reasoning_echo_field] = ""
|
|
609
611
|
return out
|
|
610
612
|
|