AbstractRuntime 0.4.14__tar.gz → 0.4.16__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.14 → abstractruntime-0.4.16}/CHANGELOG.md +39 -1
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/PKG-INFO +12 -12
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/README.md +4 -4
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/README.md +1 -1
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/adr/0002_execution_modes_local_remote_hybrid.md +1 -1
- abstractruntime-0.4.16/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +44 -0
- abstractruntime-0.4.16/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +55 -0
- abstractruntime-0.4.16/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +104 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/adr/README.md +6 -1
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/api.md +13 -3
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/architecture.md +4 -3
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/README.md +21 -2
- abstractruntime-0.4.16/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +181 -0
- abstractruntime-0.4.16/docs/backlog/completed/020_runtime_gateway_install_boundary.md +95 -0
- abstractruntime-0.4.16/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +95 -0
- abstractruntime-0.4.16/docs/backlog/completed/022_model_residency_control_plane.md +95 -0
- abstractruntime-0.4.16/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +83 -0
- abstractruntime-0.4.16/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +79 -0
- abstractruntime-0.4.16/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +153 -0
- abstractruntime-0.4.16/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +177 -0
- abstractruntime-0.4.16/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +145 -0
- abstractruntime-0.4.16/docs/backlog/planned/008_signatures_and_keys.md +75 -0
- abstractruntime-0.4.16/docs/backlog/planned/014_remote_tool_worker_executor.md +74 -0
- abstractruntime-0.4.16/docs/backlog/planned/017_limit_warnings_and_observability.md +73 -0
- abstractruntime-0.4.16/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +67 -0
- abstractruntime-0.4.16/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +141 -0
- abstractruntime-0.4.16/docs/backlog/proposed/2026-05-20_agent_runtime_convenience_constructor.md +37 -0
- abstractruntime-0.4.16/docs/backlog/proposed/2026-05-20_runtime_local_admin_prompt_cache_save_load.md +192 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/faq.md +68 -3
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/getting-started.md +2 -2
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/integrations/abstractcore.md +251 -8
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/llms-full.txt +19 -12
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/llms.txt +7 -5
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/pyproject.toml +8 -8
- abstractruntime-0.4.16/release-notes.md +11 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/models.py +1 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/__init__.py +25 -0
- abstractruntime-0.4.16/src/abstractruntime/integrations/abstractcore/discovery_facade.py +292 -0
- abstractruntime-0.4.16/src/abstractruntime/integrations/abstractcore/discovery_queries.py +996 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +207 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/factory.py +24 -14
- abstractruntime-0.4.16/src/abstractruntime/integrations/abstractcore/host_facade.py +665 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/llm_client.py +3279 -150
- abstractruntime-0.4.16/src/abstractruntime/integrations/abstractcore/media_subprocess.py +234 -0
- abstractruntime-0.4.16/src/abstractruntime/integrations/abstractcore/run_facade.py +266 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +86 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/compiler.py +9 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/executor.py +55 -0
- abstractruntime-0.4.16/tests/test_abstractcore_discovery_facade.py +814 -0
- abstractruntime-0.4.16/tests/test_abstractcore_host_facade.py +1003 -0
- abstractruntime-0.4.16/tests/test_abstractcore_run_facade.py +172 -0
- abstractruntime-0.4.16/tests/test_model_residency_control_plane.py +324 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_multimodal_abstractcore_integration.py +106 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_packaging_extras.py +7 -7
- abstractruntime-0.4.16/tests/test_prompt_cache_modules.py +1293 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_remote_llm_client.py +58 -0
- abstractruntime-0.4.14/docs/backlog/planned/008_signatures_and_keys.md +0 -21
- abstractruntime-0.4.14/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -69
- abstractruntime-0.4.14/docs/backlog/planned/015_agent_integration_improvements.md +0 -111
- abstractruntime-0.4.14/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -141
- abstractruntime-0.4.14/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -74
- abstractruntime-0.4.14/docs/backlog/proposed/2026-05-08_runtime_gateway_env_namespace_cleanup.md +0 -163
- abstractruntime-0.4.14/docs/backlog/proposed/2026-05-08_runtime_gateway_install_boundary.md +0 -128
- abstractruntime-0.4.14/docs/backlog/proposed/2026-05-09_runtime_retention_and_purge_contract.md +0 -82
- abstractruntime-0.4.14/release-notes.md +0 -2
- abstractruntime-0.4.14/tests/test_prompt_cache_modules.py +0 -462
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/.gitignore +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/CONTRIBUTING.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/LICENSE +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/ROADMAP.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/SECURITY.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/evidence.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/limits.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/manual_testing.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/proposal.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/provenance.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/snapshots.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/tools-comms.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/emails.config.example.yaml +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/05_persistence.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/examples/README.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/mkdocs.yml +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/pytest.ini +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/runtime.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/README.md +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/conftest.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_command_store.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_offloading.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_media_nodes.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.4.14 → abstractruntime-0.4.16}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
|
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.4.16] - 2026-05-21
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- Public durable AbstractCore bloc lifecycle operations on `get_abstractcore_host_facade(...)` across local, remote, and hybrid runtimes:
|
|
14
|
+
- `list_blocs(...)`
|
|
15
|
+
- `list_bloc_kv_artifacts(...)`
|
|
16
|
+
- `delete_bloc_kv_artifact(...)`
|
|
17
|
+
- `prune_bloc_kv_artifacts(...)`
|
|
18
|
+
- `delete_bloc(...)`
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.23`.
|
|
22
|
+
- Runtime's public docs and AI-readable `llms.txt` / `llms-full.txt` now describe the shipped durable bloc prompt-cache lifecycle boundary, including per-model KV artifacts and explicit cleanup controls.
|
|
23
|
+
|
|
24
|
+
## [0.4.15] - 2026-05-20
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
- Public AbstractCore Runtime facades for:
|
|
28
|
+
- discovery/catalog snapshot queries (`get_abstractcore_discovery_facade(...)`)
|
|
29
|
+
- prompt-cache and model-residency host control operations (`get_abstractcore_host_facade(...)`)
|
|
30
|
+
- durable run-scoped child-run execution for image, TTS, STT, and direct LLM calls (`get_abstractcore_run_facade(...)`)
|
|
31
|
+
- `EffectType.MODEL_RESIDENCY` with AbstractCore-backed load/list/unload handling and VisualFlow lowering support for runtime-owned model residency control.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
- Minimum optional AbstractCore dependency floor is now `abstractcore>=2.13.20`.
|
|
35
|
+
- Local cached-vision discovery now depends on AbstractCore's public `get_local_vision_cache_catalog()` helper instead of private server internals.
|
|
36
|
+
- Local media residency no-op/unsupported responses now complete truthfully with warning/degraded metadata, and media-only results distinguish runtime orchestration identity from the actual media backend identity.
|
|
37
|
+
- Documentation was refreshed for the current Runtime/Core boundary, including root docs, ADR/backlog references, and AI-readable `llms.txt` / `llms-full.txt`.
|
|
38
|
+
|
|
10
39
|
## [0.4.14] - 2026-05-19
|
|
11
40
|
|
|
12
41
|
### Fixed
|
|
@@ -419,7 +448,16 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
|
|
|
419
448
|
|
|
420
449
|
Initial development version with basic proof-of-concept features.
|
|
421
450
|
|
|
422
|
-
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.
|
|
451
|
+
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.16...HEAD
|
|
452
|
+
[0.4.16]: https://github.com/lpalbou/abstractruntime/compare/v0.4.15...v0.4.16
|
|
453
|
+
[0.4.15]: https://github.com/lpalbou/abstractruntime/compare/v0.4.14...v0.4.15
|
|
454
|
+
[0.4.14]: https://github.com/lpalbou/abstractruntime/compare/v0.4.13...v0.4.14
|
|
455
|
+
[0.4.13]: https://github.com/lpalbou/abstractruntime/compare/v0.4.12...v0.4.13
|
|
456
|
+
[0.4.12]: https://github.com/lpalbou/abstractruntime/compare/v0.4.11...v0.4.12
|
|
457
|
+
[0.4.11]: https://github.com/lpalbou/abstractruntime/compare/v0.4.10...v0.4.11
|
|
458
|
+
[0.4.10]: https://github.com/lpalbou/abstractruntime/compare/v0.4.9...v0.4.10
|
|
459
|
+
[0.4.9]: https://github.com/lpalbou/abstractruntime/compare/v0.4.8...v0.4.9
|
|
460
|
+
[0.4.8]: https://github.com/lpalbou/abstractruntime/compare/v0.4.7...v0.4.8
|
|
423
461
|
[0.4.7]: https://github.com/lpalbou/abstractruntime/compare/v0.4.6...v0.4.7
|
|
424
462
|
[0.4.6]: https://github.com/lpalbou/abstractruntime/compare/v0.4.5...v0.4.6
|
|
425
463
|
[0.4.5]: https://github.com/lpalbou/abstractruntime/compare/v0.4.4...v0.4.5
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.16
|
|
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.23; 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.23; 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.23; 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.23; 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.23; 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.23; 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,remote,vision,voice]>=2.13.
|
|
64
|
+
Requires-Dist: abstractcore[audio,remote,vision,voice]>=2.13.23; 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.16 • **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.23 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, and lifecycle operations, public output-selector contract, async/sync text-generation output-selector parity, and the public local vision-cache catalog helper used by Runtime discovery are available. Use `abstractruntime[multimodal]` when you need common media, vision, voice, and audio dependencies.
|
|
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.16)
|
|
173
173
|
|
|
174
174
|
Kernel (dependency-light):
|
|
175
175
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -193,7 +193,7 @@ Drivers + distribution:
|
|
|
193
193
|
- run history export: `export_run_history_bundle(...)` (`src/abstractruntime/history_bundle.py`)
|
|
194
194
|
|
|
195
195
|
Optional integrations:
|
|
196
|
-
- AbstractCore (LLM + tools, cached sessions
|
|
196
|
+
- AbstractCore (LLM + tools, `MODEL_RESIDENCY`, public discovery/host/run facades, cached sessions, durable bloc prompt-cache controls, bindings, and lifecycle operations, media inputs, generated media, tool approval waits): `docs/integrations/abstractcore.md`
|
|
197
197
|
- AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
|
|
198
198
|
depends on the light AbstractMemory contract; hosts choose storage backends
|
|
199
199
|
such as LanceDB, SQLite, or in-memory stores.
|
|
@@ -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.16 • **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.23 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, and lifecycle operations, public output-selector contract, async/sync text-generation output-selector parity, and the public local vision-cache catalog helper used by Runtime discovery are available. Use `abstractruntime[multimodal]` when you need common media, vision, voice, and audio dependencies.
|
|
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.16)
|
|
96
96
|
|
|
97
97
|
Kernel (dependency-light):
|
|
98
98
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -116,7 +116,7 @@ Drivers + distribution:
|
|
|
116
116
|
- run history export: `export_run_history_bundle(...)` (`src/abstractruntime/history_bundle.py`)
|
|
117
117
|
|
|
118
118
|
Optional integrations:
|
|
119
|
-
- AbstractCore (LLM + tools, cached sessions
|
|
119
|
+
- AbstractCore (LLM + tools, `MODEL_RESIDENCY`, public discovery/host/run facades, cached sessions, durable bloc prompt-cache controls, bindings, and lifecycle operations, media inputs, generated media, tool approval waits): `docs/integrations/abstractcore.md`
|
|
120
120
|
- AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
|
|
121
121
|
depends on the light AbstractMemory contract; hosts choose storage backends
|
|
122
122
|
such as LanceDB, SQLite, or in-memory stores.
|
|
@@ -24,7 +24,7 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
|
|
|
24
24
|
|
|
25
25
|
- `faq.md` — common questions (recommended)
|
|
26
26
|
- `manual_testing.md` — manual smoke tests and how to run the test suite
|
|
27
|
-
- `integrations/abstractcore.md` — wiring `LLM_CALL` / `TOOL_CALLS`, cached sessions
|
|
27
|
+
- `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
28
|
- `tools-comms.md` — enabling the optional comms toolset (email/WhatsApp/Telegram)
|
|
29
29
|
|
|
30
30
|
## Features (reference)
|
|
@@ -34,6 +34,6 @@ effect payloads, client construction arguments, or Runtime-owned environment var
|
|
|
34
34
|
### See Also
|
|
35
35
|
- Implementation: [`backlog/completed/005_abstractcore_integration.md`](../backlog/completed/005_abstractcore_integration.md)
|
|
36
36
|
- Integration guide: [`integrations/abstractcore.md`](../integrations/abstractcore.md)
|
|
37
|
-
- Gateway install boundary: [`backlog/
|
|
37
|
+
- Gateway install boundary: [`backlog/completed/020_runtime_gateway_install_boundary.md`](../backlog/completed/020_runtime_gateway_install_boundary.md)
|
|
38
38
|
- Code: `src/abstractruntime/integrations/abstractcore/factory.py`
|
|
39
39
|
- Framework ADR: `../../../docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md`
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
## ADR 0004: Runtime owns run-scoped media execution truth
|
|
2
|
+
|
|
3
|
+
### Status
|
|
4
|
+
Accepted (2026-05-20)
|
|
5
|
+
|
|
6
|
+
### Context
|
|
7
|
+
Hosts sometimes need to trigger image generation, TTS, or STT for an existing run after the main workflow was already created.
|
|
8
|
+
|
|
9
|
+
If a host executes that media work directly and only appends ledger-like records afterward, Runtime is no longer the
|
|
10
|
+
source of truth for:
|
|
11
|
+
|
|
12
|
+
- what was requested;
|
|
13
|
+
- what provider/model path actually executed;
|
|
14
|
+
- which artifacts were produced;
|
|
15
|
+
- how replay should represent the step.
|
|
16
|
+
|
|
17
|
+
We also observed that local media residency can be misunderstood as successful warmup even when the local execution mode
|
|
18
|
+
is a one-shot subprocess boundary that cannot reuse the previous warm state.
|
|
19
|
+
|
|
20
|
+
### Decision
|
|
21
|
+
AbstractRuntime owns run-scoped media execution truth.
|
|
22
|
+
|
|
23
|
+
Specifically:
|
|
24
|
+
|
|
25
|
+
- Hosts must route run-scoped image/TTS/STT work through Runtime, not execute it out-of-band.
|
|
26
|
+
- The integration provides a public durable run facade that creates Runtime-owned child runs for these operations.
|
|
27
|
+
- Operator/control-plane prompt-cache and model-residency controls remain separate host-oriented helpers and do not
|
|
28
|
+
create durable run history by themselves.
|
|
29
|
+
- Local unsupported media residency must be reported explicitly with machine-readable fields such as
|
|
30
|
+
`execution_mode`, `requires_long_lived_server`, and `config_hint`.
|
|
31
|
+
- Media-only normalized results must separate orchestration identity from actual media backend identity via
|
|
32
|
+
`runtime_provider` / `runtime_model` and `media_provider` / `media_model`.
|
|
33
|
+
|
|
34
|
+
### Consequences
|
|
35
|
+
- Gateway/other hosts have a clean migration target for run-scoped media routes without synthesizing history after the
|
|
36
|
+
fact.
|
|
37
|
+
- Ledger and artifact truth stay Runtime-authored and replay-friendly.
|
|
38
|
+
- Optional local media warmup can remain non-fatal while still rendering honestly as a warning/no-op.
|
|
39
|
+
- Consumers can distinguish the runtime orchestration model from the media backend that produced the output.
|
|
40
|
+
|
|
41
|
+
### See Also
|
|
42
|
+
- Implementation: [`../backlog/completed/023_truthful_local_media_residency_boundaries.md`](../backlog/completed/023_truthful_local_media_residency_boundaries.md)
|
|
43
|
+
- Implementation: [`../backlog/completed/024_runtime_owned_run_scoped_media_execution.md`](../backlog/completed/024_runtime_owned_run_scoped_media_execution.md)
|
|
44
|
+
- Integration guide: [`../integrations/abstractcore.md`](../integrations/abstractcore.md)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
## ADR 0005: Runtime owns AbstractCore host discovery queries
|
|
2
|
+
|
|
3
|
+
### Status
|
|
4
|
+
Accepted (2026-05-20)
|
|
5
|
+
|
|
6
|
+
### Context
|
|
7
|
+
Gateway and other hosts still need to answer operator and thin-client discovery questions such as:
|
|
8
|
+
|
|
9
|
+
- which providers are available;
|
|
10
|
+
- which models a provider exposes;
|
|
11
|
+
- what a model's capabilities are;
|
|
12
|
+
- which voice, TTS, STT, and vision catalogs are currently visible;
|
|
13
|
+
- which local vision models are cached.
|
|
14
|
+
|
|
15
|
+
Before this decision, those reads were often handled outside Runtime by:
|
|
16
|
+
|
|
17
|
+
- raw HTTP proxying from Gateway to AbstractCore server routes;
|
|
18
|
+
- direct imports of public `abstractcore.*` registries and helpers from Gateway;
|
|
19
|
+
- in at least one case, direct import of a Core-server route implementation.
|
|
20
|
+
|
|
21
|
+
That creates an inconsistent boundary: execution and some controls go through Runtime, but discovery reads bypass it entirely.
|
|
22
|
+
|
|
23
|
+
These discovery reads are not durable run truth in the same sense as `LLM_CALL`, `TOOL_CALLS`, or run-scoped media child runs. They are current-environment snapshots that may change between the original query and a later replay.
|
|
24
|
+
|
|
25
|
+
### Decision
|
|
26
|
+
AbstractRuntime owns the host-facing AbstractCore discovery/query boundary.
|
|
27
|
+
|
|
28
|
+
Specifically:
|
|
29
|
+
|
|
30
|
+
- Hosts should ask Runtime for AbstractCore discovery and catalog queries rather than importing Core registries or proxying Core server routes directly.
|
|
31
|
+
- Runtime provides a public discovery facade for host-oriented snapshot queries.
|
|
32
|
+
- These discovery methods are query/snapshot oriented, not durable run effects.
|
|
33
|
+
- Replay or audit consumers should treat discovery results as recorded snapshots when they are persisted by hosts, not as work that should be re-executed automatically.
|
|
34
|
+
- Gateway-local liveness, auth, install diagnostics, and non-Core helper projections may remain host-local.
|
|
35
|
+
|
|
36
|
+
### Consequences
|
|
37
|
+
- Runtime becomes the single Python integration boundary for AbstractCore execution, control, and discovery surfaces.
|
|
38
|
+
- Gateway can shrink into an HTTP projection layer rather than a second Core integration layer.
|
|
39
|
+
- Discovery results remain semantically distinct from durable run execution truth.
|
|
40
|
+
- Some local discovery implementations may still require Runtime integration code to adapt Core capability helpers or server-backed routes until Core exposes cleaner public helpers.
|
|
41
|
+
|
|
42
|
+
### Enforcement
|
|
43
|
+
- New Gateway or host adoption work should prefer Runtime facades over direct `abstractcore.*` imports for discovery/catalog routes.
|
|
44
|
+
- Runtime docs should distinguish durable run work, operator controls, and snapshot discovery queries.
|
|
45
|
+
- Direct Gateway reach-through to `runtime._abstractcore_llm_client` remains prohibited when a public facade exists.
|
|
46
|
+
|
|
47
|
+
### Validation
|
|
48
|
+
- Runtime tests should cover local and remote discovery facade behavior.
|
|
49
|
+
- Documentation should show the public discovery facade entrypoint and its scope.
|
|
50
|
+
- Follow-up backlog work in hosts should remove direct Core discovery bypasses where the facade now covers them.
|
|
51
|
+
|
|
52
|
+
### See Also
|
|
53
|
+
- Implementation: [`../backlog/planned/026_runtime_host_discovery_facade_for_core_catalogs.md`](../backlog/planned/026_runtime_host_discovery_facade_for_core_catalogs.md)
|
|
54
|
+
- Existing operator controls: [`0004_runtime_owns_run_scoped_media_execution_truth.md`](0004_runtime_owns_run_scoped_media_execution_truth.md)
|
|
55
|
+
- Integration guide: [`../integrations/abstractcore.md`](../integrations/abstractcore.md)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
## ADR 0006: Runtime owns durable AbstractCore bloc prompt-cache control
|
|
2
|
+
|
|
3
|
+
### Status
|
|
4
|
+
Accepted (2026-05-20)
|
|
5
|
+
|
|
6
|
+
### Context
|
|
7
|
+
AbstractCore `2.13.22` added a public durable prompt-cache contract for local
|
|
8
|
+
backends:
|
|
9
|
+
|
|
10
|
+
- text/file blocs as durable source-of-truth content,
|
|
11
|
+
- provider/model-specific KV artifacts,
|
|
12
|
+
- request-time `prompt_cache_binding` proof for exact reuse.
|
|
13
|
+
|
|
14
|
+
Before this decision, Runtime only owned:
|
|
15
|
+
|
|
16
|
+
- best-effort session prompt-cache controls,
|
|
17
|
+
- model-residency controls,
|
|
18
|
+
- discovery/query snapshots,
|
|
19
|
+
- durable run-scoped media execution.
|
|
20
|
+
|
|
21
|
+
That left a real gap for app-facing durable prompt caching:
|
|
22
|
+
|
|
23
|
+
- hosts had no public Runtime path for bloc/KV control operations;
|
|
24
|
+
- remote Runtime execution dropped `prompt_cache_binding`;
|
|
25
|
+
- `LLM_CALL` key injection could derive a competing session key even when a
|
|
26
|
+
durable binding was present;
|
|
27
|
+
- local Runtime had no explicit bloc-store root policy and would otherwise
|
|
28
|
+
inherit Core defaults implicitly.
|
|
29
|
+
|
|
30
|
+
### Decision
|
|
31
|
+
AbstractRuntime owns the host-facing durable AbstractCore bloc prompt-cache
|
|
32
|
+
boundary.
|
|
33
|
+
|
|
34
|
+
Specifically:
|
|
35
|
+
|
|
36
|
+
- Hosts should use the existing `AbstractCoreHostFacade` for durable bloc/KV
|
|
37
|
+
prompt-cache controls rather than adding a fourth public facade.
|
|
38
|
+
- The public host surface includes:
|
|
39
|
+
- `upsert_text_bloc(...)`
|
|
40
|
+
- `get_bloc_record(...)`
|
|
41
|
+
- `list_blocs(...)`
|
|
42
|
+
- `get_bloc_kv_manifest(...)`
|
|
43
|
+
- `ensure_bloc_kv_artifact(...)`
|
|
44
|
+
- `load_bloc_kv_artifact(...)`
|
|
45
|
+
- `list_bloc_kv_artifacts(...)`
|
|
46
|
+
- `delete_bloc_kv_artifact(...)`
|
|
47
|
+
- `prune_bloc_kv_artifacts(...)`
|
|
48
|
+
- `delete_bloc(...)`
|
|
49
|
+
- Runtime mirrors Core's public bloc request/response model instead of
|
|
50
|
+
inventing a Gateway-local save/load vocabulary.
|
|
51
|
+
- `LLM_CALL.payload.params.prompt_cache_binding` is the public Runtime binding
|
|
52
|
+
input. Runtime may also accept the local Python alias
|
|
53
|
+
`expected_prompt_cache_binding`, but it must normalize to
|
|
54
|
+
`prompt_cache_binding`.
|
|
55
|
+
- When a binding is present:
|
|
56
|
+
- `binding.key` becomes the effective `prompt_cache_key` when no explicit key
|
|
57
|
+
was supplied;
|
|
58
|
+
- mismatched `prompt_cache_key` and `binding.key` fail before provider or
|
|
59
|
+
server execution;
|
|
60
|
+
- Runtime must not auto-derive a competing session key;
|
|
61
|
+
- local session prompt-cache preparation must not mutate the bound key before
|
|
62
|
+
generation.
|
|
63
|
+
- Local Runtime owns an explicit bloc-root policy:
|
|
64
|
+
- default local root: `~/.abstractruntime/blocs`
|
|
65
|
+
- default file-runtime root: `<base_dir>/blocs`
|
|
66
|
+
- explicit `bloc_root_dir=` overrides are allowed for hosts such as Gateway
|
|
67
|
+
|
|
68
|
+
### Consequences
|
|
69
|
+
- Runtime becomes the public Python boundary for three distinct prompt-cache
|
|
70
|
+
tracks:
|
|
71
|
+
- session prompt-cache reuse,
|
|
72
|
+
- durable bloc/KV/binding reuse,
|
|
73
|
+
- local-admin snapshot save/load/list work if promoted later
|
|
74
|
+
- Hosts can expose durable bloc caching without reaching into Core or provider
|
|
75
|
+
internals.
|
|
76
|
+
- Hosts can also reclaim durable bloc/KV storage through the same Runtime
|
|
77
|
+
boundary instead of manual filesystem deletion or private Core hooks.
|
|
78
|
+
- Runtime does not silently inherit Core's default `~/.abstractcore/blocs`
|
|
79
|
+
layout.
|
|
80
|
+
- Provider-private prompt-cache snapshot save/load remains a separate local-admin
|
|
81
|
+
concern and is not promoted by this decision.
|
|
82
|
+
|
|
83
|
+
### Enforcement
|
|
84
|
+
- New host adoption work should use `get_abstractcore_host_facade(runtime)` for
|
|
85
|
+
durable bloc/KV operations.
|
|
86
|
+
- Runtime docs and AI-readable docs must describe the durable bloc track
|
|
87
|
+
separately from session prompt caching.
|
|
88
|
+
- Runtime code review should reject any new auto-derived prompt-cache behavior
|
|
89
|
+
that competes with `prompt_cache_binding`.
|
|
90
|
+
|
|
91
|
+
### Validation
|
|
92
|
+
- Host-facade tests cover delegation and remote route shaping for bloc/KV
|
|
93
|
+
operations.
|
|
94
|
+
- `LLM_CALL` tests cover binding-only adoption, alias normalization, and
|
|
95
|
+
mismatch fail-fast behavior.
|
|
96
|
+
- Regression coverage includes local/root-policy tests and the broader
|
|
97
|
+
AbstractCore Runtime facade suite.
|
|
98
|
+
|
|
99
|
+
### See Also
|
|
100
|
+
- Implementation: [`../backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md`](../backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md)
|
|
101
|
+
- Core binding contract: `../abstractcore/docs/adr/0007-durable-memory-bloc-cache-binding.md`
|
|
102
|
+
- Related Runtime ADRs:
|
|
103
|
+
- [`0004_runtime_owns_run_scoped_media_execution_truth.md`](0004_runtime_owns_run_scoped_media_execution_truth.md)
|
|
104
|
+
- [`0005_runtime_owns_abstractcore_host_discovery_queries.md`](0005_runtime_owns_abstractcore_host_discovery_queries.md)
|
|
@@ -16,6 +16,9 @@ When you ask "why is it designed this way?", the answer is in an ADR. ADRs are:
|
|
|
16
16
|
| 0001 | [Layered Coupling with AbstractCore](0001_layered_coupling_with_abstractcore.md) | Accepted | 2025-12-11 | Kernel stays dependency-light; AbstractCore integration is opt-in |
|
|
17
17
|
| 0002 | [Execution Modes](0002_execution_modes_local_remote_hybrid.md) | Accepted | 2025-12-11 | Support local, remote, and hybrid execution topologies |
|
|
18
18
|
| 0003 | [Provenance Hash Chain](0003_provenance_tamper_evident_hash_chain.md) | Accepted | 2025-12-11 | Tamper-evident ledger first; cryptographic signatures deferred |
|
|
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
|
+
| 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
|
+
| 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 |
|
|
19
22
|
|
|
20
23
|
## Relationship to Backlog
|
|
21
24
|
|
|
@@ -26,6 +29,9 @@ ADRs explain *why*. Backlog items explain *what* and *how*.
|
|
|
26
29
|
| 0001 | `backlog/completed/005_abstractcore_integration.md` |
|
|
27
30
|
| 0002 | `backlog/completed/005_abstractcore_integration.md` |
|
|
28
31
|
| 0003 | `backlog/completed/007_provenance_hash_chain.md`, `backlog/planned/008_signatures_and_keys.md` |
|
|
32
|
+
| 0004 | `backlog/completed/023_truthful_local_media_residency_boundaries.md`, `backlog/completed/024_runtime_owned_run_scoped_media_execution.md` |
|
|
33
|
+
| 0005 | `backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md` |
|
|
34
|
+
| 0006 | `backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md` |
|
|
29
35
|
|
|
30
36
|
## Adding New ADRs
|
|
31
37
|
|
|
@@ -34,4 +40,3 @@ When making a significant architectural decision:
|
|
|
34
40
|
2. Use the template: Status, Context, Decision, Consequences
|
|
35
41
|
3. Set status to "Accepted" once the decision is final
|
|
36
42
|
4. If superseding an old ADR, update the old one's status to "Superseded by NNNN"
|
|
37
|
-
|
|
@@ -176,21 +176,26 @@ This produces a portable record of a run’s state + ledger + artifacts suitable
|
|
|
176
176
|
|
|
177
177
|
### AbstractCore (LLM + tools)
|
|
178
178
|
|
|
179
|
-
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.
|
|
179
|
+
Requires: `pip install "abstractruntime[abstractcore]"` (AbstractCore 2.13.23 or newer).
|
|
180
180
|
|
|
181
181
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
182
182
|
|
|
183
183
|
Entry points:
|
|
184
184
|
- `create_local_runtime(...)`, `create_remote_runtime(...)`, `create_hybrid_runtime(...)` (`src/abstractruntime/integrations/abstractcore/factory.py`)
|
|
185
|
+
- public discovery facade: `AbstractCoreDiscoveryFacade`, `get_abstractcore_discovery_facade(...)` (`src/abstractruntime/integrations/abstractcore/discovery_facade.py`)
|
|
186
|
+
- public host facade: `AbstractCoreHostFacade`, `get_abstractcore_host_facade(...)` (`src/abstractruntime/integrations/abstractcore/host_facade.py`)
|
|
187
|
+
- public durable run facade: `AbstractCoreRunFacade`, `get_abstractcore_run_facade(...)` (`src/abstractruntime/integrations/abstractcore/run_facade.py`)
|
|
185
188
|
- effect handler wiring: `build_effect_handlers(...)` (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`)
|
|
186
189
|
- tool executors: `MappingToolExecutor`, `AbstractCoreToolExecutor`, `PassthroughToolExecutor`, `ApprovalToolExecutor`, `ToolApprovalPolicy` (`src/abstractruntime/integrations/abstractcore/tool_executor.py`)
|
|
187
|
-
-
|
|
190
|
+
- 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_vision_provider_models`, `list_cached_vision_models`)
|
|
191
|
+
- host-facade 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`)
|
|
192
|
+
- run-facade helpers create durable child runs for existing runs (`execute_llm_call`, `generate_image`, `generate_voice`, `transcribe_audio`)
|
|
188
193
|
|
|
189
194
|
`LLM_CALL` payloads are JSON-safe effect payloads. Common fields:
|
|
190
195
|
- `prompt`, `messages`, `system_prompt`, and convenience `text`
|
|
191
196
|
- `media`: a media path, artifact ref (`{"$artifact": "..."}` or `{"artifact_id": "..."}`), media dict, or list of those
|
|
192
197
|
- `output`: AbstractCore output selector; top-level `outputs` is accepted as a runtime alias
|
|
193
|
-
- `params`: provider/model routing, generation controls, prompt-cache keys
|
|
198
|
+
- `params`: provider/model routing, generation controls, prompt-cache keys or `prompt_cache_binding`, structured-output schema options, and tracing metadata
|
|
194
199
|
|
|
195
200
|
Multimodal support:
|
|
196
201
|
- install `abstractruntime[multimodal]` for common AbstractCore media, vision, voice, and audio dependencies
|
|
@@ -198,11 +203,16 @@ Multimodal support:
|
|
|
198
203
|
- remote and hybrid clients support AbstractCore Server chat media content arrays plus image generation, speech, and transcription endpoints; pass an output-specific `model` for remote media provider routing, otherwise the server endpoint can use its configured capability default
|
|
199
204
|
- remote transcription requires one audio media item that resolves to a local file path or artifact-backed temporary file
|
|
200
205
|
- generated image/voice/audio bytes require a runtime `ArtifactStore`; the result contains `artifact_id` / `artifact_ref` instead of inline bytes
|
|
206
|
+
- media-only normalized results expose `runtime_provider` / `runtime_model` separately from `media_provider` / `media_model`
|
|
207
|
+
- optional local media residency failures complete with `status_hint="warning"` and `degraded=true`, while unsupported local media warmup also reports `execution_mode="local_one_shot_subprocess"` and `requires_long_lived_server=true`
|
|
201
208
|
- 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
|
|
202
209
|
|
|
203
210
|
Prompt cache / cached sessions:
|
|
204
211
|
- LLM clients expose cache control methods listed above for host-side preparation and inspection
|
|
205
212
|
- `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
|
|
213
|
+
- `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
|
|
214
|
+
- `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`)
|
|
215
|
+
- 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
|
|
206
216
|
- provider cache/session handles are not durable runtime state and should not be stored in `RunState.vars`
|
|
207
217
|
|
|
208
218
|
Attachment registration limits:
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AbstractRuntime — Architecture
|
|
2
2
|
|
|
3
|
-
> Updated: 2026-05-
|
|
4
|
-
> Version: 0.4.
|
|
3
|
+
> Updated: 2026-05-20
|
|
4
|
+
> Version: 0.4.16
|
|
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.
|
|
@@ -36,6 +36,7 @@ The boundary is intentionally narrow:
|
|
|
36
36
|
- Generated binary outputs are written to `ArtifactStore` and returned as `artifact_id` / `artifact_ref`, keeping `RunState.vars` and ledger records bounded and JSON-safe.
|
|
37
37
|
- Remote chat media is sent to AbstractCore Server as provider-ready content arrays, but persisted provider-request metadata redacts data URLs so checkpoints and ledgers do not embed media bytes.
|
|
38
38
|
- Provider sessions and prompt-cache objects are not runtime state. Runtime may carry stable cache keys, while AbstractCore clients/servers manage warm caches.
|
|
39
|
+
- Hosts should use Runtime-owned AbstractCore facades for discovery snapshots, prompt-cache/model-residency control operations, and durable run-scoped media child runs instead of reaching through private runtime attachments or importing Core internals directly.
|
|
39
40
|
- Local execution can use richer AbstractCore capability plugins. Remote and hybrid execution map the common media cases to AbstractCore Server endpoints and OpenAI-compatible content arrays, while hybrid keeps tool execution local.
|
|
40
41
|
- Gateway and other hosts compose Runtime with the desired Core/capability/memory profile. Runtime's base package includes the AbstractMemory contract but not backend extras such as LanceDB; hosts choose storage, embeddings, and readiness policy. Hardware profile extras such as `apple`, `gpu`, `all-apple`, and `all-gpu` cascade through AbstractCore when a host selects them.
|
|
41
42
|
- Remote and hybrid clients use explicit Core server URLs and auth headers supplied by the host. Runtime does not read Gateway auth environment variables for provider/model/auth decisions or treat Gateway bearer tokens as Core server/provider credentials.
|
|
@@ -168,7 +169,7 @@ Registered in `Runtime._register_builtin_handlers()` (`src/abstractruntime/core/
|
|
|
168
169
|
|
|
169
170
|
### Host-wired effects
|
|
170
171
|
The kernel defines the protocol; concrete integrations provide handlers:
|
|
171
|
-
- `LLM_CALL`, `TOOL_CALLS`: provided by AbstractCore integration (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`). The integration supports local/remote/hybrid execution, cached sessions/prompt-cache control, media inputs, generated media outputs, provider-key header routing for remote servers, passthrough tools, and approval-gated local tool execution.
|
|
172
|
+
- `LLM_CALL`, `TOOL_CALLS`, `MODEL_RESIDENCY`: provided by AbstractCore integration (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`). The integration supports local/remote/hybrid execution, cached sessions/prompt-cache control, discovery/catalog snapshots, model residency, durable run-scoped media child runs, media inputs, generated media outputs, provider-key header routing for remote servers, passthrough tools, and approval-gated local tool execution.
|
|
172
173
|
- `MEMORY_KG_*`: provided by the AbstractMemory bridge (`src/abstractruntime/integrations/abstractmemory/effect_handlers.py`)
|
|
173
174
|
|
|
174
175
|
### Reliability: retries + idempotency
|
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
# Backlog (maintainers)
|
|
2
2
|
|
|
3
|
+
This README currently serves as the backlog overview for this repository.
|
|
4
|
+
|
|
3
5
|
This folder contains a structured backlog used during development. Items are grouped as:
|
|
4
6
|
- `completed/` — implemented work items (what shipped, with implementation pointers)
|
|
5
|
-
- `planned/` — future work
|
|
7
|
+
- `planned/` — committed future work items that still match current runtime reality
|
|
8
|
+
- `proposed/` — uncommitted ideas and follow-on risks worth preserving
|
|
6
9
|
- `deprecated/` — historical backlog notes (superseded)
|
|
7
10
|
|
|
8
11
|
If you are new to the project, start with `../README.md` and `../architecture.md` instead.
|
|
@@ -24,6 +27,15 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
24
27
|
| 012 | `completed/012_run_store_query_and_scheduler_support.md` |
|
|
25
28
|
| 013 | `completed/013_effect_retries_and_idempotency.md` |
|
|
26
29
|
| 016 | `completed/016_runtime_aware_parameters.md` |
|
|
30
|
+
| 019 | `completed/019_runtime_host_facade_for_core_operator_surfaces.md` |
|
|
31
|
+
| 020 | `completed/020_runtime_gateway_install_boundary.md` |
|
|
32
|
+
| 021 | `completed/021_runtime_gateway_env_namespace_cleanup.md` |
|
|
33
|
+
| 022 | `completed/022_model_residency_control_plane.md` |
|
|
34
|
+
| 023 | `completed/023_truthful_local_media_residency_boundaries.md` |
|
|
35
|
+
| 024 | `completed/024_runtime_owned_run_scoped_media_execution.md` |
|
|
36
|
+
| 026 | `completed/026_runtime_host_discovery_facade_for_core_catalogs.md` |
|
|
37
|
+
| 027 | `completed/027_runtime_durable_bloc_prompt_cache_facade.md` |
|
|
38
|
+
| 028 | `completed/028_runtime_bloc_kv_lifecycle_and_pruning.md` |
|
|
27
39
|
|
|
28
40
|
## Planned
|
|
29
41
|
|
|
@@ -31,9 +43,16 @@ If you are new to the project, start with `../README.md` and `../architecture.md
|
|
|
31
43
|
|----|------|
|
|
32
44
|
| 008 | `planned/008_signatures_and_keys.md` |
|
|
33
45
|
| 014 | `planned/014_remote_tool_worker_executor.md` |
|
|
34
|
-
| 015 | `planned/015_agent_integration_improvements.md` |
|
|
35
46
|
| 017 | `planned/017_limit_warnings_and_observability.md` |
|
|
36
47
|
| 018 | `planned/018_workspace_access_policy_for_media_and_tools.md` |
|
|
48
|
+
| 025 | `planned/025_runtime_retention_and_purge_contract.md` |
|
|
49
|
+
|
|
50
|
+
## Proposed
|
|
51
|
+
|
|
52
|
+
| Date | Item |
|
|
53
|
+
|------|------|
|
|
54
|
+
| 2026-05-20 | `proposed/2026-05-20_agent_runtime_convenience_constructor.md` |
|
|
55
|
+
| 2026-05-20 | `proposed/2026-05-20_runtime_local_admin_prompt_cache_save_load.md` |
|
|
37
56
|
|
|
38
57
|
## Deprecated
|
|
39
58
|
|