steerable-agent-runtime 0.6.39__tar.gz → 0.6.41__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.
Files changed (161) hide show
  1. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/PKG-INFO +3 -2
  2. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/pyproject.toml +3 -2
  3. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/antihallucination.py +1 -4
  4. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/calibration.py +1 -1
  5. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/compaction.py +2 -3
  6. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/loop.py +4 -8
  7. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/tokens.py +2 -2
  8. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime.egg-info/PKG-INFO +3 -2
  9. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime.egg-info/requires.txt +1 -1
  10. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_pyo3_api_surface.py +2 -17
  11. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/README.md +0 -0
  12. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/setup.cfg +0 -0
  13. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/__init__.py +0 -0
  14. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/approval.py +0 -0
  15. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/approval_policy.py +0 -0
  16. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/ask_user.py +0 -0
  17. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/branch.py +0 -0
  18. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/cache_control.py +0 -0
  19. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/compaction_policy.py +0 -0
  20. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/config.py +0 -0
  21. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/default.harness.json +0 -0
  22. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/default.harness.yaml +0 -0
  23. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/delegation_gate.py +0 -0
  24. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/errors.py +0 -0
  25. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/gateway_catalog.py +0 -0
  26. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/handoff.py +0 -0
  27. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/harness.py +0 -0
  28. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/harness_spec.py +0 -0
  29. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/history.py +0 -0
  30. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/hooks.py +0 -0
  31. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/__init__.py +0 -0
  32. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/anthropic_native.py +0 -0
  33. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/compat.py +0 -0
  34. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/errors.py +0 -0
  35. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/google_genai.py +0 -0
  36. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/openai_compat.py +0 -0
  37. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/openai_responses.py +0 -0
  38. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/parts.py +0 -0
  39. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/presets.py +0 -0
  40. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/llm/system_proxy.py +0 -0
  41. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/maintenance.py +0 -0
  42. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/mcp.py +0 -0
  43. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/mcp_server.py +0 -0
  44. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/model_catalog.py +0 -0
  45. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/model_info.py +0 -0
  46. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/model_resolve.py +0 -0
  47. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/native_bridge.py +0 -0
  48. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/observation_aging.py +0 -0
  49. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/orchestration.py +0 -0
  50. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/otel.py +0 -0
  51. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/plugins.py +0 -0
  52. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/pool.py +0 -0
  53. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/pricing.py +0 -0
  54. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/pseudo.py +0 -0
  55. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/recording.py +0 -0
  56. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/reminders.py +0 -0
  57. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/replay.py +0 -0
  58. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/resume.py +0 -0
  59. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/retry.py +0 -0
  60. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/sandboxed.py +0 -0
  61. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/skills.py +0 -0
  62. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/spill.py +0 -0
  63. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/storage/__init__.py +0 -0
  64. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/storage/in_memory.py +0 -0
  65. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/storage/sqlalchemy_store.py +0 -0
  66. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/storage/sqlite_store.py +0 -0
  67. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/storage/write_lease.py +0 -0
  68. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/subagent.py +0 -0
  69. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/todo.py +0 -0
  70. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/tool_schema.py +0 -0
  71. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/tool_search.py +0 -0
  72. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/tools.py +0 -0
  73. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/tracing.py +0 -0
  74. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/transport/__init__.py +0 -0
  75. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/transport/fastapi_sse.py +0 -0
  76. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/transport/stdio_jsonrpc.py +0 -0
  77. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime/world_state.py +0 -0
  78. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime.egg-info/SOURCES.txt +0 -0
  79. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime.egg-info/dependency_links.txt +0 -0
  80. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/src/steerable_agent_runtime.egg-info/top_level.txt +0 -0
  81. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_antihallucination.py +0 -0
  82. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_approval.py +0 -0
  83. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_approval_policy.py +0 -0
  84. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_ask_user.py +0 -0
  85. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_branch.py +0 -0
  86. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_cache_control.py +0 -0
  87. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_cache_instrumentation.py +0 -0
  88. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_calibration.py +0 -0
  89. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_compaction.py +0 -0
  90. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_compaction_policy.py +0 -0
  91. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_compaction_strategy.py +0 -0
  92. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_config.py +0 -0
  93. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_content_parts.py +0 -0
  94. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_delegation_gate.py +0 -0
  95. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_error_taxonomy.py +0 -0
  96. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_fragment_bounds.py +0 -0
  97. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_gateway_catalog.py +0 -0
  98. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_golden.py +0 -0
  99. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_handoff.py +0 -0
  100. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_harness.py +0 -0
  101. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_harness_spec.py +0 -0
  102. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_history.py +0 -0
  103. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_history_persistence.py +0 -0
  104. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_hooks.py +0 -0
  105. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_in_memory_storage.py +0 -0
  106. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_llm_gemini_wire.py +0 -0
  107. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_llm_responses_wire.py +0 -0
  108. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_llm_stream_e2e.py +0 -0
  109. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_llm_wire_helpers.py +0 -0
  110. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_long_session.py +0 -0
  111. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_loop.py +0 -0
  112. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_loop_cancellation.py +0 -0
  113. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_loop_replay.py +0 -0
  114. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_loop_sandbox_event.py +0 -0
  115. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_loop_terminal.py +0 -0
  116. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_maintenance.py +0 -0
  117. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_mcp.py +0 -0
  118. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_mcp_server.py +0 -0
  119. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_model_catalog.py +0 -0
  120. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_model_equivalence.py +0 -0
  121. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_model_info.py +0 -0
  122. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_model_resolve.py +0 -0
  123. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_native_default.py +0 -0
  124. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_observation_aging.py +0 -0
  125. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_orchestration.py +0 -0
  126. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_otel.py +0 -0
  127. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_parallel_tools.py +0 -0
  128. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_plugins.py +0 -0
  129. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_provider_compat.py +0 -0
  130. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_provider_presets.py +0 -0
  131. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_pseudo.py +0 -0
  132. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_recording.py +0 -0
  133. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_reminders.py +0 -0
  134. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_replay_crosslang.py +0 -0
  135. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_resume.py +0 -0
  136. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_retry_hooks.py +0 -0
  137. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_safety_gate.py +0 -0
  138. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_sandboxed.py +0 -0
  139. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_skills.py +0 -0
  140. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_soft_timeout.py +0 -0
  141. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_spill.py +0 -0
  142. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_sqlite_storage.py +0 -0
  143. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_steer.py +0 -0
  144. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_storage_contract.py +0 -0
  145. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_stream_strip.py +0 -0
  146. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_subagent.py +0 -0
  147. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_system_proxy.py +0 -0
  148. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_todo.py +0 -0
  149. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_todo_gate.py +0 -0
  150. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tokens.py +0 -0
  151. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tool_exposure.py +0 -0
  152. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tool_hygiene.py +0 -0
  153. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tool_router.py +0 -0
  154. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tool_schema.py +0 -0
  155. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_tool_timeout.py +0 -0
  156. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_trace_recorder.py +0 -0
  157. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_transport_jsonrpc.py +0 -0
  158. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_transport_sse.py +0 -0
  159. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_usage_attribution.py +0 -0
  160. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_world_state.py +0 -0
  161. {steerable_agent_runtime-0.6.39 → steerable_agent_runtime-0.6.41}/tests/test_write_lease.py +0 -0
