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.
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/ACKNOWLEDGMENTS.md +3 -5
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CHANGELOG.md +11 -1
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CONTRIBUTING.md +3 -3
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/PKG-INFO +31 -62
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/README.md +18 -20
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/api.md +5 -5
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/architecture.md +1 -1
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/faq.md +2 -2
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/getting-started.md +10 -5
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/integrations/abstractcore.md +10 -12
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/mcp-worker.md +2 -3
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/tools-comms.md +1 -1
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/troubleshooting.md +6 -7
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/README.md +2 -2
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/llms-full.txt +10 -9
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/llms.txt +5 -5
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/pyproject.toml +14 -54
- abstractruntime-0.4.26/release-notes.md +6 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +94 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/llm_client.py +233 -8
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +115 -2
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_multimodal_abstractcore_integration.py +89 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_packaging_extras.py +17 -19
- abstractruntime-0.4.26/tests/test_provider_endpoint_profile_resolution.py +130 -0
- abstractruntime-0.4.25/release-notes.md +0 -9
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/.gitignore +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/CODE_OF_CONDUCT.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/LICENSE +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/ROADMAP.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/SECURITY.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/adr/README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/evidence.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/limits.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/manual_testing.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/proposal.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/provenance.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/snapshots.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/emails.config.example.yaml +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/05_persistence.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/mkdocs.yml +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/pytest.ini +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/run_lifecycle.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/runtime.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/README.md +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/conftest.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_discovery_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_host_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_run_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_command_store.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_model_residency_control_plane.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_offloading.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_prompt_cache_modules.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_effect_invocation_trace.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_storage_deletion.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_media_nodes.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.4.25 → abstractruntime-0.4.26}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {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
|
-
##
|
|
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.
|
|
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.
|
|
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 (
|
|
20
|
-
python -m pip install -e ".[
|
|
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
|
-
-
|
|
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.
|
|
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
|
-
|
|
26
|
-
Requires-Dist:
|
|
27
|
-
Requires-Dist:
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
30
|
-
|
|
31
|
-
Requires-Dist:
|
|
32
|
-
Requires-Dist:
|
|
33
|
-
Requires-Dist:
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
77
|
+
Remote-light runtime:
|
|
107
78
|
|
|
108
79
|
```bash
|
|
109
80
|
pip install abstractruntime
|
|
110
81
|
```
|
|
111
82
|
|
|
112
|
-
AbstractCore
|
|
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
|
-
|
|
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[
|
|
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.
|
|
141
|
+
## What’s included (v0.4.26)
|
|
173
142
|
|
|
174
|
-
Kernel (
|
|
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
|
-
|
|
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 ".[
|
|
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.
|
|
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
|
-
|
|
29
|
+
Remote-light runtime:
|
|
30
30
|
|
|
31
31
|
```bash
|
|
32
32
|
pip install abstractruntime
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
AbstractCore
|
|
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
|
-
|
|
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[
|
|
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.
|
|
93
|
+
## What’s included (v0.4.26)
|
|
96
94
|
|
|
97
|
-
Kernel (
|
|
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
|
-
|
|
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 ".[
|
|
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
|
-
|
|
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
|
-
##
|
|
179
|
+
## Runtime-owned integrations
|
|
180
180
|
|
|
181
181
|
### AbstractCore (LLM + tools)
|
|
182
182
|
|
|
183
|
-
Requires: `pip install
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
9
|
+
Remote-light runtime:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
pip install abstractruntime
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
|
|
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[
|
|
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
|
|
16
|
+
pip install abstractruntime
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
|
|
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
|
-
|
|
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[
|
|
27
|
+
pip install "abstractruntime[apple]"
|
|
28
|
+
pip install "abstractruntime[gpu]"
|
|
25
29
|
```
|
|
26
30
|
|
|
27
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
16
|
+
python -m pip install -U abstractruntime
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
Fix:
|
|
20
|
-
- Install
|
|
21
|
-
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
|
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
|
|
31
|
+
Examples 6-7 use Runtime's base AbstractCore integration:
|
|
32
32
|
```bash
|
|
33
|
-
pip install
|
|
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.
|
|
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
|
-
-
|
|
17
|
-
-
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
-
-
|
|
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.
|
|
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
|
|
10
|
-
-
|
|
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(...)`
|