AbstractRuntime 0.4.21__tar.gz → 0.4.23__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.21 → abstractruntime-0.4.23}/CHANGELOG.md +24 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/PKG-INFO +11 -11
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/README.md +3 -3
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/api.md +1 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/architecture.md +2 -2
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/README.md +3 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +1 -1
- abstractruntime-0.4.23/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +43 -0
- abstractruntime-0.4.23/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +53 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +28 -4
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/getting-started.md +1 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/integrations/abstractcore.md +3 -3
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/troubleshooting.md +1 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/llms-full.txt +3 -3
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/llms.txt +3 -3
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/pyproject.toml +11 -8
- abstractruntime-0.4.23/release-notes.md +9 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/__init__.py +5 -1
- abstractruntime-0.4.23/src/abstractruntime/core/run_lifecycle.py +91 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/runtime.py +56 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +29 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +153 -3
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +13 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/llm_client.py +1188 -142
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/output_specs.py +2 -2
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/run_facade.py +12 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/__init__.py +3 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/base.py +20 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/commands.py +61 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/in_memory.py +14 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/json_files.py +27 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/ledger_chain.py +10 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/observable.py +6 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/offloading.py +15 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/sqlite.py +38 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +9 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/compiler.py +76 -2
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +102 -1
- abstractruntime-0.4.23/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +53 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/executor.py +170 -24
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_abstractcore_discovery_facade.py +181 -2
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_abstractcore_run_facade.py +18 -1
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_model_residency_control_plane.py +435 -45
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_multimodal_abstractcore_integration.py +76 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_packaging_extras.py +7 -7
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_queryable_run_store.py +30 -0
- abstractruntime-0.4.23/tests/test_runtime_effect_invocation_trace.py +45 -0
- abstractruntime-0.4.23/tests/test_storage_deletion.py +119 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_media_nodes.py +27 -2
- abstractruntime-0.4.21/release-notes.md +0 -15
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/.gitignore +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/CODE_OF_CONDUCT.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/CONTRIBUTING.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/LICENSE +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/ROADMAP.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/SECURITY.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/adr/README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/evidence.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/faq.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/limits.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/manual_testing.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/proposal.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/provenance.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/snapshots.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/tools-comms.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/emails.config.example.yaml +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/05_persistence.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/examples/README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/mkdocs.yml +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/pytest.ini +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/README.md +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/conftest.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_abstractcore_host_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_command_store.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_offloading.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_prompt_cache_modules.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.4.21 → abstractruntime-0.4.23}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
|
@@ -7,6 +7,27 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.23] - 2026-05-26
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Run lifecycle helpers and execution metric surfaces for VisualFlow execution and Gateway run retention workflows.
|
|
14
|
+
- Storage deletion primitives for durable run cleanup across the Runtime storage backends.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.28` (and matching `multimodal`, `mcp-worker`, and hardware-profile cascade extras), aligning Runtime with the latest Core capability defaults, MLX-Gen catalog, and OmniVoice discovery contracts.
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
- Effect invocation tracing now records generated-media and code-node execution details consistently across local and Gateway-hosted runs.
|
|
21
|
+
|
|
22
|
+
## [0.4.22] - 2026-05-23
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.27` (and matching `multimodal`, `mcp-worker`, and hardware-profile cascade extras), aligning Runtime with the latest Core capability plugin floors and server contracts.
|
|
26
|
+
|
|
27
|
+
### Fixed
|
|
28
|
+
- Remote and VisualFlow music generation now fail closed on legacy `backend` / `music_backend` selectors and require `provider` / `music_provider` as the backend selector, matching AbstractCore Server `/v1/audio/music` validation.
|
|
29
|
+
- VisualFlow `generate_music` lowering now preserves boolean `structure_prompt` values (including explicit `False`) in the pending output selector, keeping the Flow/Gateway/Core contract consistent.
|
|
30
|
+
|
|
10
31
|
## [0.4.21] - 2026-05-22
|
|
11
32
|
|
|
12
33
|
### Added
|
|
@@ -523,7 +544,9 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
|
|
|
523
544
|
|
|
524
545
|
Initial development version with basic proof-of-concept features.
|
|
525
546
|
|
|
526
|
-
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.
|
|
547
|
+
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.23...HEAD
|
|
548
|
+
[0.4.23]: https://github.com/lpalbou/abstractruntime/compare/v0.4.22...v0.4.23
|
|
549
|
+
[0.4.22]: https://github.com/lpalbou/abstractruntime/compare/v0.4.21...v0.4.22
|
|
527
550
|
[0.4.21]: https://github.com/lpalbou/abstractruntime/compare/v0.4.20...v0.4.21
|
|
528
551
|
[0.4.20]: https://github.com/lpalbou/abstractruntime/compare/v0.4.19...v0.4.20
|
|
529
552
|
[0.4.19]: https://github.com/lpalbou/abstractruntime/compare/v0.4.18...v0.4.19
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.23
|
|
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
|
|
@@ -23,24 +23,24 @@ Requires-Python: >=3.10
|
|
|
23
23
|
Requires-Dist: abstractmemory>=0.2.6
|
|
24
24
|
Requires-Dist: abstractsemantics>=0.0.3
|
|
25
25
|
Provides-Extra: abstractcore
|
|
26
|
-
Requires-Dist: abstractcore>=2.13.
|
|
26
|
+
Requires-Dist: abstractcore>=2.13.28; extra == 'abstractcore'
|
|
27
27
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'abstractcore'
|
|
28
28
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'abstractcore'
|
|
29
29
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'abstractcore'
|
|
30
30
|
Provides-Extra: all-apple
|
|
31
|
-
Requires-Dist: abstractcore[all-apple]>=2.13.
|
|
31
|
+
Requires-Dist: abstractcore[all-apple]>=2.13.28; extra == 'all-apple'
|
|
32
32
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'all-apple'
|
|
33
33
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'all-apple'
|
|
34
34
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'all-apple'
|
|
35
35
|
Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-apple'
|
|
36
36
|
Provides-Extra: all-gpu
|
|
37
|
-
Requires-Dist: abstractcore[all-gpu]>=2.13.
|
|
37
|
+
Requires-Dist: abstractcore[all-gpu]>=2.13.28; extra == 'all-gpu'
|
|
38
38
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'all-gpu'
|
|
39
39
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'all-gpu'
|
|
40
40
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'all-gpu'
|
|
41
41
|
Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-gpu'
|
|
42
42
|
Provides-Extra: apple
|
|
43
|
-
Requires-Dist: abstractcore[apple]>=2.13.
|
|
43
|
+
Requires-Dist: abstractcore[apple]>=2.13.28; extra == 'apple'
|
|
44
44
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'apple'
|
|
45
45
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'apple'
|
|
46
46
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'apple'
|
|
@@ -50,18 +50,18 @@ Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
|
50
50
|
Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
|
|
51
51
|
Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
|
|
52
52
|
Provides-Extra: gpu
|
|
53
|
-
Requires-Dist: abstractcore[gpu]>=2.13.
|
|
53
|
+
Requires-Dist: abstractcore[gpu]>=2.13.28; extra == 'gpu'
|
|
54
54
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'gpu'
|
|
55
55
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'gpu'
|
|
56
56
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'gpu'
|
|
57
57
|
Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'gpu'
|
|
58
58
|
Provides-Extra: mcp-worker
|
|
59
|
-
Requires-Dist: abstractcore[tools]>=2.13.
|
|
59
|
+
Requires-Dist: abstractcore[tools]>=2.13.28; extra == 'mcp-worker'
|
|
60
60
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'mcp-worker'
|
|
61
61
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'mcp-worker'
|
|
62
62
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'mcp-worker'
|
|
63
63
|
Provides-Extra: multimodal
|
|
64
|
-
Requires-Dist: abstractcore[audio,music,remote,vision,voice]>=2.13.
|
|
64
|
+
Requires-Dist: abstractcore[audio,music,remote,vision,voice]>=2.13.28; extra == 'multimodal'
|
|
65
65
|
Requires-Dist: anyio<5.0.0,>=4.12.1; extra == 'multimodal'
|
|
66
66
|
Requires-Dist: httpx<1.0.0,>=0.28.1; extra == 'multimodal'
|
|
67
67
|
Requires-Dist: openai<2.0.0,>=1.109.1; extra == 'multimodal'
|
|
@@ -81,7 +81,7 @@ Description-Content-Type: text/markdown
|
|
|
81
81
|
|
|
82
82
|
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
83
|
|
|
84
|
-
**Version:** 0.4.
|
|
84
|
+
**Version:** 0.4.23 • **Python:** 3.10+
|
|
85
85
|
|
|
86
86
|
**Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
|
|
87
87
|
|
|
@@ -115,7 +115,7 @@ AbstractCore integration (LLM + tools):
|
|
|
115
115
|
pip install "abstractruntime[abstractcore]"
|
|
116
116
|
```
|
|
117
117
|
|
|
118
|
-
The `abstractcore` extra installs AbstractCore 2.13.
|
|
118
|
+
The `abstractcore` extra installs AbstractCore 2.13.28 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/TTS/STT, 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.28`, including `abstractmusic>=0.1.12`).
|
|
119
119
|
|
|
120
120
|
Hardware profile cascades are available for native Python installs:
|
|
121
121
|
`abstractruntime[apple]`, `abstractruntime[gpu]`, `abstractruntime[all-apple]`,
|
|
@@ -169,7 +169,7 @@ state = rt.resume(
|
|
|
169
169
|
assert state.status.value == "completed"
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
## What’s included (v0.4.
|
|
172
|
+
## What’s included (v0.4.23)
|
|
173
173
|
|
|
174
174
|
Kernel (dependency-light):
|
|
175
175
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -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.23 • **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
|
|
|
@@ -38,7 +38,7 @@ AbstractCore integration (LLM + tools):
|
|
|
38
38
|
pip install "abstractruntime[abstractcore]"
|
|
39
39
|
```
|
|
40
40
|
|
|
41
|
-
The `abstractcore` extra installs AbstractCore 2.13.
|
|
41
|
+
The `abstractcore` extra installs AbstractCore 2.13.28 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/TTS/STT, 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.28`, including `abstractmusic>=0.1.12`).
|
|
42
42
|
|
|
43
43
|
Hardware profile cascades are available for native Python installs:
|
|
44
44
|
`abstractruntime[apple]`, `abstractruntime[gpu]`, `abstractruntime[all-apple]`,
|
|
@@ -92,7 +92,7 @@ state = rt.resume(
|
|
|
92
92
|
assert state.status.value == "completed"
|
|
93
93
|
```
|
|
94
94
|
|
|
95
|
-
## What’s included (v0.4.
|
|
95
|
+
## What’s included (v0.4.23)
|
|
96
96
|
|
|
97
97
|
Kernel (dependency-light):
|
|
98
98
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -180,7 +180,7 @@ This produces a portable record of a run’s state + ledger + artifacts suitable
|
|
|
180
180
|
|
|
181
181
|
### AbstractCore (LLM + tools)
|
|
182
182
|
|
|
183
|
-
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.
|
|
183
|
+
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.28 or newer).
|
|
184
184
|
|
|
185
185
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
186
186
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AbstractRuntime — Architecture
|
|
2
2
|
|
|
3
|
-
> Updated: 2026-05-
|
|
4
|
-
> Version: 0.4.
|
|
3
|
+
> Updated: 2026-05-23
|
|
4
|
+
> Version: 0.4.23
|
|
5
5
|
> Scope: this describes **what is implemented in this repository**.
|
|
6
6
|
|
|
7
7
|
AbstractRuntime is a **durable workflow runtime**: it executes workflow graphs as a persisted state machine with explicit waits (user, time, events, jobs, subworkflows). A run can pause for hours/days and resume **without** keeping Python stacks/coroutines alive.
|
|
@@ -14,7 +14,7 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
14
14
|
|
|
15
15
|
- Planned: 5
|
|
16
16
|
- Proposed: 3
|
|
17
|
-
- Completed:
|
|
17
|
+
- Completed: 30
|
|
18
18
|
- Deprecated: 13
|
|
19
19
|
- Recurrent: 0
|
|
20
20
|
|
|
@@ -68,6 +68,8 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
68
68
|
| 0033 | `completed/0033_runtime_host_local_prompt_cache_export_import_surface.md` |
|
|
69
69
|
| 0035 | `completed/0035_model_residency_provider_truth_for_local_http_clients.md` |
|
|
70
70
|
| 0037 | `completed/0037_visualflow_generate_music_node_compiler_parity.md` |
|
|
71
|
+
| 0039 | `completed/0039_runtime_music_structure_prompt_bool_contract.md` |
|
|
72
|
+
| 0040 | `completed/0040_task_agnostic_local_residency_listing.md` |
|
|
71
73
|
|
|
72
74
|
## Planned
|
|
73
75
|
|
|
@@ -25,7 +25,7 @@ AbstractFlow now ships a `generate_music` authoring node. Runtime must recognize
|
|
|
25
25
|
## What shipped
|
|
26
26
|
- Added first-class VisualFlow lowering support for `nodeType="generate_music"` in Runtime:
|
|
27
27
|
- compiles into an `EffectType.LLM_CALL` pending effect with output selector `{modality: "music", task: "music_generation"}`
|
|
28
|
-
- accepts `prompt`, `music_provider`, `music_model`, `
|
|
28
|
+
- accepts `prompt`, `music_provider`, `music_model`, `lyrics`, `duration_s`, `format`, `seed`, `num_inference_steps`, `guidance_scale`, `instrumental`, `enhance_prompt`, `auto_lyrics`, `structure_prompt`, `text_planner_mode`, and `extra` from pins or `effectConfig` (`music_backend` is a legacy alias and is rejected; use `music_provider`)
|
|
29
29
|
- keeps runtime LLM `provider`/`model` separate from music provider/model selectors (no legacy fallback)
|
|
30
30
|
- Extended VisualFlow compiler routing so `generate_music` is treated as an LLM-call-backed effect node (like `generate_image` / `generate_voice` / `transcribe_audio`).
|
|
31
31
|
- Extended VisualFlow effect-result mapping so completed `generate_music` nodes populate:
|
abstractruntime-0.4.23/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Completed: Runtime Music `structure_prompt` Boolean Contract Alignment
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Created: 2026-05-22
|
|
5
|
+
- Completed: 2026-05-22
|
|
6
|
+
- Status: Completed
|
|
7
|
+
- Origin: moved from `docs/backlog/proposed/0039_runtime_music_structure_prompt_bool_contract.md`
|
|
8
|
+
|
|
9
|
+
## Problem
|
|
10
|
+
|
|
11
|
+
Gateway `MusicGenerateRequest` exposes `structure_prompt` as `Optional[bool]`.
|
|
12
|
+
AbstractFlow mirrors that boolean contract in its Generate Music node.
|
|
13
|
+
|
|
14
|
+
Runtime's native `generate_music` VisualFlow handler forwarded
|
|
15
|
+
`structure_prompt` only through the string-field path. Boolean values authored
|
|
16
|
+
by Flow were therefore dropped before the Gateway/Core music call.
|
|
17
|
+
|
|
18
|
+
## Implementation
|
|
19
|
+
|
|
20
|
+
- Moved `structure_prompt` from the music string option group to the boolean
|
|
21
|
+
option group in the native `generate_music` VisualFlow handler.
|
|
22
|
+
- Preserved explicit `False` values so callers can distinguish "disabled" from
|
|
23
|
+
"not specified".
|
|
24
|
+
- Added compiler coverage proving:
|
|
25
|
+
- `structure_prompt=True` is forwarded as a boolean in the pending music
|
|
26
|
+
output selector.
|
|
27
|
+
- `structure_prompt=False` from node input pins is preserved as an explicit
|
|
28
|
+
boolean override.
|
|
29
|
+
|
|
30
|
+
## Outcome
|
|
31
|
+
|
|
32
|
+
Runtime now keeps the same boolean contract used by AbstractFlow, Gateway, and
|
|
33
|
+
AbstractCore. A Flow-authored Generate Music node can enable or disable backend
|
|
34
|
+
structured prompt planning without Runtime stringifying or dropping the control.
|
|
35
|
+
|
|
36
|
+
## Validation
|
|
37
|
+
|
|
38
|
+
- `PYTHONPATH=src python -m pytest -q tests/test_visualflow_media_nodes.py`
|
|
39
|
+
|
|
40
|
+
## Related Flow work
|
|
41
|
+
|
|
42
|
+
AbstractFlow completed Gateway `0.2.17` native media alignment in
|
|
43
|
+
`abstractflow/docs/backlog/completed/0072_gateway_0_2_17_native_media_contract_alignment.md`.
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# 0040 Task-Agnostic Local Residency Listing
|
|
2
|
+
|
|
3
|
+
## Metadata
|
|
4
|
+
- Created: 2026-05-24
|
|
5
|
+
- Status: Completed
|
|
6
|
+
- Completed: 2026-05-24
|
|
7
|
+
- Origin: direct bug fix from AbstractFlow model residency UI investigation
|
|
8
|
+
|
|
9
|
+
## Goal
|
|
10
|
+
|
|
11
|
+
Make Runtime's local model-residency list operation match the Gateway/Core
|
|
12
|
+
control-plane contract: omitting `task` lists resident models across tasks,
|
|
13
|
+
while an explicit `task` remains a filter.
|
|
14
|
+
|
|
15
|
+
## What Shipped
|
|
16
|
+
|
|
17
|
+
- Local and MultiLocal Runtime residency listing now treat an omitted task as
|
|
18
|
+
task-agnostic instead of silently defaulting to `text_generation`.
|
|
19
|
+
- Local capability-backed residency rows are normalized with verified
|
|
20
|
+
`provider_resident` / `provider_residency_verified` fields when the
|
|
21
|
+
capability plugin reports `loaded` or `resident`.
|
|
22
|
+
- AbstractFlow's loaded-model table now honors the canonical `loaded` /
|
|
23
|
+
`resident` state used by Core capability records, while still respecting
|
|
24
|
+
explicit negative provider-residency fields.
|
|
25
|
+
- Regression tests cover local and MultiLocal TTS rows appearing in an
|
|
26
|
+
unfiltered residency list after a capability-backed load.
|
|
27
|
+
|
|
28
|
+
## Current Code Pointers
|
|
29
|
+
|
|
30
|
+
- `src/abstractruntime/integrations/abstractcore/llm_client.py`
|
|
31
|
+
- `tests/test_model_residency_control_plane.py`
|
|
32
|
+
- AbstractFlow `web/frontend/src/components/ModelResidencyPanel.tsx`
|
|
33
|
+
|
|
34
|
+
## Validation
|
|
35
|
+
|
|
36
|
+
Focused validation run on 2026-05-24:
|
|
37
|
+
|
|
38
|
+
- `python -m py_compile abstractruntime/src/abstractruntime/integrations/abstractcore/llm_client.py`
|
|
39
|
+
- `PYTHONPATH=abstractruntime/src pytest -q abstractruntime/tests/test_model_residency_control_plane.py -q`
|
|
40
|
+
- `npm run build` from `abstractflow/web/frontend`
|
|
41
|
+
- `git diff --check` for the touched Runtime and Flow files
|
|
42
|
+
|
|
43
|
+
## Completion Report
|
|
44
|
+
|
|
45
|
+
### Summary
|
|
46
|
+
|
|
47
|
+
The Omnivoice warmup path was already returning a true resident runtime. The
|
|
48
|
+
row disappeared because local Runtime listing with no task returned only text
|
|
49
|
+
rows, and Flow then hid capability rows that used `loaded=true` /
|
|
50
|
+
`state=resident` instead of text-provider-specific `provider_loaded`.
|
|
51
|
+
|
|
52
|
+
The fix is at the control-plane normalization boundary, not an Omnivoice
|
|
53
|
+
special case.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
## 025_runtime_retention_and_purge_contract (planned)
|
|
2
2
|
|
|
3
|
-
**Status**:
|
|
3
|
+
**Status**: Partially implemented
|
|
4
4
|
**Priority**: Medium
|
|
5
5
|
**Depends on**: 009_artifact_store (completed), 011_subworkflow_support (completed), 012_run_store_query_and_scheduler_support (completed), 024_runtime_owned_run_scoped_media_execution (completed)
|
|
6
6
|
**Related ADRs**: 0003_provenance_tamper_evident_hash_chain, 0004_runtime_owns_run_scoped_media_execution_truth
|
|
@@ -15,12 +15,18 @@ Define capability-detected runtime purge mechanics for explicitly ephemeral run
|
|
|
15
15
|
|
|
16
16
|
## Current code reality
|
|
17
17
|
|
|
18
|
-
- `RunStore` still exposes only `save()` / `load()
|
|
18
|
+
- `RunStore` still exposes only `save()` / `load()` as its mandatory base interface.
|
|
19
19
|
- `QueryableRunStore` already exposes `list_runs()`, `list_due_wait_until()`, and `list_children()`.
|
|
20
20
|
- `QueryableRunIndexStore` already exposes `list_run_index(...)`, including `session_id` and `root_only`, so hosts can already hide child runs from top-level listings without inventing purge semantics first.
|
|
21
|
-
- `LedgerStore` is still append-only with `append()` / `list()`.
|
|
21
|
+
- `LedgerStore` is still append-only as its mandatory base interface with `append()` / `list()`.
|
|
22
|
+
- Optional deletion protocols now exist for host-owned cleanup paths:
|
|
23
|
+
- `DeletableRunStore.delete(run_id)`
|
|
24
|
+
- `DeletableLedgerStore.delete(run_id)`
|
|
25
|
+
- `DeletableCommandStore.delete_by_run(run_id)`
|
|
26
|
+
- In-memory, JSON-file/JSONL, SQLite, and storage wrapper implementations now support those deletion protocols where applicable.
|
|
22
27
|
- `ArtifactStore` already supports `delete()` and `delete_by_run()`.
|
|
23
28
|
- Runtime already has private tree-walk precedents via `history_bundle._list_descendant_run_ids(...)` and scheduler child-run traversal, but no public host-facing purge helper.
|
|
29
|
+
- Gateway now uses these optional deletion capabilities in `abstractgateway.run_retention` to purge expired ephemeral draft-test run trees. Runtime still does not own the Gateway/Flow draft taxonomy.
|
|
24
30
|
- Runtime-owned child runs now include both classic subworkflows and media child runs, so cleanup is no longer only a Flow/Gateway concern.
|
|
25
31
|
- Provenance hash chains are implemented, which makes purge/archive semantics an explicit audit decision, not just a storage API detail.
|
|
26
32
|
|
|
@@ -101,7 +107,7 @@ Document the consequences clearly:
|
|
|
101
107
|
## Acceptance criteria
|
|
102
108
|
|
|
103
109
|
- [ ] Runtime documents a minimal retention metadata contract centered on `retention_class` and optional `expires_at`.
|
|
104
|
-
- [
|
|
110
|
+
- [x] Optional delete capabilities are defined without widening every storage base class.
|
|
105
111
|
- [ ] A host-facing purge helper can dry-run and execute run-tree cleanup when the configured stores support it.
|
|
106
112
|
- [ ] The helper refuses active runs by default and refuses durable runs unless explicitly forced.
|
|
107
113
|
- [ ] The helper reports descendant runs, deleted checkpoints, deleted ledgers, deleted artifacts, unsupported capabilities, and GC caveats in a structured result.
|
|
@@ -139,3 +145,21 @@ No new ADR is required yet. If this item graduates into an accepted retention ta
|
|
|
139
145
|
## Priority note
|
|
140
146
|
|
|
141
147
|
This matters more now that Runtime owns more child-run patterns, but it is still a medium-priority mechanics item, not the highest-priority runtime correctness gap.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 2026-05-25 implementation note
|
|
152
|
+
|
|
153
|
+
The AbstractFlow draft/published lifecycle slice added the storage-level deletion mechanics needed
|
|
154
|
+
by Gateway-owned draft-test purge:
|
|
155
|
+
|
|
156
|
+
- `abstractruntime.storage.base.DeletableRunStore`
|
|
157
|
+
- `abstractruntime.storage.base.DeletableLedgerStore`
|
|
158
|
+
- `abstractruntime.storage.commands.DeletableCommandStore`
|
|
159
|
+
- concrete deletion support for memory, JSON/JSONL, SQLite, offloading, observable, and hash-chain
|
|
160
|
+
store wrappers
|
|
161
|
+
- focused coverage in `tests/test_storage_deletion.py`
|
|
162
|
+
|
|
163
|
+
The broader Runtime-owned host-facing purge helper remains open. Gateway currently owns the only
|
|
164
|
+
concrete purge policy because `purpose: draft_test` and `retention.mode: ephemeral` are Gateway/Flow
|
|
165
|
+
control-plane semantics, not Runtime taxonomy.
|
|
@@ -18,7 +18,7 @@ Optional (LLM + tools via AbstractCore):
|
|
|
18
18
|
pip install "abstractruntime[abstractcore]"
|
|
19
19
|
```
|
|
20
20
|
|
|
21
|
-
This installs AbstractCore 2.13.
|
|
21
|
+
This installs AbstractCore 2.13.28 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/TTS/STT, current tool behavior, public output-selector contract, async/sync text-generation output-selector parity, 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.28`, including `abstractmusic>=0.1.12`).
|
|
22
22
|
|
|
23
23
|
## Mental model (source of truth)
|
|
24
24
|
|
|
@@ -16,7 +16,7 @@ Implementation pointers (this repo):
|
|
|
16
16
|
pip install "abstractruntime[abstractcore]"
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
This extra installs AbstractCore 2.13.
|
|
19
|
+
This extra installs AbstractCore 2.13.28 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/TTS/STT, current tool catalog, AbstractCore's public output-selector contract, async/sync text-generation output-selector parity, and the public local vision-cache catalog helper used by Runtime discovery.
|
|
20
20
|
|
|
21
21
|
For AbstractCore's multimodal `generate(..., output=...)` path, use the newer baseline and optional media packages:
|
|
22
22
|
|
|
@@ -24,7 +24,7 @@ For AbstractCore's multimodal `generate(..., output=...)` path, use the newer ba
|
|
|
24
24
|
pip install "abstractruntime[multimodal]"
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
This installs `abstractcore[remote,vision,voice,audio,music]>=2.13.
|
|
27
|
+
This installs `abstractcore[remote,vision,voice,audio,music]>=2.13.28`. Local image/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
28
|
|
|
29
29
|
The MCP worker entrypoint uses the `mcp-worker` extra:
|
|
30
30
|
|
|
@@ -687,7 +687,7 @@ facade = get_abstractcore_run_facade(rt)
|
|
|
687
687
|
child = facade.generate_image(
|
|
688
688
|
"existing-parent-run-id",
|
|
689
689
|
prompt="A red mug on a white table.",
|
|
690
|
-
output={"provider": "
|
|
690
|
+
output={"provider": "mlx-gen", "model": "flux2-klein-4b", "format": "png"},
|
|
691
691
|
)
|
|
692
692
|
|
|
693
693
|
assert child.status.value == "completed"
|
|
@@ -21,7 +21,7 @@ Fix:
|
|
|
21
21
|
- `abstractruntime[abstractcore]` for LLM/tools integration.
|
|
22
22
|
- `abstractruntime[multimodal]` for common image, voice, audio, and music dependencies.
|
|
23
23
|
- `abstractruntime[mcp-worker]` for the MCP worker entry point.
|
|
24
|
-
- The current AbstractCore integration expects `abstractcore>=2.13.
|
|
24
|
+
- The current AbstractCore integration expects `abstractcore>=2.13.28`.
|
|
25
25
|
|
|
26
26
|
Verify:
|
|
27
27
|
|
|
@@ -10,11 +10,11 @@ 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.23
|
|
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.
|
|
17
|
-
- Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.
|
|
16
|
+
- Optional AbstractCore baseline: `abstractruntime[abstractcore]` installs `abstractcore>=2.13.28`
|
|
17
|
+
- Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.28`
|
|
18
18
|
- Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned env/config should be translated into explicit Runtime inputs or Runtime-owned env names.
|
|
19
19
|
|
|
20
20
|
```mermaid
|
|
@@ -3,11 +3,11 @@
|
|
|
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.23
|
|
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.
|
|
10
|
-
- Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.
|
|
9
|
+
- Current AbstractCore baseline: `abstractruntime[abstractcore]` installs `abstractcore>=2.13.28`
|
|
10
|
+
- Multimodal extra: `abstractruntime[multimodal]` installs `abstractcore[remote,vision,voice,audio,music]>=2.13.28`
|
|
11
11
|
- Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned config should be translated into explicit Runtime inputs or Runtime-owned env names.
|
|
12
12
|
|
|
13
13
|
## Start here
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "AbstractRuntime"
|
|
7
|
-
version = "0.4.
|
|
7
|
+
version = "0.4.23"
|
|
8
8
|
description = "AbstractRuntime: a durable graph runner designed to pair with AbstractCore."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -46,14 +46,14 @@ dependencies = [
|
|
|
46
46
|
[project.optional-dependencies]
|
|
47
47
|
# Enables `abstractruntime.integrations.abstractcore.*` imports.
|
|
48
48
|
abstractcore = [
|
|
49
|
-
"abstractcore>=2.13.
|
|
49
|
+
"abstractcore>=2.13.28",
|
|
50
50
|
"openai<2.0.0,>=1.109.1",
|
|
51
51
|
"httpx<1.0.0,>=0.28.1",
|
|
52
52
|
"anyio<5.0.0,>=4.12.1",
|
|
53
53
|
]
|
|
54
54
|
|
|
55
55
|
apple = [
|
|
56
|
-
"abstractcore[apple]>=2.13.
|
|
56
|
+
"abstractcore[apple]>=2.13.28",
|
|
57
57
|
"openai<2.0.0,>=1.109.1",
|
|
58
58
|
"httpx<1.0.0,>=0.28.1",
|
|
59
59
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -61,7 +61,7 @@ apple = [
|
|
|
61
61
|
]
|
|
62
62
|
|
|
63
63
|
gpu = [
|
|
64
|
-
"abstractcore[gpu]>=2.13.
|
|
64
|
+
"abstractcore[gpu]>=2.13.28",
|
|
65
65
|
"openai<2.0.0,>=1.109.1",
|
|
66
66
|
"httpx<1.0.0,>=0.28.1",
|
|
67
67
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -69,7 +69,7 @@ gpu = [
|
|
|
69
69
|
]
|
|
70
70
|
|
|
71
71
|
all-apple = [
|
|
72
|
-
"abstractcore[all-apple]>=2.13.
|
|
72
|
+
"abstractcore[all-apple]>=2.13.28",
|
|
73
73
|
"openai<2.0.0,>=1.109.1",
|
|
74
74
|
"httpx<1.0.0,>=0.28.1",
|
|
75
75
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -77,7 +77,7 @@ all-apple = [
|
|
|
77
77
|
]
|
|
78
78
|
|
|
79
79
|
all-gpu = [
|
|
80
|
-
"abstractcore[all-gpu]>=2.13.
|
|
80
|
+
"abstractcore[all-gpu]>=2.13.28",
|
|
81
81
|
"openai<2.0.0,>=1.109.1",
|
|
82
82
|
"httpx<1.0.0,>=0.28.1",
|
|
83
83
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -87,7 +87,7 @@ all-gpu = [
|
|
|
87
87
|
# Enables AbstractCore multimodal generation helpers with common image/voice/
|
|
88
88
|
# audio/music capability packages.
|
|
89
89
|
multimodal = [
|
|
90
|
-
"abstractcore[remote,vision,voice,audio,music]>=2.13.
|
|
90
|
+
"abstractcore[remote,vision,voice,audio,music]>=2.13.28",
|
|
91
91
|
"openai<2.0.0,>=1.109.1",
|
|
92
92
|
"httpx<1.0.0,>=0.28.1",
|
|
93
93
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -101,7 +101,7 @@ multimodal = [
|
|
|
101
101
|
|
|
102
102
|
# Enables `abstractruntime-mcp-worker` with the default toolsets (includes bs4/lxml).
|
|
103
103
|
mcp-worker = [
|
|
104
|
-
"abstractcore[tools]>=2.13.
|
|
104
|
+
"abstractcore[tools]>=2.13.28",
|
|
105
105
|
"openai<2.0.0,>=1.109.1",
|
|
106
106
|
"httpx<1.0.0,>=0.28.1",
|
|
107
107
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -131,3 +131,6 @@ abstractruntime-mcp-worker = "abstractruntime.integrations.abstractcore.mcp_work
|
|
|
131
131
|
|
|
132
132
|
[tool.hatch.build.targets.wheel]
|
|
133
133
|
packages = ["src/abstractruntime"]
|
|
134
|
+
|
|
135
|
+
[tool.pytest.ini_options]
|
|
136
|
+
pythonpath = ["src"]
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
### Added
|
|
2
|
+
- Run lifecycle helpers and execution metric surfaces for VisualFlow execution and Gateway run retention workflows.
|
|
3
|
+
- Storage deletion primitives for durable run cleanup across the Runtime storage backends.
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.28` (and matching `multimodal`, `mcp-worker`, and hardware-profile cascade extras), aligning Runtime with the latest Core capability defaults, MLX-Gen catalog, and OmniVoice discovery contracts.
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
- Effect invocation tracing now records generated-media and code-node execution details consistently across local and Gateway-hosted runs.
|
|
@@ -29,7 +29,7 @@ from .core.policy import (
|
|
|
29
29
|
NoRetryPolicy,
|
|
30
30
|
compute_idempotency_key,
|
|
31
31
|
)
|
|
32
|
-
from .storage.base import QueryableRunStore
|
|
32
|
+
from .storage.base import DeletableLedgerStore, DeletableRunStore, QueryableRunStore
|
|
33
33
|
from .storage.in_memory import InMemoryLedgerStore, InMemoryRunStore
|
|
34
34
|
from .storage.json_files import JsonFileRunStore, JsonlLedgerStore
|
|
35
35
|
from .storage.sqlite import (
|
|
@@ -44,6 +44,7 @@ from .storage.commands import (
|
|
|
44
44
|
CommandCursorStore,
|
|
45
45
|
CommandRecord,
|
|
46
46
|
CommandStore,
|
|
47
|
+
DeletableCommandStore,
|
|
47
48
|
InMemoryCommandCursorStore,
|
|
48
49
|
InMemoryCommandStore,
|
|
49
50
|
JsonFileCommandCursorStore,
|
|
@@ -117,6 +118,8 @@ __all__ = [
|
|
|
117
118
|
"create_scheduled_runtime",
|
|
118
119
|
# Storage backends
|
|
119
120
|
"QueryableRunStore",
|
|
121
|
+
"DeletableRunStore",
|
|
122
|
+
"DeletableLedgerStore",
|
|
120
123
|
"InMemoryRunStore",
|
|
121
124
|
"InMemoryLedgerStore",
|
|
122
125
|
"JsonFileRunStore",
|
|
@@ -127,6 +130,7 @@ __all__ = [
|
|
|
127
130
|
"CommandRecord",
|
|
128
131
|
"CommandAppendResult",
|
|
129
132
|
"CommandStore",
|
|
133
|
+
"DeletableCommandStore",
|
|
130
134
|
"CommandCursorStore",
|
|
131
135
|
"InMemoryCommandStore",
|
|
132
136
|
"JsonlCommandStore",
|