@@ -1,13 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: steerable-agent-runtime
3
- Version: 0.6.39
3
+ Version: 0.6.41
4
4
  Summary: Steerable agent runtime: LLM, tool, storage, and transport adapters.
5
+ License: Apache-2.0
5
6
  Requires-Python: >=3.10
6
7
  Description-Content-Type: text/markdown
7
8
  Requires-Dist: pydantic>=2.10.0
8
9
  Requires-Dist: steerable-agent-protocol<1.0.0,>=0.1.0
9
10
  Requires-Dist: steerable-agent-harness<1.0.0,>=0.1.0
10
- Requires-Dist: steerable-agent-runtime-native==0.6.38
11
+ Requires-Dist: steerable-agent-runtime-native==0.6.39
11
12
  Provides-Extra: sqlalchemy
12
13
  Requires-Dist: sqlalchemy>=2.0; extra == "sqlalchemy"
13
14
  Provides-Extra: fastapi
@@ -1,7 +1,8 @@
1
1
  [project]
2
2
  name = "steerable-agent-runtime"
3
- version = "0.6.39"
3
+ version = "0.6.41"
4
4
  description = "Steerable agent runtime: LLM, tool, storage, and transport adapters."
5
+ license = { text = "Apache-2.0" }
5
6
  readme = "README.md"
