AbstractRuntime 0.4.25__tar.gz → 0.4.26__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 (341) hide show
  1. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/ACKNOWLEDGMENTS.md +3 -5
  2. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CHANGELOG.md +11 -1
  3. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CONTRIBUTING.md +3 -3
  4. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/PKG-INFO +31 -62
  5. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/README.md +18 -20
  6. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/api.md +5 -5
  7. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/architecture.md +1 -1
  8. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/faq.md +2 -2
  9. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/getting-started.md +10 -5
  10. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/integrations/abstractcore.md +10 -12
  11. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/mcp-worker.md +2 -3
  12. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/tools-comms.md +1 -1
  13. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/troubleshooting.md +6 -7
  14. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/README.md +2 -2
  15. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/llms-full.txt +10 -9
  16. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/llms.txt +5 -5
  17. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/pyproject.toml +14 -54
  18. abstractruntime-0.4.26/release-notes.md +6 -0
  19. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +94 -0
  20. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/llm_client.py +233 -8
  21. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +115 -2
  22. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_multimodal_abstractcore_integration.py +89 -0
  23. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_packaging_extras.py +17 -19
  24. abstractruntime-0.4.26/tests/test_provider_endpoint_profile_resolution.py +130 -0
  25. abstractruntime-0.4.25/release-notes.md +0 -9
  26. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.github/workflows/ci.yml +0 -0
  27. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.github/workflows/release.yml +0 -0
  28. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.gitignore +0 -0
  29. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CODE_OF_CONDUCT.md +0 -0
  30. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/LICENSE +0 -0
  31. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/ROADMAP.md +0 -0
  32. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/SECURITY.md +0 -0
  33. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/README.md +0 -0
  34. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
  35. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
  36. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
  37. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
  38. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
  39. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
  40. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
  41. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/README.md +0 -0
  42. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/README.md +0 -0
  43. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/001_runtime_kernel.md +0 -0
  44. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
  45. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
  46. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
  47. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
  48. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
  49. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
  50. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
  51. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/003_wait_primitives.md +0 -0
  52. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
  53. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/004_scheduler_driver.md +0 -0
  54. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
  55. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
  56. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
  57. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/009_artifact_store.md +0 -0
  58. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/010_examples_and_composition.md +0 -0
  59. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/011_subworkflow_support.md +0 -0
  60. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
  61. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
  62. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
  63. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
  64. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
  65. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
  66. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
  67. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
  68. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
  69. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
  70. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
  71. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
  72. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
  73. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
  74. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
  75. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
  76. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
  77. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
  78. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
  79. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
  80. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
  81. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/004_tests.md +0 -0
  82. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/005_docs_updates.md +0 -0
  83. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
  84. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
  85. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
  86. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/README.md +0 -0
  87. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
  88. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
  89. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
  90. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
  91. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
  92. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
  93. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
  94. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
  95. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
  96. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/evidence.md +0 -0
  97. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/limits.md +0 -0
  98. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/manual_testing.md +0 -0
  99. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/proposal.md +0 -0
  100. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/provenance.md +0 -0
  101. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/snapshots.md +0 -0
  102. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/workflow-bundles.md +0 -0
  103. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/emails.config.example.yaml +0 -0
  104. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/01_hello_world.py +0 -0
  105. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/02_ask_user.py +0 -0
  106. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/03_wait_until.py +0 -0
  107. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/04_multi_step.py +0 -0
  108. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/05_persistence.py +0 -0
  109. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/06_llm_integration.py +0 -0
  110. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/07_react_agent.py +0 -0
  111. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/mkdocs.yml +0 -0
  112. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/pytest.ini +0 -0
  113. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/__init__.py +0 -0
  114. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/__init__.py +0 -0
  115. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/config.py +0 -0
  116. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/event_keys.py +0 -0
  117. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/models.py +0 -0
  118. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/policy.py +0 -0
  119. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/run_lifecycle.py +0 -0
  120. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/runtime.py +0 -0
  121. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/spec.py +0 -0
  122. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/vars.py +0 -0
  123. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/evidence/__init__.py +0 -0
  124. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/evidence/recorder.py +0 -0
  125. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/history_bundle.py +0 -0
  126. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/identity/__init__.py +0 -0
  127. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/identity/fingerprint.py +0 -0
  128. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/__init__.py +0 -0
  129. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
  130. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
  131. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
  132. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
  133. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
  134. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
  135. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
  136. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
  137. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
  138. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
  139. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
  140. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
  141. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
  142. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
  143. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
  144. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
  145. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
  146. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
  147. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
  148. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
  149. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
  150. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/__init__.py +0 -0
  151. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/active_context.py +0 -0
  152. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/active_memory.py +0 -0
  153. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/compaction.py +0 -0
  154. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/kg_packets.py +0 -0
  155. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/memact_composer.py +0 -0
  156. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/recall_levels.py +0 -0
  157. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/token_budget.py +0 -0
  158. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/__init__.py +0 -0
  159. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
  160. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/json_stringify.py +0 -0
  161. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/__init__.py +0 -0
  162. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/convenience.py +0 -0
  163. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/registry.py +0 -0
  164. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/scheduler.py +0 -0
  165. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/__init__.py +0 -0
  166. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/artifacts.py +0 -0
  167. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/base.py +0 -0
  168. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/commands.py +0 -0
  169. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/in_memory.py +0 -0
  170. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/json_files.py +0 -0
  171. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/ledger_chain.py +0 -0
  172. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/observable.py +0 -0
  173. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/offloading.py +0 -0
  174. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/snapshots.py +0 -0
  175. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/sqlite.py +0 -0
  176. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
  177. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
  178. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
  179. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
  180. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
  181. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
  182. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
  183. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
  184. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
  185. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
  186. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
  187. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
  188. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
  189. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
  190. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
  191. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
  192. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
  193. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
  194. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
  195. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
  196. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
  197. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
  198. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/models.py +0 -0
  199. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/packer.py +0 -0
  200. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/reader.py +0 -0
  201. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/registry.py +0 -0
  202. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/README.md +0 -0
  203. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/conftest.py +0 -0
  204. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_comms_facade.py +0 -0
  205. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_discovery_facade.py +0 -0
  206. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_host_facade.py +0 -0
  207. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_run_facade.py +0 -0
  208. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_telegram_facade.py +0 -0
  209. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_active_context_policy.py +0 -0
  210. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_active_memory.py +0 -0
  211. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_answer_user_effect.py +0 -0
  212. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_artifacts.py +0 -0
  213. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_chat_summarizer_integration.py +0 -0
  214. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_command_store.py +0 -0
  215. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_compaction_helpers.py +0 -0
  216. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_control_adapter_while.py +0 -0
  217. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_comms_gating.py +0 -0
  218. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_include_skim_files.py +0 -0
  219. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_include_skim_folders.py +0 -0
  220. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_search_files_executor.py +0 -0
  221. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_durable_toolsets.py +0 -0
  222. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
  223. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_emit_event_without_workflow_registry.py +0 -0
  224. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_evidence_recorder.py +0 -0
  225. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
  226. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_integration_abstractcore.py +0 -0
  227. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_integrations_abstractcore.py +0 -0
  228. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_json_file_run_store_children_index.py +0 -0
  229. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_jsonl_ledger_recovery.py +0 -0
  230. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_kg_learn_and_recall_contract.py +0 -0
  231. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_ledger_chain.py +0 -0
  232. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_ledger_subscription.py +0 -0
  233. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_artifact_refs.py +0 -0
  234. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
  235. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
  236. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_requires_prompt.py +0 -0
  237. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_response_schema_normalization.py +0 -0
  238. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_structured_output_fallback.py +0 -0
  239. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_truncation_retry_contract.py +0 -0
  240. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_use_context_appends_turn.py +0 -0
  241. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
  242. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_media_artifacts.py +0 -0
  243. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_system_context.py +0 -0
  244. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_tool_call_parsing.py +0 -0
  245. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
  246. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_remote_tool_executor.py +0 -0
  247. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_logging.py +0 -0
  248. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_security.py +0 -0
  249. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_stdio.py +0 -0
  250. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_media_artifact_resolution.py +0 -0
  251. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memact_composer_from_kg_result.py +0 -0
  252. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
  253. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_packets.py +0 -0
  254. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_predicate_aliasing.py +0 -0
  255. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_query_packetization_restart.py +0 -0
  256. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
  257. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
  258. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_note_effect.py +0 -0
  259. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_query_effect.py +0 -0
  260. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_query_rich_filters.py +0 -0
  261. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
  262. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_tag_effect.py +0 -0
  263. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mlx_generation_serialization.py +0 -0
  264. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_model_residency_control_plane.py +0 -0
  265. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_offloading.py +0 -0
  266. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_pause_resume.py +0 -0
  267. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_prompt_cache_export_import.py +0 -0
  268. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_prompt_cache_modules.py +0 -0
  269. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_queryable_run_store.py +0 -0
  270. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
  271. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_real_integration.py +0 -0
  272. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_recall_levels_policy.py +0 -0
  273. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_remote_llm_client.py +0 -0
  274. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_rendering_agent_trace_report.py +0 -0
  275. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_rendering_json_stringify.py +0 -0
  276. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_retry_idempotency.py +0 -0
  277. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_run_history_bundle.py +0 -0
  278. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
  279. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_effect_invocation_trace.py +0 -0
  280. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_install_boundary.py +0 -0
  281. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
  282. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_node_traces.py +0 -0
  283. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_start_seeds_tool_support.py +0 -0
  284. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_scheduler.py +0 -0
  285. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
  286. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_snapshots.py +0 -0
  287. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_sqlite_ledger_store.py +0 -0
  288. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_async_wait.py +0 -0
  289. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
  290. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
  291. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_storage_deletion.py +0 -0
  292. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_structured_output_schema_enum.py +0 -0
  293. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_subworkflow.py +0 -0
  294. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_terminal_effect_completion.py +0 -0
  295. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
  296. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
  297. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_approval_executor.py +0 -0
  298. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_approval_resume_executes.py +0 -0
  299. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_calls_idempotency_keys.py +0 -0
  300. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_argument_sanitization.py +0 -0
  301. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_error_output_detection.py +0 -0
  302. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_filename_alias.py +0 -0
  303. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
  304. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_read_file_aliases.py +0 -0
  305. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_timeout.py +0 -0
  306. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_wait_allowlist_safety.py +0 -0
  307. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_trace_context_propagation.py +0 -0
  308. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_vars_query_effect.py +0 -0
  309. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
  310. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
  311. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
  312. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
  313. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
  314. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
  315. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memact_compose_node.py +0 -0
  316. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
  317. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
  318. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
  319. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_add_message_builtin.py +0 -0
  320. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
  321. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_call_tool_node.py +0 -0
  322. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_compiler_basic.py +0 -0
  323. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
  324. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_get_element_node.py +0 -0
  325. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_get_random_element_node.py +0 -0
  326. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_has_tools_builtin.py +0 -0
  327. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
  328. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
  329. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_make_object_node.py +0 -0
  330. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_media_nodes.py +0 -0
  331. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_memory_effect_nodes.py +0 -0
  332. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_memory_source_pins.py +0 -0
  333. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_prompt_only.py +0 -0
  334. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_random_nodes.py +0 -0
  335. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_string_contains_replace.py +0 -0
  336. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_tool_parameters_node.py +0 -0
  337. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_wait_event_prompt_metadata.py +0 -0
  338. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workflow_bundle_registry.py +0 -0
  339. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workspace_policy_allowlist_mode.py +0 -0
  340. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
  341. {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
@@ -10,12 +10,10 @@ The canonical dependency list lives in `pyproject.toml`.
10
10
  - **abstractsemantics** (`>=0.0.3`) — structured schema registry support (declared in `pyproject.toml`, used in `src/abstractruntime/integrations/abstractmemory/effect_handlers.py` and VisualFlow execution wiring).
11
11
  - **AbstractMemory** (`>=0.2.6`) — TripleStore models and store contract used by Runtime's `MEMORY_KG_*` effects. Durable/vector backend dependencies such as LanceDB remain selected by hosts.
12
12
 
13
- ## Optional integrations (extras)
14
-
15
- Installed only when you opt in to extras:
16
- - **abstractcore** (`>=2.13.12`) — LLM + tools integration used by `abstractruntime[abstractcore]` (declared in `pyproject.toml`, implementation under `src/abstractruntime/integrations/abstractcore/*`, docs: `docs/integrations/abstractcore.md`).
13
+ ## Runtime integrations
14
+ - **abstractcore** (`>=2.13.31`) — LLM, tools, media, and capability integration used by the base `abstractruntime` install (declared in `pyproject.toml`, implementation under `src/abstractruntime/integrations/abstractcore/*`, docs: `docs/integrations/abstractcore.md`).
17
15
  - The AbstractCore integration uses **httpx** for remote mode (`src/abstractruntime/integrations/abstractcore/llm_client.py`) and **pydantic** for structured validation (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`). These are provided by AbstractCore’s dependency set.
18
- - **abstractcore[tools]** (`>=2.13.12`) — toolchain extra used by `abstractruntime[mcp-worker]` (declared in `pyproject.toml`) and intended to include HTML parsing dependencies (see comments in `pyproject.toml`).
16
+ - **abstractcore[tools]** (`>=2.13.31`) — toolchain extra used by the base Runtime and `abstractruntime-mcp-worker` entry point (declared in `pyproject.toml`) and intended to include HTML parsing dependencies (see comments in `pyproject.toml`).
19
17
  - **RestrictedPython** (optional) — used for sandboxed execution of VisualFlow “Code” nodes when available (`src/abstractruntime/visualflow_compiler/visual/code_executor.py`).
20
18
 
21
19
  ## Build & test tooling
@@ -7,6 +7,15 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.26] - 2026-05-31
11
+
12
+ ### Changed
13
+ - Moved AbstractCore remote/tool/media capability integration and the MCP worker dependency set into the base `pip install abstractruntime` profile. Runtime now exposes only the base, `abstractruntime[apple]`, and `abstractruntime[gpu]` user install profiles for functionality vs. local-inferencer selection; the `abstractcore`, `multimodal`, `mcp-worker`, `all-apple`, and `all-gpu` extras are no longer part of the supported install surface.
14
+ - Raised the AbstractCore dependency floor to `abstractcore>=2.13.31` so Runtime installs inherit the latest remote-light media and Wan A14B vision contracts.
15
+
16
+ ### Fixed
17
+ - Local text-to-video and image-to-video media-only calls now run in an isolated subprocess, preserving progress callbacks while preventing native MLX/Metal video failures from killing the Gateway/Runtime parent process.
18
+
10
19
  ## [0.4.25] - 2026-05-29
11
20
 
12
21
  ### Added
@@ -570,7 +579,8 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
570
579
 
571
580
  Initial development version with basic proof-of-concept features.
572
581
 
573
- [Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.25...HEAD
582
+ [Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.26...HEAD
583
+ [0.4.26]: https://github.com/lpalbou/abstractruntime/compare/v0.4.25...v0.4.26
574
584
  [0.4.25]: https://github.com/lpalbou/abstractruntime/compare/v0.4.24...v0.4.25
575
585
  [0.4.24]: https://github.com/lpalbou/abstractruntime/compare/v0.4.23...v0.4.24
576
586
  [0.4.23]: https://github.com/lpalbou/abstractruntime/compare/v0.4.22...v0.4.23
@@ -16,8 +16,8 @@ python -m venv .venv
16
16
  source .venv/bin/activate
17
17
  python -m pip install -U pip
18
18
 
19
- # Full dev install (kernel + optional integrations used by tests/examples)
20
- python -m pip install -e ".[abstractcore,mcp-worker]"
19
+ # Full dev install (runtime + docs/test tooling)
20
+ python -m pip install -e ".[test,docs]"
21
21
 
22
22
  python -m pytest -q
23
23
  ```
@@ -30,7 +30,7 @@ If you cloned **only** this repo (without the AbstractFramework workspace), make
30
30
  - Core kernel (durable semantics): `src/abstractruntime/core/`
31
31
  - Durability backends: `src/abstractruntime/storage/`
32
32
  - Driver loop (in-process): `src/abstractruntime/scheduler/`
33
- - Optional integrations (extras): `src/abstractruntime/integrations/`
33
+ - Runtime integrations: `src/abstractruntime/integrations/`
34
34
  - Tests: `tests/`
35
35
 
36
36
  Docs entrypoints:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AbstractRuntime
3
- Version: 0.4.25
3
+ Version: 0.4.26
4
4
  Summary: AbstractRuntime: a durable graph runner designed to pair with AbstractCore.
5
5
  Project-URL: AbstractCore (website), https://www.abstractcore.ai/
6
6
  Project-URL: AbstractRuntime (GitHub), https://github.com/lpalbou/abstractruntime
@@ -20,57 +20,28 @@ Classifier: Programming Language :: Python :: 3.11
20
20
  Classifier: Programming Language :: Python :: 3.12
21
21
  Classifier: Programming Language :: Python :: 3.13
22
22
  Requires-Python: >=3.10
23
+ Requires-Dist: abstractcore[audio,media,music,remote,tools,vision,voice]>=2.13.31
23
24
  Requires-Dist: abstractmemory>=0.2.6
24
25
  Requires-Dist: abstractsemantics>=0.0.3
25
- Provides-Extra: abstractcore
26
- Requires-Dist: abstractcore>=2.13.30; extra == 'abstractcore'
27
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'abstractcore'
28
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'abstractcore'
29
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'abstractcore'
30
- Provides-Extra: all-apple
31
- Requires-Dist: abstractcore[all-apple]>=2.13.30; extra == 'all-apple'
32
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'all-apple'
33
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'all-apple'
34
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'all-apple'
35
- Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-apple'
36
- Provides-Extra: all-gpu
37
- Requires-Dist: abstractcore[all-gpu]>=2.13.30; extra == 'all-gpu'
38
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'all-gpu'
39
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'all-gpu'
40
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'all-gpu'
41
- Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-gpu'
26
+ Requires-Dist: anyio<5.0.0,>=4.12.1
27
+ Requires-Dist: httpx<1.0.0,>=0.28.1
28
+ Requires-Dist: openai<2.0.0,>=1.109.1
29
+ Requires-Dist: pandas<3.0.0,>=1.0.0
30
+ Requires-Dist: pillow<13.0.0,>=10.0.0
31
+ Requires-Dist: pymupdf-layout<2.0.0,>=1.26.6
32
+ Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20
33
+ Requires-Dist: python-pptx<2.0.0,>=1.0.2
34
+ Requires-Dist: unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32
42
35
  Provides-Extra: apple
43
- Requires-Dist: abstractcore[apple]>=2.13.30; extra == 'apple'
44
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'apple'
45
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'apple'
46
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'apple'
36
+ Requires-Dist: abstractcore[all-apple]>=2.13.31; extra == 'apple'
47
37
  Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'apple'
48
38
  Provides-Extra: docs
49
39
  Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
50
40
  Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
51
41
  Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
52
42
  Provides-Extra: gpu
53
- Requires-Dist: abstractcore[gpu]>=2.13.30; extra == 'gpu'
54
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'gpu'
55
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'gpu'
56
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'gpu'
43
+ Requires-Dist: abstractcore[all-gpu]>=2.13.31; extra == 'gpu'
57
44
  Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'gpu'
58
- Provides-Extra: mcp-worker
59
- Requires-Dist: abstractcore[tools]>=2.13.30; extra == 'mcp-worker'
60
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'mcp-worker'
61
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'mcp-worker'
62
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'mcp-worker'
63
- Provides-Extra: multimodal
64
- Requires-Dist: abstractcore[audio,music,remote,vision,voice]>=2.13.30; extra == 'multimodal'
65
- Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'multimodal'
66
- Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'multimodal'
67
- Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'multimodal'
68
- Requires-Dist: pandas<3.0.0,>=1.0.0; extra == 'multimodal'
69
- Requires-Dist: pillow<13.0.0,>=10.0.0; extra == 'multimodal'
70
- Requires-Dist: pymupdf-layout<2.0.0,>=1.26.6; extra == 'multimodal'
71
- Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20; extra == 'multimodal'
72
- Requires-Dist: python-pptx<2.0.0,>=1.0.2; extra == 'multimodal'
73
- Requires-Dist: unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32; extra == 'multimodal'
74
45
  Provides-Extra: test
75
46
  Requires-Dist: pytest>=7.0.0; extra == 'test'
76
47
  Description-Content-Type: text/markdown
@@ -81,7 +52,7 @@ Description-Content-Type: text/markdown
81
52
 
82
53
  It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
83
54
 
84
- **Version:** 0.4.25 • **Python:** 3.10+
55
+ **Version:** 0.4.26 • **Python:** 3.10+
85
56
 
86
57
  **Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
87
58
 
@@ -103,31 +74,29 @@ flowchart LR
103
74
 
104
75
  ## Install
105
76
 
106
- Core runtime:
77
+ Remote-light runtime:
107
78
 
108
79
  ```bash
109
80
  pip install abstractruntime
110
81
  ```
111
82
 
112
- AbstractCore integration (LLM + tools):
83
+ The base install includes AbstractCore 2.13.31 or newer with remote provider,
84
+ tool, media, vision, voice, audio, and music integration, plus the
85
+ `abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
86
+ default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
87
+ sentence-transformer embeddings are not selected unless you choose a hardware
88
+ profile or another package-specific local extra.
113
89
 
114
- ```bash
115
- pip install "abstractruntime[abstractcore]"
116
- ```
117
-
118
- The `abstractcore` extra installs AbstractCore 2.13.30 or newer so the hardened server auth model, provider-key header routing, generated-media contracts, capability catalog, prompt-cache control plane, durable bloc prompt-cache helpers, bindings, lifecycle operations, public output-selector contract, async/sync text-generation output-selector parity, task-aware model residency for text/image/video/TTS/STT, video generation endpoints, and the public local vision-cache catalog helper used by Runtime discovery remain aligned. Use `abstractruntime[multimodal]` when you need common media dependencies and capability plugins (installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`, including `abstractmusic>=0.1.12`).
119
-
120
- Hardware profile cascades are available for native Python installs:
121
- `abstractruntime[apple]`, `abstractruntime[gpu]`, `abstractruntime[all-apple]`,
122
- and `abstractruntime[all-gpu]` delegate to the matching AbstractCore profile
123
- without making the runtime kernel itself hardware-specific.
124
-
125
- MCP worker entrypoint (default toolsets over stdio):
90
+ Native Python hardware profiles add local inferencer stacks:
126
91
 
127
92
  ```bash
128
- pip install "abstractruntime[mcp-worker]"
93
+ pip install "abstractruntime[apple]"
94
+ pip install "abstractruntime[gpu]"
129
95
  ```
130
96
 
97
+ `abstractruntime[apple]` delegates to AbstractCore's native Apple aggregate;
98
+ `abstractruntime[gpu]` delegates to AbstractCore's GPU aggregate.
99
+
131
100
  ## Quick start (pause + resume)
132
101
 
133
102
  ```python
@@ -169,9 +138,9 @@ state = rt.resume(
169
138
  assert state.status.value == "completed"
170
139
  ```
171
140
 
172
- ## What’s included (v0.4.25)
141
+ ## What’s included (v0.4.26)
173
142
 
174
- Kernel (dependency-light):
143
+ Kernel (import-light):
175
144
  - workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
176
145
  - durable execution: `Runtime.start/tick/resume` (`src/abstractruntime/core/runtime.py`)
177
146
  - durable waits/events: `WAIT_EVENT`, `WAIT_UNTIL`, `ASK_USER`, `EMIT_EVENT`
@@ -192,7 +161,7 @@ Drivers + distribution:
192
161
  - VisualFlow multi-entry execution lowering for fan-in routes and per-entry input overrides (`docs/workflow-bundles.md`)
193
162
  - run history export: `export_run_history_bundle(...)` (`src/abstractruntime/history_bundle.py`)
194
163
 
195
- Optional integrations:
164
+ Runtime-owned integrations:
196
165
  - AbstractCore (LLM + tools, `MODEL_RESIDENCY`, public discovery/host/run facades, cached sessions, local-only prompt-cache export/import admin, durable bloc prompt-cache controls, bindings, lifecycle operations, generated image/video/voice/music outputs with progress events, host email helpers, Telegram host wrappers, and tool approval waits): `docs/integrations/abstractcore.md`
197
166
  - For outbound comms, use the durable run facade when the send belongs to a run: `get_abstractcore_run_facade(...).send_email(...)` / `send_telegram_message(...)`. If that child run pauses for approval or passthrough execution, resume it through `resume_tool_calls(...)`. Direct host-facade send helpers and the standalone email comms facade remain host-local and nondurable.
198
167
  - AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
@@ -256,7 +225,7 @@ sr = create_scheduled_runtime(
256
225
  python -m venv .venv
257
226
  source .venv/bin/activate
258
227
  python -m pip install -U pip
259
- python -m pip install -e ".[abstractcore,mcp-worker,test,docs]"
228
+ python -m pip install -e ".[test,docs]"
260
229
  python -m pytest -q
261
230
  ```
262
231
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
6
6
 
7
- **Version:** 0.4.25 • **Python:** 3.10+
7
+ **Version:** 0.4.26 • **Python:** 3.10+
8
8
 
9
9
  **Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
10
10
 
@@ -26,31 +26,29 @@ flowchart LR
26
26
 
27
27
  ## Install
28
28
 
29
- Core runtime:
29
+ Remote-light runtime:
30
30
 
31
31
  ```bash
32
32
  pip install abstractruntime
33
33
  ```
34
34
 
35
- AbstractCore integration (LLM + tools):
35
+ The base install includes AbstractCore 2.13.31 or newer with remote provider,
36
+ tool, media, vision, voice, audio, and music integration, plus the
37
+ `abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
38
+ default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
39
+ sentence-transformer embeddings are not selected unless you choose a hardware
40
+ profile or another package-specific local extra.
36
41
 
37
- ```bash
38
- pip install "abstractruntime[abstractcore]"
39
- ```
40
-
41
- The `abstractcore` extra installs AbstractCore 2.13.30 or newer so the hardened server auth model, provider-key header routing, generated-media contracts, capability catalog, prompt-cache control plane, durable bloc prompt-cache helpers, bindings, lifecycle operations, public output-selector contract, async/sync text-generation output-selector parity, task-aware model residency for text/image/video/TTS/STT, video generation endpoints, and the public local vision-cache catalog helper used by Runtime discovery remain aligned. Use `abstractruntime[multimodal]` when you need common media dependencies and capability plugins (installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`, including `abstractmusic>=0.1.12`).
42
-
43
- Hardware profile cascades are available for native Python installs:
44
- `abstractruntime[apple]`, `abstractruntime[gpu]`, `abstractruntime[all-apple]`,
45
- and `abstractruntime[all-gpu]` delegate to the matching AbstractCore profile
46
- without making the runtime kernel itself hardware-specific.
47
-
48
- MCP worker entrypoint (default toolsets over stdio):
42
+ Native Python hardware profiles add local inferencer stacks:
49
43
 
50
44
  ```bash
51
- pip install "abstractruntime[mcp-worker]"
45
+ pip install "abstractruntime[apple]"
46
+ pip install "abstractruntime[gpu]"
52
47
  ```
53
48
 
49
+ `abstractruntime[apple]` delegates to AbstractCore's native Apple aggregate;
50
+ `abstractruntime[gpu]` delegates to AbstractCore's GPU aggregate.
51
+
54
52
  ## Quick start (pause + resume)
55
53
 
56
54
  ```python
@@ -92,9 +90,9 @@ state = rt.resume(
92
90
  assert state.status.value == "completed"
93
91
  ```
94
92
 
95
- ## What’s included (v0.4.25)
93
+ ## What’s included (v0.4.26)
96
94
 
97
- Kernel (dependency-light):
95
+ Kernel (import-light):
98
96
  - workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
99
97
  - durable execution: `Runtime.start/tick/resume` (`src/abstractruntime/core/runtime.py`)
100
98
  - durable waits/events: `WAIT_EVENT`, `WAIT_UNTIL`, `ASK_USER`, `EMIT_EVENT`
@@ -115,7 +113,7 @@ Drivers + distribution:
115
113
  - VisualFlow multi-entry execution lowering for fan-in routes and per-entry input overrides (`docs/workflow-bundles.md`)
116
114
  - run history export: `export_run_history_bundle(...)` (`src/abstractruntime/history_bundle.py`)
117
115
 
118
- Optional integrations:
116
+ Runtime-owned integrations:
119
117
  - AbstractCore (LLM + tools, `MODEL_RESIDENCY`, public discovery/host/run facades, cached sessions, local-only prompt-cache export/import admin, durable bloc prompt-cache controls, bindings, lifecycle operations, generated image/video/voice/music outputs with progress events, host email helpers, Telegram host wrappers, and tool approval waits): `docs/integrations/abstractcore.md`
120
118
  - For outbound comms, use the durable run facade when the send belongs to a run: `get_abstractcore_run_facade(...).send_email(...)` / `send_telegram_message(...)`. If that child run pauses for approval or passthrough execution, resume it through `resume_tool_calls(...)`. Direct host-facade send helpers and the standalone email comms facade remain host-local and nondurable.
121
119
  - AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
@@ -179,7 +177,7 @@ sr = create_scheduled_runtime(
179
177
  python -m venv .venv
180
178
  source .venv/bin/activate
181
179
  python -m pip install -U pip
182
- python -m pip install -e ".[abstractcore,mcp-worker,test,docs]"
180
+ python -m pip install -e ".[test,docs]"
183
181
  python -m pytest -q
184
182
  ```
185
183
 
@@ -33,7 +33,7 @@ Scheduler convenience wrapper:
33
33
  from abstractruntime import create_scheduled_runtime
34
34
  ```
35
35
 
36
- Optional integration (requires `abstractruntime[abstractcore]`):
36
+ AbstractCore integration (included in the base `abstractruntime` install):
37
37
 
38
38
  ```python
39
39
  from abstractruntime.integrations.abstractcore import (
@@ -176,11 +176,11 @@ Implementation: `src/abstractruntime/history_bundle.py`.
176
176
 
177
177
  This produces a portable record of a run’s state + ledger + artifacts suitable for debugging/review.
178
178
 
179
- ## Optional integrations
179
+ ## Runtime-owned integrations
180
180
 
181
181
  ### AbstractCore (LLM + tools)
182
182
 
183
- Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.30 or newer).
183
+ Requires: `pip install abstractruntime` (AbstractCore 2.13.31 or newer is part of the base install).
184
184
 
185
185
  Implementation: `src/abstractruntime/integrations/abstractcore/*`.
186
186
 
@@ -206,14 +206,14 @@ Entry points:
206
206
  - `params`: provider/model routing, generation controls, prompt-cache keys or `prompt_cache_binding`, structured-output schema options, and tracing metadata
207
207
 
208
208
  Multimodal support:
209
- - install `abstractruntime[multimodal]` for common AbstractCore media, vision, voice, audio, and music dependencies
209
+ - common remote-light AbstractCore media, vision, voice, audio, and music dependencies are part of the base Runtime install
210
210
  - local clients call AbstractCore's unified `generate(..., media=..., output=...)`
211
211
  - remote and hybrid clients support AbstractCore Server chat media content arrays plus image generation, image edits, text-to-video, image-to-video, speech, music generation, and transcription endpoints; pass an output-specific `model` for remote media provider routing, otherwise the server endpoint can use its configured capability default
212
212
  - remote transcription requires one audio media item that resolves to a local file path or artifact-backed temporary file
213
213
  - generated image/video/voice/music/audio bytes require a runtime `ArtifactStore`; the result contains `artifact_id` / `artifact_ref` instead of inline bytes
214
214
  - media-only normalized results expose `runtime_provider` / `runtime_model` separately from `media_provider` / `media_model`
215
215
  - optional local media residency failures complete with `status_hint="warning"` and `degraded=true`; unsupported local media warmup for `image_generation`, `video_generation`, `text_to_video`, `image_to_video`, `tts`, `stt`, and `music_generation` reports `requires_long_lived_server=true`, and generated image/video tasks also report `execution_mode="local_one_shot_subprocess"`
216
- - Gateway/hosts remain responsible for explicit Core server URLs, Core server auth headers, provider/model defaults, selected Core/capability install profiles, and translation of Gateway-owned env/config into explicit Runtime inputs; Runtime persists only JSON-safe routing metadata and artifact refs
216
+ - Gateway/hosts remain responsible for explicit Core server URLs, Core server auth headers, provider/model defaults, selected local-inference profiles, and translation of Gateway-owned env/config into explicit Runtime inputs; Runtime persists only JSON-safe routing metadata and artifact refs
217
217
 
218
218
  Prompt cache / cached sessions:
219
219
  - LLM clients expose cache control methods listed above for host-side preparation and inspection
@@ -38,7 +38,7 @@ The boundary is intentionally narrow:
38
38
  - Provider sessions and prompt-cache objects are not runtime state. Runtime may carry stable cache keys, while AbstractCore clients/servers manage warm caches.
39
39
  - Hosts should use Runtime-owned AbstractCore facades for discovery snapshots, prompt-cache/model-residency control operations, and durable run-scoped media/comms child runs instead of reaching through private runtime attachments or importing Core internals directly.
40
40
  - Local execution can use richer AbstractCore capability plugins. Remote and hybrid execution map the common media cases to AbstractCore Server endpoints and OpenAI-compatible content arrays, while hybrid keeps tool execution local.
41
- - Gateway and other hosts compose Runtime with the desired Core/capability/memory profile. Runtime's base package includes the AbstractMemory contract but not backend extras such as LanceDB; hosts choose storage, embeddings, and readiness policy. Hardware profile extras such as `apple`, `gpu`, `all-apple`, and `all-gpu` cascade through AbstractCore when a host selects them.
41
+ - Gateway and other hosts compose Runtime with the desired memory and local-inference profile. Runtime's base package includes the AbstractMemory contract, AbstractCore remote/tool/media capability integration, and the MCP worker entry point, but not backend extras such as LanceDB or local inferencer stacks. Hosts choose storage, embeddings, readiness policy, and whether to add `abstractruntime[apple]` or `abstractruntime[gpu]`.
42
42
  - Remote and hybrid clients use explicit Core server URLs and auth headers supplied by the host. Runtime does not read Gateway auth environment variables for provider/model/auth decisions or treat Gateway bearer tokens as Core server/provider credentials.
43
43
 
44
44
  This keeps the runtime usable by `../abstractgateway` and application layers such as `../abstractflow`, `../abstractassistant`, `../abstractobserver`, and `../abstractcode` without embedding provider-specific model logic in the durable kernel.
@@ -87,7 +87,7 @@ Docs: `integrations/abstractcore.md`. Code: `src/abstractruntime/integrations/ab
87
87
 
88
88
  Yes, when the configured AbstractCore provider/model supports the media. Pass `payload.media` as a path, a media dict, an artifact ref such as `{"$artifact": "..."}`, or a list of those. The runtime keeps the effect payload JSON-safe and materializes artifact refs into temporary provider-ready files for the call.
89
89
 
90
- Install `abstractruntime[multimodal]` for common media/vision/audio/music dependencies.
90
+ Common remote-light media/vision/audio/music dependencies are included in the base `abstractruntime` install. Use `abstractruntime[apple]` or `abstractruntime[gpu]` only when this host should execute local inferencer stacks.
91
91
  Docs: `integrations/abstractcore.md`. Code: `src/abstractruntime/integrations/abstractcore/effect_handlers.py`, `src/abstractruntime/integrations/abstractcore/llm_client.py`.
92
92
 
93
93
  ## How do I generate images, video, voice/audio, or music?
@@ -311,7 +311,7 @@ Docs: `workflow-bundles.md`, `architecture.md`. Code: `src/abstractruntime/workf
311
311
 
312
312
  ## How do I run the MCP worker?
313
313
 
314
- Use the `abstractruntime-mcp-worker` CLI (from the `mcp-worker` extra) and select toolsets explicitly.
314
+ Use the `abstractruntime-mcp-worker` CLI from the base Runtime install and select toolsets explicitly.
315
315
 
316
316
  Docs: `mcp-worker.md`. Code: `src/abstractruntime/integrations/abstractcore/mcp_worker.py`.
317
317
 
@@ -6,20 +6,25 @@ If you only read one doc after `README.md`, read this one.
6
6
 
7
7
  ## Install
8
8
 
9
- Core runtime:
9
+ Remote-light runtime:
10
10
 
11
11
  ```bash
12
12
  pip install abstractruntime
13
13
  ```
14
14
 
15
- Optional (LLM + tools via AbstractCore):
15
+ This installs AbstractCore 2.13.31 or newer with remote provider, media,
16
+ vision, voice, audio, music, tool, and MCP-worker support. The base install is
17
+ remote-light: it can route multimodal workflows to hosted or OpenAI-compatible
18
+ endpoints, but it does not select local inferencer stacks such as MLX, vLLM,
19
+ HuggingFace/Torch, Diffusers, or sentence-transformer embeddings.
20
+
21
+ Use hardware profiles only when this Runtime host should execute local engines:
16
22
 
17
23
  ```bash
18
- pip install "abstractruntime[abstractcore]"
24
+ pip install "abstractruntime[apple]"
25
+ pip install "abstractruntime[gpu]"
19
26
  ```
20
27
 
21
- This installs AbstractCore 2.13.30 or newer, which matches the documented server auth, provider-key header routing, generated-media contracts, capability catalog, prompt-cache control plane, durable bloc prompt-cache helpers, bindings and lifecycle operations, task-aware model residency for text/image/video/TTS/STT, current tool behavior, public output-selector contract, async/sync text-generation output-selector parity, video generation endpoints, and the public local vision-cache catalog helper used by Runtime discovery. Use `abstractruntime[multimodal]` when your workflows need common media dependencies and capability plugins (installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`, including `abstractmusic>=0.1.12`).
22
-
23
28
  ## Mental model (source of truth)
24
29
 
25
30
  - Workflows are in-memory graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
@@ -13,24 +13,22 @@ Implementation pointers (this repo):
13
13
  ## Install
14
14
 
15
15
  ```bash
16
- pip install "abstractruntime[abstractcore]"
16
+ pip install abstractruntime
17
17
  ```
18
18
 
19
- This extra installs AbstractCore 2.13.30 or newer. That is the supported baseline for the current server auth split (`Authorization` for server auth, `X-AbstractCore-Provider-API-Key` for provider overrides), generated-media contracts, capability catalog, prompt-cache control-plane endpoints, durable bloc prompt-cache helpers, bindings and lifecycle operations, task-aware model residency for text/image/video/TTS/STT, current tool catalog, AbstractCore's public output-selector contract, async/sync text-generation output-selector parity, video generation endpoints, and the public local vision-cache catalog helper used by Runtime discovery.
19
+ The base install includes AbstractCore 2.13.31 or newer. That is the supported baseline for the current server auth split (`Authorization` for server auth, `X-AbstractCore-Provider-API-Key` for provider overrides), generated-media contracts, capability catalog, prompt-cache control-plane endpoints, durable bloc prompt-cache helpers, bindings and lifecycle operations, task-aware model residency for text/image/video/TTS/STT, current tool catalog, AbstractCore's public output-selector contract, async/sync text-generation output-selector parity, video generation endpoints, and the public local vision-cache catalog helper used by Runtime discovery.
20
20
 
21
- For AbstractCore's multimodal `generate(..., output=...)` path, use the newer baseline and optional media packages:
21
+ The base install also includes the remote-light media/capability plugins needed
22
+ for AbstractCore's multimodal `generate(..., output=...)` path. Local
23
+ image/video/voice/music generation still depends on configured AbstractCore
24
+ capability backends and hardware profiles:
22
25
 
23
26
  ```bash
24
- pip install "abstractruntime[multimodal]"
27
+ pip install "abstractruntime[apple]"
28
+ pip install "abstractruntime[gpu]"
25
29
  ```
26
30
 
27
- This installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`. Local image/video/voice/music generation still depends on the configured AbstractCore capability backends (for example AbstractVision, AbstractVoice, and AbstractMusic, or OpenAI/OpenAI-compatible remote engines). With `abstractmusic>=0.1.12`, the base music extra includes the lightweight remote ACE Music backend without local model-runtime extras.
28
-
29
- The MCP worker entrypoint uses the `mcp-worker` extra:
30
-
31
- ```bash
32
- pip install "abstractruntime[mcp-worker]"
33
- ```
31
+ With `abstractmusic>=0.1.12`, the base music integration includes the lightweight remote ACE Music backend without local model-runtime extras. The MCP worker entrypoint is included in the base Runtime install.
34
32
 
35
33
  ## Execution modes
36
34
 
@@ -114,7 +112,7 @@ print(state.output)
114
112
  Notes:
115
113
  - Remote mode supports per-request dynamic routing by forwarding `params.base_url` to the AbstractCore server request body (`src/abstractruntime/integrations/abstractcore/llm_client.py`).
116
114
  - Remote mode sends per-request provider key overrides from `params.api_key` / `params.provider_api_key` as `X-AbstractCore-Provider-API-Key` headers. Server/master auth should be supplied separately through the client's configured headers, usually `Authorization: Bearer <ABSTRACTCORE_SERVER_API_KEY>`.
117
- - Local mode treats `base_url` as a provider construction concern; the local client intentionally strips `params.base_url`.
115
+ - Local mode treats `base_url` and provider API keys as provider-construction concerns. `MultiLocalAbstractCoreLLMClient` can construct a per-call client when a host injects `params.base_url` plus `params.api_key` or `params.provider_api_key` (for example from a Gateway provider endpoint profile), then strips those fields before calling the provider.
118
116
  - `media` accepts one item or a list. Durable artifact refs such as `{"$artifact": "...", "filename": "speech.wav"}` are materialized to temporary files for AbstractCore and never stored as raw bytes in `RunState`.
119
117
  - `output` may be top-level or inside `params`; top-level `outputs` is accepted as a runtime alias for AbstractCore's `output`.
120
118
  - `output.tags`, when present, are merged into the generated artifact metadata. Runtime metadata such as `run_id` and `tags` is used by AbstractRuntime's ArtifactStore boundary and is not forwarded as provider-specific generation kwargs.
@@ -1,6 +1,6 @@
1
1
  # MCP worker (`abstractruntime-mcp-worker`)
2
2
 
3
- AbstractRuntime ships an optional MCP worker that exposes AbstractCore toolsets over MCP (JSON-RPC) via:
3
+ AbstractRuntime ships an MCP worker that exposes AbstractCore toolsets over MCP (JSON-RPC) via:
4
4
  - stdio (default)
5
5
  - HTTP (optional)
6
6
 
@@ -11,7 +11,7 @@ Entry point:
11
11
  ## Install
12
12
 
13
13
  ```bash
14
- pip install "abstractruntime[mcp-worker]"
14
+ pip install abstractruntime
15
15
  ```
16
16
 
17
17
  ## Run (stdio)
@@ -51,4 +51,3 @@ abstractruntime-mcp-worker --transport http --toolsets files --http-allow-origin
51
51
  ## See also
52
52
 
53
53
  - `integrations/abstractcore.md` — tool executors and default toolsets
54
-
@@ -44,7 +44,7 @@ rt = create_local_runtime(provider="ollama", model="qwen3:4b", tool_executor=too
44
44
  ```
45
45
 
46
46
  Notes:
47
- - Install extras: `pip install "abstractruntime[abstractcore]"` (or `abstractruntime[mcp-worker]`).
47
+ - Install Runtime with `pip install abstractruntime`; AbstractCore tool integration and the MCP worker entry point are part of the base remote-light install.
48
48
  - In untrusted deployments, prefer passthrough tools so a host/worker boundary approves and executes tool calls (`PassthroughToolExecutor` in `src/abstractruntime/integrations/abstractcore/tool_executor.py`).
49
49
  - For local bridge-owned delivery flows, `ApprovalToolExecutor` can auto-run the Telegram send tools while requiring approval for email, WhatsApp, unknown tools, and write/command-style tools by default.
50
50
  - Separate from the durable `TOOL_CALLS` path, Runtime also exposes **host wrappers** for operator-owned email and Telegram surfaces:
@@ -13,15 +13,14 @@ Checks:
13
13
 
14
14
  ```bash
15
15
  python -m pip show AbstractRuntime abstractcore
16
- python -m pip install -U "abstractruntime[abstractcore]"
16
+ python -m pip install -U abstractruntime
17
17
  ```
18
18
 
19
19
  Fix:
20
- - Install the matching optional extra for the surface you need:
21
- - `abstractruntime[abstractcore]` for LLM/tools integration.
22
- - `abstractruntime[multimodal]` for common image, voice, audio, and music dependencies.
23
- - `abstractruntime[mcp-worker]` for the MCP worker entry point.
24
- - The current AbstractCore integration expects `abstractcore>=2.13.30`.
20
+ - Install or upgrade the base Runtime package. LLM/tools integration, common
21
+ remote-light multimodal dependencies, and the MCP worker entry point are part
22
+ of the base install.
23
+ - The current AbstractCore integration expects `abstractcore>=2.13.31`.
25
24
 
26
25
  Verify:
27
26
 
@@ -127,7 +126,7 @@ Symptom:
127
126
  Fix:
128
127
 
129
128
  ```bash
130
- python -m pip install -U "abstractruntime[mcp-worker]"
129
+ python -m pip install -U abstractruntime
131
130
  abstractruntime-mcp-worker --help
132
131
  ```
133
132
 
@@ -28,9 +28,9 @@ Examples 1-5 only require abstractruntime:
28
28
  pip install abstractruntime
29
29
  ```
30
30
 
31
- Examples 6-7 require additional packages:
31
+ Examples 6-7 use Runtime's base AbstractCore integration:
32
32
  ```bash
33
- pip install "abstractruntime[abstractcore]"
33
+ pip install abstractruntime
34
34
  # Example 07 also requires AbstractAgent (separate package/repo).
35
35
  # Also requires Ollama running locally with qwen3:4b-instruct-2507-q4_K_M
36
36
  ```
@@ -10,19 +10,19 @@ This file is an **agent-oriented build guide** for the AbstractRuntime *library*
10
10
 
11
11
  Quick facts:
12
12
  - Python: 3.10+ (`pyproject.toml`)
13
- - Version: 0.4.25
13
+ - Version: 0.4.26
14
14
  - Ecosystem: [AbstractFramework](https://github.com/lpalbou/AbstractFramework) umbrella; pairs with [AbstractCore](https://github.com/lpalbou/abstractcore)
15
15
  - Public export surface (source of truth): `src/abstractruntime/__init__.py`
16
- - Optional AbstractCore baseline: `abstractruntime[abstractcore]` installs `abstractcore>=2.13.30`
17
- - Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`
18
- - Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned env/config should be translated into explicit Runtime inputs or Runtime-owned env names.
16
+ - Current AbstractCore baseline: base `abstractruntime` installs `abstractcore[remote,media,tools,vision,voice,audio,music]>=2.13.31`
17
+ - Install profiles: base `abstractruntime` is remote-light with MCP and multimodal routing; `abstractruntime[apple]` and `abstractruntime[gpu]` add local inferencer stacks.
18
+ - Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned env/config should be translated into explicit Runtime inputs or Runtime-owned env names. Hosts can attach `resolve_provider_endpoint_profile(provider_id)` to the LLM client; Runtime treats it as an optional resolver hook, injects transient provider/base URL/key params for the call, and redacts secret-like params from persisted observability.
19
19
 
20
20
  ```mermaid
21
21
  flowchart LR
22
22
  Host["Host app / service"] -->|"WorkflowSpec"| RT["AbstractRuntime"]
23
23
  RT -->|"checkpoints"| RS["RunStore"]
24
24
  RT -->|"append-only"| LS["LedgerStore"]
25
- RT -->|"LLM_CALL / TOOL_CALLS"| AC["AbstractCore (optional)"]
25
+ RT -->|"LLM_CALL / TOOL_CALLS"| AC["AbstractCore"]
26
26
  ```
27
27
 
28
28
  ## What AbstractRuntime is (and is not)
@@ -207,9 +207,10 @@ What you get:
207
207
  - generated image, video, voice/audio, and music outputs via AbstractCore's unified `generate(..., output=...)` selector
208
208
  - generated binary outputs require a runtime ArtifactStore and are normalized to ArtifactStore refs instead of inline bytes
209
209
  - hardened remote provider-key routing: server auth uses `Authorization`, provider overrides use `X-AbstractCore-Provider-API-Key`
210
- - optional MCP worker entrypoint (`abstractruntime-mcp-worker`)
210
+ - host endpoint-profile resolver hook for virtual provider ids such as Gateway's `endpoint:*`, resolved only into transient call params
211
+ - MCP worker entrypoint (`abstractruntime-mcp-worker`)
211
212
 
212
- Quick start (local mode, requires `pip install "abstractruntime[abstractcore]"`):
213
+ Quick start (local mode, requires `pip install abstractruntime`):
213
214
 
214
215
  ```python
215
216
  from abstractruntime.integrations.abstractcore import create_local_runtime
@@ -221,11 +222,11 @@ Notes:
221
222
  - Tool calls and results are durable (ledger + checkpoints). Keep secrets out of tool arguments.
222
223
  - Use `ApprovalToolExecutor(delegate=..., policy=ToolApprovalPolicy())` when a local host should auto-run safe tools but pause for user approval before write/command/unknown tools.
223
224
  - Remote `params.api_key` and `params.provider_api_key` are compatibility inputs; runtime converts them to `X-AbstractCore-Provider-API-Key` headers for current AbstractCore servers.
224
- - Gateway/hosts choose Core server URLs, Core server auth headers, provider/model defaults, tool executors, artifact stores, and any Gateway env/config translation before Runtime sees the call.
225
+ - Gateway/hosts choose Core server URLs, Core server auth headers, provider/model defaults, tool executors, artifact stores, endpoint-profile resolvers, and any Gateway env/config translation before Runtime sees the call.
225
226
  - Hosts should bind `get_abstractcore_host_facade(rt)` for prompt-cache, durable bloc/KV, and model-residency control operations, and use the Runtime-owned email wrapper layer (`get_abstractcore_host_facade(rt)` or `abstractruntime.integrations.abstractcore.comms_facade`) for host-local email helper operations instead of importing `abstractcore.tools.comms_tools` directly.
226
227
  - Hosts should use `abstractruntime.integrations.abstractcore.telegram_facade` for Telegram TDLib bootstrap/global-client/send helpers instead of importing `abstractcore.tools.telegram_tdlib` or `abstractcore.tools.telegram_tools` directly. These wrappers remain host-local and do not proxy through a remote Core server.
227
228
  - If an outbound email or Telegram send belongs to a run, hosts should prefer `get_abstractcore_run_facade(rt).send_email(...)` or `send_telegram_message(...)`. Those are durable `TOOL_CALLS` child runs: Runtime records the request and outcome, and replay should reuse the recorded result instead of resending the message. If the child run waits for approval or passthrough host execution, resume it through the same public boundary with `resume_tool_calls(...)`.
228
- - Use `pip install "abstractruntime[multimodal]"` for common AbstractCore media, vision, voice, audio, and music dependencies.
229
+ - Common remote-light AbstractCore media, vision, voice, audio, and music dependencies are part of the base Runtime install.
229
230
  - Optional comms tools (email/WhatsApp/Telegram) are gated by env vars; see `docs/tools-comms.md` and code `src/abstractruntime/integrations/abstractcore/default_tools.py`.
230
231
  - Read-file session attachment registration is bounded by `TOOL_CALLS.payload.max_attachment_bytes`, `run.vars["_runtime"]["max_attachment_bytes"]`, `ABSTRACTRUNTIME_MAX_ATTACHMENT_BYTES`, then the 25 MiB default.
231
232
 
@@ -3,12 +3,12 @@
3
3
  > Durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
4
4
 
5
5
  - Python: 3.10+ (see `pyproject.toml`)
6
- - Version: 0.4.25
6
+ - Version: 0.4.26
7
7
  - Ecosystem: [AbstractFramework](https://github.com/lpalbou/AbstractFramework) umbrella, integrates with [AbstractCore](https://github.com/lpalbou/abstractcore)
8
8
  - Hard invariant: `RunState.vars` must be JSON-serializable (`src/abstractruntime/core/models.py`)
9
- - Current AbstractCore baseline: `abstractruntime[abstractcore]` installs `abstractcore>=2.13.30`
10
- - Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.30`
11
- - Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned config should be translated into explicit Runtime inputs or Runtime-owned env names.
9
+ - Current AbstractCore baseline: base `abstractruntime` installs `abstractcore[remote,media,tools,vision,voice,audio,music]>=2.13.31`
10
+ - Install profiles: base `abstractruntime` is remote-light with MCP and multimodal routing; `abstractruntime[apple]` and `abstractruntime[gpu]` add local inferencer stacks.
11
+ - Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned config should be translated into explicit Runtime inputs or Runtime-owned env names. Hosts can attach `resolve_provider_endpoint_profile(provider_id)` to the LLM client; Runtime treats it as an optional resolver hook, injects transient provider/base URL/key params for the call, and redacts secret-like params from persisted observability.
12
12
 
13
13
  ## Start here
14
14
 
@@ -35,7 +35,7 @@
35
35
 
36
36
  ## Integrations
37
37
 
38
- - [AbstractCore integration](docs/integrations/abstractcore.md): `LLM_CALL` / `TOOL_CALLS` / `MODEL_RESIDENCY`, local/remote/hybrid, prompt-cache and residency host controls, local-only prompt-cache export/import admin, durable bloc/KV prompt-cache controls, discovery snapshot queries, durable run-scoped image/edit-image/text-to-video/image-to-video/voice/music/STT execution, media inputs, generated media outputs, progress ledger events, provider-key headers, and tool approval waits
38
+ - [AbstractCore integration](docs/integrations/abstractcore.md): `LLM_CALL` / `TOOL_CALLS` / `MODEL_RESIDENCY`, local/remote/hybrid, prompt-cache and residency host controls, local-only prompt-cache export/import admin, durable bloc/KV prompt-cache controls, discovery snapshot queries, durable run-scoped image/edit-image/text-to-video/image-to-video/voice/music/STT execution, media inputs, generated media outputs, progress ledger events, provider-key headers, host endpoint-profile resolver hooks, and tool approval waits
39
39
  - Prompt-cache tracks: use `LLM_CALL.params.prompt_cache_key`, `run.vars["_runtime"]["prompt_cache"]`, or `ABSTRACTRUNTIME_PROMPT_CACHE` for best-effort text/chat session reuse; use `LLM_CALL.params.prompt_cache_binding` for durable exact bloc-backed reuse; and use `get_abstractcore_host_facade(runtime).list_prompt_cache_exports(...)`, `prompt_cache_export(...)`, and `prompt_cache_import(...)` only for host-local operator/admin export-import workflows around live local provider caches. Runtime does not auto-derive prompt-cache keys for image/video/voice/music/STT output selectors. Local Runtime stores one content-addressed bloc per root plus provider/model-specific derived KV artifacts. Gateway prompt-cache env belongs in Gateway.
40
40
  - Durable bloc lifecycle: Runtime exposes `list_blocs(...)`, `list_bloc_kv_artifacts(...)`, `delete_bloc_kv_artifact(...)`, `prune_bloc_kv_artifacts(...)`, and `delete_bloc(...)`, with `dry_run`, `clear_loaded`, and `force` safety controls on the host facade.
41
41
  - Runtime-owned Core surfaces: `get_abstractcore_discovery_facade(...)`, `get_abstractcore_host_facade(...)`, and `get_abstractcore_run_facade(...)`