AbstractRuntime 0.4.20__tar.gz → 0.4.22__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.20 → abstractruntime-0.4.22}/CHANGELOG.md +30 -1
- abstractruntime-0.4.22/CODE_OF_CONDUCT.md +30 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/PKG-INFO +13 -11
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/README.md +5 -3
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/README.md +3 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +1 -1
- abstractruntime-0.4.22/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +60 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/README.md +2 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/api.md +10 -5
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/architecture.md +2 -2
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/README.md +13 -3
- abstractruntime-0.4.22/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +205 -0
- abstractruntime-0.4.22/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +88 -0
- abstractruntime-0.4.22/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +43 -0
- abstractruntime-0.4.22/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +136 -0
- abstractruntime-0.4.22/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +85 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/faq.md +3 -3
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/getting-started.md +1 -1
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/integrations/abstractcore.md +10 -6
- abstractruntime-0.4.22/docs/troubleshooting.md +136 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/llms-full.txt +9 -5
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/llms.txt +9 -6
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/mkdocs.yml +1 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/pyproject.toml +8 -8
- abstractruntime-0.4.22/release-notes.md +6 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +81 -6
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/host_facade.py +7 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/llm_client.py +580 -39
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/output_specs.py +2 -2
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/run_facade.py +36 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/compiler.py +46 -5
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/executor.py +207 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_abstractcore_host_facade.py +15 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_abstractcore_run_facade.py +82 -1
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_factory_timeouts_default_to_abstractcore_config.py +4 -2
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_client_media_artifacts.py +23 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_local_runtime_timeout_kwarg_policy.py +10 -1
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_model_residency_control_plane.py +222 -6
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_multimodal_abstractcore_integration.py +88 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_packaging_extras.py +7 -7
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_prompt_cache_modules.py +39 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_llm_call_multimodal_output.py +55 -0
- abstractruntime-0.4.22/tests/test_visualflow_media_nodes.py +343 -0
- abstractruntime-0.4.20/release-notes.md +0 -13
- abstractruntime-0.4.20/tests/test_visualflow_media_nodes.py +0 -177
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/.gitignore +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/CONTRIBUTING.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/LICENSE +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/ROADMAP.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/SECURITY.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/evidence.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/limits.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/manual_testing.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/proposal.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/provenance.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/snapshots.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/tools-comms.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/emails.config.example.yaml +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/05_persistence.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/examples/README.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/pytest.ini +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/runtime.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/README.md +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/conftest.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_abstractcore_discovery_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_command_store.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_offloading.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.4.20 → abstractruntime-0.4.22}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
|
@@ -7,6 +7,33 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.22] - 2026-05-23
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- 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.
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
- 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.
|
|
17
|
+
- 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.
|
|
18
|
+
|
|
19
|
+
## [0.4.21] - 2026-05-22
|
|
20
|
+
|
|
21
|
+
### Added
|
|
22
|
+
- Public model-residency capability discovery on the AbstractCore host facade so hosts can branch on task support before showing warmup controls.
|
|
23
|
+
- Durable run-facade support for image edits through `edit_image(...)`.
|
|
24
|
+
- First-class VisualFlow lowering for `edit_image` / `image_to_image` and `generate_music` media nodes.
|
|
25
|
+
- A focused troubleshooting guide and repository code of conduct in the core documentation set.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.25`, matching the released Core validation for task-aware text/image/TTS/STT residency.
|
|
29
|
+
- Remote Runtime media execution now routes image edits through AbstractCore Server `/v1/images/edits` or provider-scoped `/{provider}/v1/images/edits`.
|
|
30
|
+
- Runtime no longer auto-derives session prompt-cache keys for non-text generated-media or transcription output selectors; explicit `prompt_cache_binding` remains supported.
|
|
31
|
+
- Local and remote model-residency responses now fail closed unless Core-owned residency truth verifies the loaded state.
|
|
32
|
+
- Runtime docs, backlog, ADR links, and AI-readable `llms.txt` / `llms-full.txt` now reflect the Core-owned residency boundary and current media node support.
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
- Artifact-backed media resolution now preserves image/audio role metadata without failing when content type metadata is absent.
|
|
36
|
+
|
|
10
37
|
## [0.4.20] - 2026-05-21
|
|
11
38
|
|
|
12
39
|
### Added
|
|
@@ -505,7 +532,9 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
|
|
|
505
532
|
|
|
506
533
|
Initial development version with basic proof-of-concept features.
|
|
507
534
|
|
|
508
|
-
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.
|
|
535
|
+
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.22...HEAD
|
|
536
|
+
[0.4.22]: https://github.com/lpalbou/abstractruntime/compare/v0.4.21...v0.4.22
|
|
537
|
+
[0.4.21]: https://github.com/lpalbou/abstractruntime/compare/v0.4.20...v0.4.21
|
|
509
538
|
[0.4.20]: https://github.com/lpalbou/abstractruntime/compare/v0.4.19...v0.4.20
|
|
510
539
|
[0.4.19]: https://github.com/lpalbou/abstractruntime/compare/v0.4.18...v0.4.19
|
|
511
540
|
[0.4.18]: https://github.com/lpalbou/abstractruntime/compare/v0.4.17...v0.4.18
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Standard
|
|
4
|
+
|
|
5
|
+
This project is maintained as a professional software collaboration. Contributors, maintainers, and users are expected
|
|
6
|
+
to keep discussions respectful, technically focused, and welcoming to people with different backgrounds and experience
|
|
7
|
+
levels.
|
|
8
|
+
|
|
9
|
+
Examples of expected behavior:
|
|
10
|
+
|
|
11
|
+
- Use clear, constructive language when giving feedback.
|
|
12
|
+
- Assume good faith while still asking for evidence and reproducible details.
|
|
13
|
+
- Keep disagreements focused on the code, docs, design, or release process.
|
|
14
|
+
- Respect privacy and do not publish private contact details, credentials, logs, or user data.
|
|
15
|
+
|
|
16
|
+
Examples of unacceptable behavior:
|
|
17
|
+
|
|
18
|
+
- Harassment, threats, insults, or discriminatory language.
|
|
19
|
+
- Sustained off-topic disruption of issues, pull requests, or discussions.
|
|
20
|
+
- Publishing private information without explicit permission.
|
|
21
|
+
- Pressuring maintainers or contributors to bypass safety, security, or release checks.
|
|
22
|
+
|
|
23
|
+
## Reporting
|
|
24
|
+
|
|
25
|
+
Report conduct concerns privately to the maintainer contact listed in the package metadata or through the repository
|
|
26
|
+
owner's GitHub profile. Include the relevant links, screenshots, or context when possible.
|
|
27
|
+
|
|
28
|
+
Maintainers may remove comments, close threads, block accounts, or restrict repository access when needed to protect the
|
|
29
|
+
project and its contributors.
|
|
30
|
+
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.22
|
|
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.27; 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.27; 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.27; 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.27; 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.27; 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.27; 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.27; 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.22 • **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.27 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.27`, 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.22)
|
|
173
173
|
|
|
174
174
|
Kernel (dependency-light):
|
|
175
175
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -233,6 +233,7 @@ sr = create_scheduled_runtime(
|
|
|
233
233
|
| [API Reference](docs/api.md) | Public API surface (imports + pointers) |
|
|
234
234
|
| [Docs Index](docs/README.md) | Full docs map (guides + reference) |
|
|
235
235
|
| [FAQ](docs/faq.md) | Common questions and gotchas |
|
|
236
|
+
| [Troubleshooting](docs/troubleshooting.md) | Symptom-oriented setup, runtime, and integration fixes |
|
|
236
237
|
| [Architecture](docs/architecture.md) | Component map + diagrams |
|
|
237
238
|
| [Overview](docs/proposal.md) | Design goals, core concepts, and scope |
|
|
238
239
|
| [Integrations](docs/integrations/) | Integration guides (AbstractCore) |
|
|
@@ -244,6 +245,7 @@ sr = create_scheduled_runtime(
|
|
|
244
245
|
| [MCP Worker](docs/mcp-worker.md) | `abstractruntime-mcp-worker` CLI |
|
|
245
246
|
| [Changelog](CHANGELOG.md) | Release notes |
|
|
246
247
|
| [Contributing](CONTRIBUTING.md) | How to build/test and submit changes |
|
|
248
|
+
| [Code of Conduct](CODE_OF_CONDUCT.md) | Contributor conduct expectations |
|
|
247
249
|
| [Security](SECURITY.md) | Responsible vulnerability reporting |
|
|
248
250
|
| [Acknowledgments](ACKNOWLEDGMENTS.md) | Credits |
|
|
249
251
|
| [ROADMAP](ROADMAP.md) | Prioritized next steps |
|
|
@@ -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.22 • **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.27 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.27`, 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.22)
|
|
96
96
|
|
|
97
97
|
Kernel (dependency-light):
|
|
98
98
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -156,6 +156,7 @@ sr = create_scheduled_runtime(
|
|
|
156
156
|
| [API Reference](docs/api.md) | Public API surface (imports + pointers) |
|
|
157
157
|
| [Docs Index](docs/README.md) | Full docs map (guides + reference) |
|
|
158
158
|
| [FAQ](docs/faq.md) | Common questions and gotchas |
|
|
159
|
+
| [Troubleshooting](docs/troubleshooting.md) | Symptom-oriented setup, runtime, and integration fixes |
|
|
159
160
|
| [Architecture](docs/architecture.md) | Component map + diagrams |
|
|
160
161
|
| [Overview](docs/proposal.md) | Design goals, core concepts, and scope |
|
|
161
162
|
| [Integrations](docs/integrations/) | Integration guides (AbstractCore) |
|
|
@@ -167,6 +168,7 @@ sr = create_scheduled_runtime(
|
|
|
167
168
|
| [MCP Worker](docs/mcp-worker.md) | `abstractruntime-mcp-worker` CLI |
|
|
168
169
|
| [Changelog](CHANGELOG.md) | Release notes |
|
|
169
170
|
| [Contributing](CONTRIBUTING.md) | How to build/test and submit changes |
|
|
171
|
+
| [Code of Conduct](CODE_OF_CONDUCT.md) | Contributor conduct expectations |
|
|
170
172
|
| [Security](SECURITY.md) | Responsible vulnerability reporting |
|
|
171
173
|
| [Acknowledgments](ACKNOWLEDGMENTS.md) | Credits |
|
|
172
174
|
| [ROADMAP](ROADMAP.md) | Prioritized next steps |
|
|
@@ -18,11 +18,13 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
|
|
|
18
18
|
- `getting-started.md` — first steps (recommended)
|
|
19
19
|
- `api.md` — public API surface (imports + pointers)
|
|
20
20
|
- `architecture.md` — how the runtime is structured (with diagrams)
|
|
21
|
+
- `troubleshooting.md` — symptom-oriented setup, runtime, and integration fixes
|
|
21
22
|
- `proposal.md` — design goals and scope boundaries
|
|
22
23
|
|
|
23
24
|
## Guides
|
|
24
25
|
|
|
25
26
|
- `faq.md` — common questions (recommended)
|
|
27
|
+
- `troubleshooting.md` — symptom-oriented setup, runtime, and integration fixes
|
|
26
28
|
- `manual_testing.md` — manual smoke tests and how to run the test suite
|
|
27
29
|
- `integrations/abstractcore.md` — wiring `LLM_CALL` / `TOOL_CALLS`, cached sessions, durable bloc prompt-cache control, media inputs, generated media outputs, and tool approval waits via AbstractCore
|
|
28
30
|
- `tools-comms.md` — enabling the optional comms toolset (email/WhatsApp/Telegram)
|
|
@@ -39,6 +41,7 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
|
|
|
39
41
|
## Maintainers
|
|
40
42
|
|
|
41
43
|
- `../CHANGELOG.md` — release notes
|
|
44
|
+
- `../CODE_OF_CONDUCT.md` — contributor conduct expectations
|
|
42
45
|
- `../CONTRIBUTING.md` — how to build/test and submit changes
|
|
43
46
|
- `../SECURITY.md` — responsible vulnerability reporting
|
|
44
47
|
- `../ACKNOWLEDGMENTS.md` — credits
|
|
@@ -50,6 +50,6 @@ Specifically:
|
|
|
50
50
|
- Follow-up backlog work in hosts should remove direct Core discovery bypasses where the facade now covers them.
|
|
51
51
|
|
|
52
52
|
### See Also
|
|
53
|
-
- Implementation: [`../backlog/
|
|
53
|
+
- Implementation: [`../backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md`](../backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md)
|
|
54
54
|
- Existing operator controls: [`0004_runtime_owns_run_scoped_media_execution_truth.md`](0004_runtime_owns_run_scoped_media_execution_truth.md)
|
|
55
55
|
- Integration guide: [`../integrations/abstractcore.md`](../integrations/abstractcore.md)
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
## ADR 0007: Runtime relays Core-owned model residency truth
|
|
2
|
+
|
|
3
|
+
### Status
|
|
4
|
+
Accepted (2026-05-21)
|
|
5
|
+
|
|
6
|
+
### Context
|
|
7
|
+
Hosts and operator UIs ask Runtime whether a model is loaded. That question can
|
|
8
|
+
mean different things:
|
|
9
|
+
|
|
10
|
+
- a configured default provider/model;
|
|
11
|
+
- a cached Runtime or gateway client;
|
|
12
|
+
- a provider-owned model actually resident in memory.
|
|
13
|
+
|
|
14
|
+
Only AbstractCore owns provider implementations and provider-specific loaded
|
|
15
|
+
instance knowledge. Runtime can create and cache AbstractCore clients, but that
|
|
16
|
+
does not prove provider residency. HTTP-backed local providers, provider
|
|
17
|
+
servers, and native in-process providers all have different truth sources.
|
|
18
|
+
|
|
19
|
+
### Decision
|
|
20
|
+
AbstractRuntime relays model-residency truth from AbstractCore. It does not
|
|
21
|
+
produce provider-residency truth itself.
|
|
22
|
+
|
|
23
|
+
Specifically:
|
|
24
|
+
|
|
25
|
+
- Runtime may expose its own cache/configuration state with fields such as
|
|
26
|
+
`runtime_cached` and `cache_state`.
|
|
27
|
+
- Runtime may call public AbstractCore integration contracts such as
|
|
28
|
+
`get_model_residency(...)` on a Core provider object or remote
|
|
29
|
+
`/acore/models/*` responses.
|
|
30
|
+
- Runtime must not call provider-native HTTP APIs, provider-specific unload/list
|
|
31
|
+
methods, or private provider internals to establish residency.
|
|
32
|
+
- Runtime must not infer loaded state from provider names, provider metadata,
|
|
33
|
+
`local_provider`, `base_url`, ports, model catalogs, default configuration, or
|
|
34
|
+
the existence of a cached client.
|
|
35
|
+
- If AbstractCore cannot verify provider residency, Runtime must fail closed:
|
|
36
|
+
`loaded=false`, `resident=false`, `provider_residency_verified=false`, and an
|
|
37
|
+
explicit unknown/provider-unverified state.
|
|
38
|
+
|
|
39
|
+
### Consequences
|
|
40
|
+
- Gateway, Flow, and other hosts can distinguish a cached Runtime client from a
|
|
41
|
+
truly provider-loaded model.
|
|
42
|
+
- Positive `loaded=true` in Runtime local mode requires a Core-owned positive
|
|
43
|
+
provider-residency response.
|
|
44
|
+
- Provider-specific loaded-instance work belongs in AbstractCore providers or
|
|
45
|
+
capability plugins, not in Runtime.
|
|
46
|
+
- Some local rows remain visible as cache/configuration state while correctly
|
|
47
|
+
reporting that provider residency is unknown or not loaded.
|
|
48
|
+
|
|
49
|
+
### Enforcement
|
|
50
|
+
- Reviews should reject Runtime provider-name lists, `base_url` heuristics, and
|
|
51
|
+
direct provider-native residency probes.
|
|
52
|
+
- Runtime tests should cover verified loaded, verified not-loaded, and unknown
|
|
53
|
+
provider-residency paths.
|
|
54
|
+
- Backlog items that need new residency truth must start with an AbstractCore
|
|
55
|
+
contract or a Core backlog item.
|
|
56
|
+
|
|
57
|
+
### See Also
|
|
58
|
+
- Runtime backlog: [`../backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md`](../backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md)
|
|
59
|
+
- Runtime backlog: [`../backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md`](../backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md)
|
|
60
|
+
- Core companion ADR: [`../../../abstractcore/docs/adr/0008-provider-owned-model-residency-truth.md`](../../../abstractcore/docs/adr/0008-provider-owned-model-residency-truth.md)
|
|
@@ -19,6 +19,7 @@ When you ask "why is it designed this way?", the answer is in an ADR. ADRs are:
|
|
|
19
19
|
| 0004 | [Runtime Owns Run-Scoped Media Execution Truth](0004_runtime_owns_run_scoped_media_execution_truth.md) | Accepted | 2026-05-20 | Hosts must route run-scoped media execution through Runtime |
|
|
20
20
|
| 0005 | [Runtime Owns AbstractCore Host Discovery Queries](0005_runtime_owns_abstractcore_host_discovery_queries.md) | Accepted | 2026-05-20 | Hosts should ask Runtime for Core discovery/catalog snapshots |
|
|
21
21
|
| 0006 | [Runtime Owns Durable AbstractCore Bloc Prompt-Cache Control](0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md) | Accepted | 2026-05-20 | Hosts should use Runtime for durable bloc/KV controls and binding-aware execution |
|
|
22
|
+
| 0007 | [Runtime Relays Core-Owned Model Residency Truth](0007_runtime_relays_core_owned_model_residency_truth.md) | Accepted | 2026-05-21 | Runtime reports loaded state only from AbstractCore residency truth |
|
|
22
23
|
|
|
23
24
|
## Relationship to Backlog
|
|
24
25
|
|
|
@@ -32,6 +33,7 @@ ADRs explain *why*. Backlog items explain *what* and *how*.
|
|
|
32
33
|
| 0004 | `backlog/completed/023_truthful_local_media_residency_boundaries.md`, `backlog/completed/024_runtime_owned_run_scoped_media_execution.md` |
|
|
33
34
|
| 0005 | `backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md` |
|
|
34
35
|
| 0006 | `backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md` |
|
|
36
|
+
| 0007 | `backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md`, `backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md` |
|
|
35
37
|
|
|
36
38
|
## Adding New ADRs
|
|
37
39
|
|
|
@@ -156,6 +156,10 @@ VisualFlow compiler helpers are available from `abstractruntime.visualflow_compi
|
|
|
156
156
|
- `visual_to_flow(...)` lowers VisualFlow into the internal Flow IR.
|
|
157
157
|
- `compile_visualflow(...)` and `compile_visualflow_tree(...)` compile VisualFlow JSON into executable `WorkflowSpec` objects.
|
|
158
158
|
|
|
159
|
+
VisualFlow authoring note (media nodes):
|
|
160
|
+
- Runtime recognizes first-class VisualFlow media nodes such as `generate_image`, `edit_image`, `image_to_image`, `generate_voice`, `generate_music`, `transcribe_audio`, and `listen_voice`.
|
|
161
|
+
- Generated-media and transcription nodes lower to a durable `EffectType.LLM_CALL` with an `output` selector (for example `{"modality":"music","task":"music_generation"}`), while `listen_voice` lowers to `WAIT_EVENT`. Hosts should persist the authoring node type rather than pre-lowering to `llm_call`.
|
|
162
|
+
|
|
159
163
|
Public bundle APIs are exported from `src/abstractruntime/workflow_bundle/__init__.py` and re-exported in `src/abstractruntime/__init__.py`:
|
|
160
164
|
- open: `open_workflow_bundle(...)`
|
|
161
165
|
- registry: `WorkflowBundleRegistry`
|
|
@@ -176,7 +180,7 @@ This produces a portable record of a run’s state + ledger + artifacts suitable
|
|
|
176
180
|
|
|
177
181
|
### AbstractCore (LLM + tools)
|
|
178
182
|
|
|
179
|
-
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.
|
|
183
|
+
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.27 or newer).
|
|
180
184
|
|
|
181
185
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
182
186
|
|
|
@@ -190,10 +194,10 @@ Entry points:
|
|
|
190
194
|
- effect handler wiring: `build_effect_handlers(...)` (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`)
|
|
191
195
|
- tool executors: `MappingToolExecutor`, `AbstractCoreToolExecutor`, `PassthroughToolExecutor`, `ApprovalToolExecutor`, `ToolApprovalPolicy` (`src/abstractruntime/integrations/abstractcore/tool_executor.py`)
|
|
192
196
|
- discovery-facade delegation is implemented by the configured AbstractCore LLM clients in `src/abstractruntime/integrations/abstractcore/llm_client.py` (`list_providers`, `list_provider_models`, `get_voice_catalog`, `list_tts_models`, `list_stt_models`, `list_music_providers`, `list_music_models`, `list_vision_provider_models`, `list_cached_vision_models`)
|
|
193
|
-
- host-facade client delegation is implemented by the configured AbstractCore LLM clients in `src/abstractruntime/integrations/abstractcore/llm_client.py` (`get_prompt_cache_capabilities`, `get_prompt_cache_stats`, `prompt_cache_set`, `prompt_cache_update`, `prompt_cache_fork`, `prompt_cache_clear`, `prompt_cache_prepare_modules`, `upsert_text_bloc`, `get_bloc_record`, `list_blocs`, `get_bloc_kv_manifest`, `ensure_bloc_kv_artifact`, `load_bloc_kv_artifact`, `list_bloc_kv_artifacts`, `delete_bloc_kv_artifact`, `prune_bloc_kv_artifacts`, `delete_bloc`, `list_model_residency`, `load_model_residency`, `unload_model_residency`)
|
|
197
|
+
- host-facade client delegation is implemented by the configured AbstractCore LLM clients in `src/abstractruntime/integrations/abstractcore/llm_client.py` (`get_prompt_cache_capabilities`, `get_prompt_cache_stats`, `prompt_cache_set`, `prompt_cache_update`, `prompt_cache_fork`, `prompt_cache_clear`, `prompt_cache_prepare_modules`, `upsert_text_bloc`, `get_bloc_record`, `list_blocs`, `get_bloc_kv_manifest`, `ensure_bloc_kv_artifact`, `load_bloc_kv_artifact`, `list_bloc_kv_artifacts`, `delete_bloc_kv_artifact`, `prune_bloc_kv_artifacts`, `delete_bloc`, `get_model_residency_capabilities`, `list_model_residency`, `load_model_residency`, `unload_model_residency`)
|
|
194
198
|
- host-local prompt-cache export/import admin also lives on the host facade and client delegation layer (`list_prompt_cache_exports`, `prompt_cache_export`, `prompt_cache_import`) and is intentionally local-only
|
|
195
199
|
- host-facade email helpers delegate to Runtime's host-local comms facade/export layer (`list_email_accounts`, `list_emails`, `read_email`, `send_email`)
|
|
196
|
-
- run-facade helpers create and resume durable child runs for existing runs (`execute_llm_call`, `execute_tool_calls`, `resume_tool_calls`, `generate_image`, `generate_voice`, `generate_music`, `transcribe_audio`, `send_email`, `send_telegram_message`)
|
|
200
|
+
- run-facade helpers create and resume durable child runs for existing runs (`execute_llm_call`, `execute_tool_calls`, `resume_tool_calls`, `generate_image`, `edit_image`, `generate_voice`, `generate_music`, `transcribe_audio`, `send_email`, `send_telegram_message`)
|
|
197
201
|
|
|
198
202
|
`LLM_CALL` payloads are JSON-safe effect payloads. Common fields:
|
|
199
203
|
- `prompt`, `messages`, `system_prompt`, and convenience `text`
|
|
@@ -204,17 +208,18 @@ Entry points:
|
|
|
204
208
|
Multimodal support:
|
|
205
209
|
- install `abstractruntime[multimodal]` for common AbstractCore media, vision, voice, audio, and music dependencies
|
|
206
210
|
- local clients call AbstractCore's unified `generate(..., media=..., output=...)`
|
|
207
|
-
- remote and hybrid clients support AbstractCore Server chat media content arrays plus image generation, 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
|
|
211
|
+
- remote and hybrid clients support AbstractCore Server chat media content arrays plus image generation, image edits, 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
|
|
208
212
|
- remote transcription requires one audio media item that resolves to a local file path or artifact-backed temporary file
|
|
209
213
|
- generated image/voice/music/audio bytes require a runtime `ArtifactStore`; the result contains `artifact_id` / `artifact_ref` instead of inline bytes
|
|
210
214
|
- media-only normalized results expose `runtime_provider` / `runtime_model` separately from `media_provider` / `media_model`
|
|
211
|
-
- optional local media residency failures complete with `status_hint="warning"` and `degraded=true
|
|
215
|
+
- optional local media residency failures complete with `status_hint="warning"` and `degraded=true`; unsupported local media warmup for `image_generation`, `tts`, `stt`, and `music_generation` reports `requires_long_lived_server=true`, and image generation also reports `execution_mode="local_one_shot_subprocess"`
|
|
212
216
|
- Gateway/hosts remain responsible for explicit Core server URLs, Core server auth headers, provider/model defaults, selected Core/capability install profiles, and translation of Gateway-owned env/config into explicit Runtime inputs; Runtime persists only JSON-safe routing metadata and artifact refs
|
|
213
217
|
|
|
214
218
|
Prompt cache / cached sessions:
|
|
215
219
|
- LLM clients expose cache control methods listed above for host-side preparation and inspection
|
|
216
220
|
- `LLM_CALL.params.prompt_cache_key` selects a cache key for a call; runtime can also derive a session-scoped key from `run.vars["_runtime"]["prompt_cache"]` or the Runtime-owned `ABSTRACTRUNTIME_PROMPT_CACHE` process default
|
|
217
221
|
- `LLM_CALL.params.prompt_cache_binding` is the durable exact-reuse input for bloc-backed prompt caching; if a binding includes `key`, Runtime adopts it as the effective prompt-cache key and refuses mismatches before provider execution
|
|
222
|
+
- Runtime only auto-derives session prompt-cache keys for text/chat calls; non-text output selectors such as image, voice, music, and transcription keep explicit `prompt_cache_binding` support but do not receive an inferred cache key
|
|
218
223
|
- `get_abstractcore_host_facade(...)` also exposes durable bloc helpers (`upsert_text_bloc`, `get_bloc_record`, `list_blocs`, `get_bloc_kv_manifest`, `ensure_bloc_kv_artifact`, `load_bloc_kv_artifact`, `list_bloc_kv_artifacts`, `delete_bloc_kv_artifact`, `prune_bloc_kv_artifacts`, `delete_bloc`)
|
|
219
224
|
- local Runtime owns the bloc root policy: `~/.abstractruntime/blocs` by default, `<base_dir>/blocs` for `create_local_file_runtime(...)`, and explicit `bloc_root_dir=...` overrides when needed
|
|
220
225
|
- provider cache/session handles are not durable runtime state and should not be stored in `RunState.vars`
|
|
@@ -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.22
|
|
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.
|
|
@@ -13,8 +13,8 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
13
13
|
## Counts
|
|
14
14
|
|
|
15
15
|
- Planned: 5
|
|
16
|
-
- Proposed:
|
|
17
|
-
- Completed:
|
|
16
|
+
- Proposed: 3
|
|
17
|
+
- Completed: 29
|
|
18
18
|
- Deprecated: 13
|
|
19
19
|
- Recurrent: 0
|
|
20
20
|
|
|
@@ -26,10 +26,15 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
26
26
|
2. `planned/014_remote_tool_worker_executor.md`
|
|
27
27
|
The public ToolExecutor path is still the larger follow-on after the current
|
|
28
28
|
Gateway boundary cleanup.
|
|
29
|
-
3. `proposed/
|
|
29
|
+
3. `proposed/0036_local_media_residency_bridge_to_core_residency.md`
|
|
30
|
+
Local Runtime media residency should relay live Core-owned truth for image/TTS/STT or stay unsupported when no
|
|
31
|
+
Core-owned local media residency facade is wired.
|
|
32
|
+
4. `proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md`
|
|
30
33
|
The comms/Telegram boundary cleanup is now complete; the remaining lower
|
|
31
34
|
pressure follow-up is a Runtime-owned tool-spec surface if Gateway or the
|
|
32
35
|
MCP worker still need one after adoption.
|
|
36
|
+
5. `proposed/0038_core_server_pool_residency_affinity.md`
|
|
37
|
+
Future-only topology item for multiple AbstractCore servers, server identity, and residency routing affinity.
|
|
33
38
|
|
|
34
39
|
## Completed
|
|
35
40
|
|
|
@@ -61,6 +66,9 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
61
66
|
| 0030 | `completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md` |
|
|
62
67
|
| 0032 | `completed/0032_runtime_durable_outbound_comms_truth.md` |
|
|
63
68
|
| 0033 | `completed/0033_runtime_host_local_prompt_cache_export_import_surface.md` |
|
|
69
|
+
| 0035 | `completed/0035_model_residency_provider_truth_for_local_http_clients.md` |
|
|
70
|
+
| 0037 | `completed/0037_visualflow_generate_music_node_compiler_parity.md` |
|
|
71
|
+
| 0039 | `completed/0039_runtime_music_structure_prompt_bool_contract.md` |
|
|
64
72
|
|
|
65
73
|
## Planned
|
|
66
74
|
|
|
@@ -77,6 +85,8 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
77
85
|
| ID | Item |
|
|
78
86
|
|----|------|
|
|
79
87
|
| 0031 | `proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md` |
|
|
88
|
+
| 0036 | `proposed/0036_local_media_residency_bridge_to_core_residency.md` |
|
|
89
|
+
| 0038 | `proposed/0038_core_server_pool_residency_affinity.md` |
|
|
80
90
|
|
|
81
91
|
## Deprecated
|
|
82
92
|
|