6
7
  requires-python = ">=3.10"
7
8
  # Pre-1.0 inter-package pins use `>=X,<1.0.0` ranges — flexible enough
@@ -15,7 +16,7 @@ dependencies = [
15
16
  "pydantic>=2.10.0",
16
17
  "steerable-agent-protocol>=0.1.0,<1.0.0",
17
18
  "steerable-agent-harness>=0.1.0,<1.0.0",
18
- "steerable-agent-runtime-native==0.6.38",
19
+ "steerable-agent-runtime-native==0.6.39",
19
20
  ]
20
21
 
21
22
  [project.optional-dependencies]
@@ -1,7 +1,4 @@
1
- """Anti-hallucination layer — ported from deeppath-agent's TS loop
2
- (`local-backend/deferred-detector.ts` / `turn-router.ts` / `grounding-judge.ts`
3
- + the discipline-retry / narration wiring in `router.ts`) and sunk into
4
- CoreLoop as a ``LoopHooks`` implementation.
1
+ """Anti-hallucination layer implemented as a ``LoopHooks`` extension.
5
2
 
6
3
  Four capabilities, all fail-open / fail-conservative and bounded:
7
4
 
@@ -1,6 +1,6 @@
1
1
  """Usage calibration — per-request estimated-vs-observed token recording.
2
2
 
3
- The production aggregate regression (see CORELOOP_TODO P0) can only resolve
3
+ The aggregate regression can only resolve
4
4
  one global factor per model family: day-level cjk/other character sums are
5
5
  collinear (r=0.88), so per-char coefficients are not identifiable from
6
6
  aggregates. Per-request pairs are. This module closes that loop:
@@ -1,8 +1,7 @@
1
1
  """Context compaction — a ``pre_step`` hook.
2
2
 
3
- Local models run on a small context window (deeppath-agent uses 60k); a few
4
- rounds of verbose tool output fill it. Modeled on dsh's ``compaction-basic``:
5
- check pressure before the request is derived, and when over threshold rewrite
3
+ Local models often run with small context windows; a few rounds of verbose
4
+ tool output can fill them. Check pressure before the request is derived, and when over threshold rewrite
6
5
  the transcript so the turn can continue.
7
6
 
8
7
  Strategy (deterministic first, LLM optional):
@@ -9,7 +9,7 @@ module keeps the public `CoreLoop` API, configuration, events, history
9
9
  seeding, and the Python I/O ports the engine calls back into (provider,
10
10
  executor, hooks).
11
11
 
12
- Implemented so far (see docs/spec/core-loop.md + CORELOOP_TODO.md A3):
12
+ Implemented surface (see docs/spec/core-loop.md):
13
13
  * inner loop state machine and round control (Rust)
14
14
  * LLM stream consumption (via LLMProvider) with display hygiene:
15
15
  UTF-16 surrogate-pair carry and streaming pseudo/echo-block stripping
@@ -244,10 +244,7 @@ class LoopContext:
244
244
  class LoopConfig:
245
245
  """Tunables for one loop run.
246
246
 
247
- `max_tool_errors` uses CONSECUTIVE semantics (reset on success) — see
248
- docs/spec/core-loop.md "Known semantic divergences": deeppath-agent counts
249
- consecutive, deeppath-api counts cumulative; CoreLoop standardizes on
250
- consecutive and makes the threshold configurable.
247
+ `max_tool_errors` uses consecutive semantics and resets on success.
251
248
  """
252
249
 
253
250
  max_rounds: int = 32
@@ -309,9 +306,8 @@ class LoopConfig:
309
306
  reasoning_without_progress_chars: int | None = None
310
307
  #: Block re-issuing an identical ``(name, args)`` call within one run.
311
308
  #: Deterministic tools return identical output for identical input, so a
312
- #: repeat only burns tokens and can push the model into a retry loop
313
- #: (ported from deeppath-api's P0.3 guard; counts toward the consecutive
314
- #: tool-error breaker). No write/destructive exemption — idempotency of
309
+ #: repeat only burns tokens and can push the model into a retry loop. It
310
+ #: counts toward the consecutive tool-error breaker. No write/destructive exemption — idempotency of
315
311
  #: side effects belongs to the action layer below.
316
312
  tool_dedup: bool = True
317
313
  #: Include the full tool result in ``tool_call_result`` events (not just
@@ -4,7 +4,7 @@ Used where a real tokenizer is unavailable (compaction pressure trigger).
4
4
  Providers report true usage for the budget axis; this only needs to be
5
5
  proportionally right so thresholds trip at the same relative fill level.
6
6
 
7
- Base heuristic (parity with deeppath-agent's ``estimateTokens``):
7
+ Base heuristic:
8
8
  - CJK unified ideographs + CJK punctuation + fullwidth forms ≈ 0.6 token/char
9
9
  (empirically close for modern BPE tokenizers on Chinese text);
10
10
  - everything else ≈ 0.25 token/char (the classic ~4 chars/token rule);
@@ -65,7 +65,7 @@ def estimate_text_tokens(text: str) -> int:
65
65
  #: earlier than intended. The cjk/other per-char split is NOT identifiable
66
66
  #: from day-level aggregates (corr(cjk, other) = 0.88), so the correction is
67
67
  #: applied as a single global factor; per-char refinement needs per-request
68
- #: estimated/observed pairs (sidecar self-recording, see CORELOOP_TODO P3).
68
+ #: estimated/observed pairs from sidecar self-recording.
69
69
  MODEL_TOKEN_FACTORS: dict[str, float] = {"deepseek": 0.71}
70
70
 
71
71
 
@@ -1,13 +1,14 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: steerable-agent-runtime
3
- Version: 0.6.39
3
+ Version: 0.6.41
4
4
  Summary: Steerable agent runtime: LLM, tool, storage, and transport adapters.
5
+ License: Apache-2.0
5
6
  Requires-Python: >=3.10
6
7
  Description-Content-Type: text/markdown
7
8
  Requires-Dist: pydantic>=2.10.0
8
9
  Requires-Dist: steerable-agent-protocol<1.0.0,>=0.1.0
9
10
  Requires-Dist: steerable-agent-harness<1.0.0,>=0.1.0
10
- Requires-Dist: steerable-agent-runtime-native==0.6.38
11
+ Requires-Dist: steerable-agent-runtime-native==0.6.39
11
12
  Provides-Extra: sqlalchemy
12
13
  Requires-Dist: sqlalchemy>=2.0; extra == "sqlalchemy"
13
14
  Provides-Extra: fastapi
@@ -1,7 +1,7 @@
1
1
  pydantic>=2.10.0
2
2
  steerable-agent-protocol<1.0.0,>=0.1.0
3
3
  steerable-agent-harness<1.0.0,>=0.1.0
4
- steerable-agent-runtime-native==0.6.38
4
+ steerable-agent-runtime-native==0.6.39
5
5
 
6
6
  [all]
7
7
  sqlalchemy>=2.0
@@ -1,4 +1,4 @@
1
- """Freeze the CoreLoop calling surface deeppath-api already uses.
1
+ """Freeze the public CoreLoop calling surface.
2
2
 
3
3
  PyO3 must keep these imports, LoopEvent kinds, LoopHooks methods, and
4
4
  CoreLoop/LoopConfig constructor fields. A rename here is an API break.
@@ -16,28 +16,13 @@ import pytest
16
16
  from steerable_agent_runtime.loop import LoopEventKind, ToolExecutor
17
17
 
18
18
  REPO_ROOT = Path(__file__).resolve().parents[4]
19
- CATALOG_PATH = REPO_ROOT / "docs" / "spec" / "coreloop-rust-test-catalog.json"
19
+ CATALOG_PATH = REPO_ROOT / "docs" / "spec" / "runtime-contract.json"
20
20
 
21
21
 
22
22
  def _catalog() -> dict:
23
23
  return json.loads(CATALOG_PATH.read_text(encoding="utf-8"))
24
24
 
25
25
 
26
- def test_catalog_listed_framework_paths_exist() -> None:
27
- catalog = _catalog()
28
- missing: list[str] = []
29
- for stage in catalog["stages"]:
30
- for spec in stage.get("tests", []):
31
- if spec.get("repo") != "steerable-framework":
32
- continue
33
- if spec.get("status") == "planned":
34
- continue
35
- path = REPO_ROOT / spec["path"]
36
- if not path.exists():
37
- missing.append(spec["path"])
38
- assert missing == [], f"catalog paths missing: {missing}"
39
-
40
-
41
26
  def test_pyo3_required_imports_are_exported() -> None:
42
27
  catalog = _catalog()
43
28
  errors: list[str] = []