AbstractRuntime 0.4.35__tar.gz → 0.5.0__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.35 → abstractruntime-0.5.0}/CHANGELOG.md +110 -2
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/CONTRIBUTING.md +9 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/PKG-INFO +11 -8
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/README.md +7 -4
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/README.md +1 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/api.md +7 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/architecture.md +51 -3
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/faq.md +3 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/getting-started.md +1 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/integrations/abstractcore.md +100 -10
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/troubleshooting.md +49 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/llms-full.txt +2693 -3539
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/llms.txt +6 -3
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/pyproject.toml +4 -4
- abstractruntime-0.5.0/release-notes.md +106 -0
- abstractruntime-0.5.0/scripts/generate_llms_full.py +104 -0
- abstractruntime-0.5.0/src/abstractruntime/core/live_deltas.py +311 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/progress_channel.py +57 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/runtime.py +227 -62
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/config_facade.py +3 -3
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +82 -5
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +16 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/factory.py +18 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/llm_client.py +1493 -73
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/summarizer.py +45 -9
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +50 -8
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/utils/workspace_paths.py +65 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/compiler.py +2 -2
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/executor.py +9 -0
- abstractruntime-0.5.0/tests/test_compaction_summarizer_route.py +72 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_config_facade_models_engines.py +4 -4
- abstractruntime-0.5.0/tests/test_explicit_eject_other_clients.py +113 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_factory_default_retry_policy.py +1 -1
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_factory_timeouts_default_to_abstractcore_config.py +4 -4
- abstractruntime-0.5.0/tests/test_hf_process_residency_merge.py +175 -0
- abstractruntime-0.5.0/tests/test_live_token_deltas.py +1554 -0
- abstractruntime-0.5.0/tests/test_mlx_process_residency_merge.py +130 -0
- abstractruntime-0.5.0/tests/test_model_residency_clean_switch.py +462 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_packaging_extras.py +3 -3
- abstractruntime-0.5.0/tests/test_workspace_builtin_deny.py +318 -0
- abstractruntime-0.4.35/release-notes.md +0 -14
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/.gitignore +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/CODE_OF_CONDUCT.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/LICENSE +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/ROADMAP.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/SECURITY.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/adr/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/artifacts.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/entity-runtime.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/evidence.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/limits.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/manual_testing.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/proposal.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/provenance.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/snapshots.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/tool-approval.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/tools-comms.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/emails.config.example.yaml +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/05_persistence.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/examples/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/mkdocs.yml +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/pytest.ini +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/scripts/backfill_diary_edges.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/effect_cancellation.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/health.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/run_lifecycle.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/tool_scope.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/documents/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/documents/charts.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/documents/docx.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/documents/pdf.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/act_only.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/chat.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/communities.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/diary.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/digest.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/entity_runtime.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/lease.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/life.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/memory_reader.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/night_voice.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/phase_graph.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/phase_spec.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/prelude.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/prompt_overlay.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/reflection.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/substrate.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/tool_effects.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/tool_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/tools.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/identity/visit_workflow.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/multi_store.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/session_history.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/lease.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/ledger_slim.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/serialize.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/storage/steer_sidecar.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/turn_grounding.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/utils/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/utils/atomic_files.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/utils/file_filters.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/README.md +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/conftest.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_abstractcore_discovery_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_abstractcore_host_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_abstractcore_run_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_agora_agent_alias_identity.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_agora_tools_http.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_analyze_media_addressing_and_walling.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_browser_probe_target_walling.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_budget_law_no_unrequested_caps.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_capability_default_reasoning.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_code_node_restricted_python.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_command_store.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_crash_ordering_inversions.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_data_registry_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_camera_gating.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_web.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_diary_capture.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_diary_write_rescue.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_directory_lease.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_disabled_toolsets_seam.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_discovery_survives_unbuildable_default.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_document_markdown_tables.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_document_renderers_hr_quote.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_durable_write_discipline.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_effect_cancellation.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_effect_issuance_idempotency.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_effect_payload_stays_json_serializable.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_election_consequence_teaching.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_emergence_experiment.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_emit_event_uses_wait_index.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_endpoint_profile_route_context.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_awake_memory_fixes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_brain_effects.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_chat_driver.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_chat_tools_reflection.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_diary.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_execute_tool.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_fetch_url_tool.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_life_loop.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_memory_richness.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_phase_graph_conformance.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_recent_memories.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_runtime.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_search_memory.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_substrate_resolution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_visit_honesty.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_workspace_cap.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_entity_workspace_tools.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_event_wait_index.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_execute_command_output_offload.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_execution_capability_discovery.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_format_repair_nudge.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_fresh_install_no_provider.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_gateway_facades_c4899.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_git_read_only_refiner.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_hot_path_store_reads.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_indexed_idempotency_lookup.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_json_run_cache_bound.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_json_store_scan_memo.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_ledger_record_slimming.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_payload_shape_refusal.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_text_phase_progress.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_client_grounding_tail.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_retry_classification.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_llm_streaming_on_token.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_local_helper_tool_exposure.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_local_residency_host_sweep.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_max_iterations_ceiling.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_media_capability_default_routing.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_media_subprocess.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_appraise_handler.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_communities.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_seam_handlers.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_seam_sqlite_durability.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_model_eject_cancel.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_model_residency_control_plane.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_multi_store_scheduler.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_multimodal_abstractcore_integration.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_native_mlx_application_wiring.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_native_mlx_execution_controls_live.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_native_tool_channel.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_night_voice.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_no_default_provider_refusal_ux.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_offload_answer_chain_c4978.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_offloading.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_parallel_readonly_tool_execution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_pdf_unicode_rendering.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_personal_cycle.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_phantom_attachment_index.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_phase_graph_artifact_control.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_phase_graph_obedience.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_phase_vocabulary_migration.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_cache_modules.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_cache_posture_inheritance.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_prompt_overlay.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_provider_endpoint_profile_resolution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_provider_pin_routing_isolation.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_read_idle_threading.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_readoption_experiment.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_realize_election.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_remote_client_cancel.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_remote_speculation_defaults.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_report_branding.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_run_scoped_tool_policy.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_run_tool_scope_ceiling.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_browser_session_boundary.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_default_provider_model_refresh.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_effect_invocation_trace.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_health_and_bounded_vars.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_runtime_tick_step_gate.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_send_email_refiner.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_session_history.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_session_prompt_cache_attribution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_session_prompt_cache_visibility.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_session_route_stamp.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_shell_tool_exposure.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_speculation_inheritance.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_speculation_reaches_provider_construction.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_steer_sidecar.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_storage_deletion.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_thinking_inheritance.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_approval_wait_key_identity.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_catalog.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_descriptor_registry.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_inventory_facade.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_invoke_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_policy_and_mounts.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_topic_election_world_model.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_turn_grounding_byte_stability.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_turn_grounding_carriers_a3.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visit_ab_fixture.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visit_history_replay_caps.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visit_midturn_elections.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visit_midturn_resume.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visit_workflow.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_entity_memory_nodes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_llm_call_partial_override.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_unknown_node_type_refuses.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_agora_react_agent.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_continue_on_error.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_edit_json_schema_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_file_nodes_workspace.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_function_library.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_get_var_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_media_nodes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_pin_expressions.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_schema_enum_switch.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_w4_feelings_lens.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_wait_event_deadline.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_wait_until_streak.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_wait_until_utc_normalization.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_workspace_prompt_context.py +0 -0
- {abstractruntime-0.4.35 → abstractruntime-0.5.0}/tests/test_write_chart.py +0 -0
|
@@ -5,7 +5,114 @@ All notable changes to AbstractRuntime will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.5.0] - 2026-09-26
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- When an LLM call is re-run after a stray kill, its interrupted first run ends with
|
|
13
|
+
`delta_end` `cancelled` with `detail: "reinvoked"` (the run continues) and the re-run streams
|
|
14
|
+
under its own call id, so a live view never shows a partial answer followed by the full one.
|
|
15
|
+
- The last batch of a streamed reply is sent before the call's final record is written, never just
|
|
16
|
+
after it; text arriving once the call has returned is dropped.
|
|
17
|
+
- A streamed reply that only turns out to lack token usage at the end now ends with
|
|
18
|
+
`reason: "completed"` in the live view (the text did stream); `usage_unavailable` is recorded on
|
|
19
|
+
the `LLM_CALL` record only.
|
|
20
|
+
- Streamed answers without usage are no longer invisible to the aborted-generation check: it judges
|
|
21
|
+
them from `finish_reason` and the text, and the record says so with `metadata.usage_estimated`.
|
|
22
|
+
- Servers that reject `stream_options` but still send token usage (LM Studio) stream again.
|
|
23
|
+
Streaming is refused for missing usage only when the provider reports the rejection AND a
|
|
24
|
+
streamed answer came back without usage; one call in ten streams again to re-check, and a
|
|
25
|
+
streamed answer with usage lifts the refusal.
|
|
26
|
+
- A child run or a VisualFlow node can no longer switch off the host's built-in workspace
|
|
27
|
+
protection: it may add `workspace_builtin_deny_prefixes`, never remove the host's, and cannot
|
|
28
|
+
widen `workspace_builtin_allow` beyond the parent's (its own folder counts only when it is
|
|
29
|
+
inside an allowed folder).
|
|
30
|
+
- Harmony-format models (gpt-oss) stream their answers live: the `final` channel is sent as
|
|
31
|
+
content, `analysis` as reasoning, and tool calls are held back. A call whose whole answer is held
|
|
32
|
+
back ends with `reason: "unavailable"`, `detail: "tool_envelope_holdback"` instead of a silent
|
|
33
|
+
empty live view.
|
|
34
|
+
- One streamed answer without token usage no longer turns streaming off for that model until
|
|
35
|
+
restart. That call is reported (`usage_unavailable`) and the next call streams again; streaming
|
|
36
|
+
stays off only when the provider reports that its server rejects usage in streams.
|
|
37
|
+
- Host-protected folders no longer grow the system prompt. A host can pass its own protection as
|
|
38
|
+
`workspace_builtin_deny_prefixes` (for example the gateway's data folder and credential folders)
|
|
39
|
+
and `workspace_builtin_allow` (the run's own folder inside it). File tools, listings and the
|
|
40
|
+
shell's starting folder are refused under a denied prefix, except under an allow entry. These
|
|
41
|
+
entries are enforced but never written into the model's system prompt, which keeps it identical
|
|
42
|
+
from turn to turn (and the prompt cache warm); only the operator's own `workspace_ignored_paths`
|
|
43
|
+
are shown to the model. Child runs inherit both lists.
|
|
44
|
+
- MLX calls stream again when they use a prompt-cache key: AbstractCore now puts the prompt-cache
|
|
45
|
+
record on the stream's last chunk, so the streamed record matches the non-streamed one.
|
|
46
|
+
- Streamed LLM calls now record the same result as non-streamed ones: `raw_response` is present
|
|
47
|
+
(the provider's terminal chunk), and the last reasoning fragment no longer leaks into
|
|
48
|
+
`metadata.reasoning_delta`.
|
|
49
|
+
- Changing the default text model no longer leaves the previous model in memory. The previous
|
|
50
|
+
in-process model (MLX or HuggingFace) is unloaded from the whole process before the new default
|
|
51
|
+
is loaded, unless the pool still uses it or it is locked. A call still generating on it is not
|
|
52
|
+
cancelled; the model is unloaded when that call ends. Measured on a 27B MLX model: 17 GB stayed
|
|
53
|
+
resident after a console switch; now it is freed.
|
|
54
|
+
- Changing the default model in one service never unloads a model another service, user or
|
|
55
|
+
entity in the same process still uses or has locked. The check covers every owner in the
|
|
56
|
+
process and runs under one lock with the unload, so a model being loaded again at that moment
|
|
57
|
+
is not unloaded either.
|
|
58
|
+
- `list_model_residency` diagnostics carry `pending_ejects` (a previous model waiting for its
|
|
59
|
+
running call to end before it is unloaded) and `last_switch_ejects` (unloaded, kept because
|
|
60
|
+
something still uses it, or failed, with the reason).
|
|
61
|
+
- A load with `ttl_s` or `keep_alive` on an in-process model, or on a model that was already
|
|
62
|
+
loaded, now reports them under `unsupported_options` with a warning; provider warnings appear in
|
|
63
|
+
the response's top-level `warnings`.
|
|
64
|
+
- A model load that fails part-way unloads what it had loaded.
|
|
65
|
+
- Chat compaction summarizes a run with the model the run uses, instead of loading the default
|
|
66
|
+
model just for the summary. A run with no model of its own is summarized with the current
|
|
67
|
+
default model, resolved on each call; the summarizer no longer holds the model that was the
|
|
68
|
+
default at startup.
|
|
69
|
+
- Unloading a model by `runtime_id` alone now works for every task: TTS, STT, image, music and
|
|
70
|
+
embedding rows, not only text. A backend's own id is looked up in the listing.
|
|
71
|
+
- Listings no longer report a task error on every call for `image_upscale`, `video_generation`,
|
|
72
|
+
`text_to_video`, `image_to_video` and `text_to_audio`; they are served by the image and music
|
|
73
|
+
capabilities.
|
|
74
|
+
- Changing a capability default unloads the models the previous capability routes had loaded
|
|
75
|
+
instead of leaving them in memory.
|
|
76
|
+
- Unloading a local MLX model through the runtime (`model_residency` unload, on
|
|
77
|
+
a single client or the multi-model pool) now frees it from every holder in
|
|
78
|
+
the process, not only from the runtime's own instance. Before, the weights
|
|
79
|
+
could stay in memory when another part of the process still held the model
|
|
80
|
+
(for example a client created with a per-request override, a chat summarizer
|
|
81
|
+
built at startup, or a runtime left over after a bundle reload), and the
|
|
82
|
+
unload still reported success. The unload result now includes a
|
|
83
|
+
`process_eject` report and names what, if anything, is still held.
|
|
84
|
+
- Model residency listings now show MLX models the process still holds, even
|
|
85
|
+
when the runtime's own pool no longer references them
|
|
86
|
+
(`provider_state: "resident_via_other_holders"`). Such a model can be
|
|
87
|
+
unloaded from the listing like any other.
|
|
88
|
+
|
|
89
|
+
### Added
|
|
90
|
+
|
|
91
|
+
- **Live token streaming.** `Runtime.set_live_delta_sink(sink)` lets a host receive the text of an
|
|
92
|
+
answer while it is generated. For runs started with `_runtime.stream: true`, each LLM call streams
|
|
93
|
+
and the sink gets `llm.delta` events (`run_id`, `parent_run_id`, `node_id`, `call_id` = the LLM
|
|
94
|
+
call's step id, `seq`, `text`, `channel` = `content` or `reasoning`) and one `llm.delta_end`
|
|
95
|
+
(`completed`, `failed`, `cancelled`, or `unavailable` with a `detail`) after the call's final
|
|
96
|
+
record is written. Deltas are never written to the ledger. Thinking is sent on its own `reasoning`
|
|
97
|
+
channel, including inline `<think>` markup, and tool-call markup never reaches the live text.
|
|
98
|
+
A call streams only when its recorded result keeps its usage, `raw_response` and prompt-cache
|
|
99
|
+
telemetry; otherwise it runs non-streamed and the reason is sent to the client and recorded as
|
|
100
|
+
`_runtime_observability.stream_unavailable`. Child runs inherit `stream`. `Runtime.start`
|
|
101
|
+
refuses a non-boolean `_runtime.stream`. Remote mode (AbstractCore server) stays non-streaming.
|
|
102
|
+
See `docs/integrations/abstractcore.md#live-token-streaming`.
|
|
103
|
+
- Embedding models loaded in the process appear in `list_model_residency` as `task: "embedding"`
|
|
104
|
+
rows (`local:embedding:huggingface:<model>`, with holders and bytes) and can be unloaded like any
|
|
105
|
+
other model.
|
|
106
|
+
- HuggingFace models held in the process outside the runtime's pool are listed and unloaded like
|
|
107
|
+
MLX ones.
|
|
108
|
+
|
|
109
|
+
### Changed
|
|
110
|
+
|
|
111
|
+
- Compatibility: AbstractRuntime 0.5.0 requires AbstractCore 2.16.0 or newer (was 2.15.1 in
|
|
112
|
+
0.4.35) in the base install and in the `apple` and `gpu` extras, and `models_engines_support()`
|
|
113
|
+
reports 2.16.0 as `required`. The live streaming, process-wide unload and residency features above
|
|
114
|
+
use modules that first ship in AbstractCore 2.16.0. Upgrading AbstractRuntime upgrades AbstractCore
|
|
115
|
+
accordingly; if you pin AbstractCore yourself, raise the pin to 2.16.0.
|
|
9
116
|
|
|
10
117
|
## [0.4.35] - 2026-09-25
|
|
11
118
|
|
|
@@ -888,7 +995,8 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
|
|
|
888
995
|
|
|
889
996
|
Initial development version with basic proof-of-concept features.
|
|
890
997
|
|
|
891
|
-
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.
|
|
998
|
+
[Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.5.0...HEAD
|
|
999
|
+
[0.5.0]: https://github.com/lpalbou/abstractruntime/compare/v0.4.35...v0.5.0
|
|
892
1000
|
[0.4.35]: https://github.com/lpalbou/abstractruntime/compare/v0.4.34...v0.4.35
|
|
893
1001
|
[0.4.34]: https://github.com/lpalbou/abstractruntime/compare/v0.4.33...v0.4.34
|
|
894
1002
|
[0.4.33]: https://github.com/lpalbou/abstractruntime/compare/v0.4.32...v0.4.33
|
|
@@ -22,6 +22,9 @@ python -m pip install -e ".[test,docs]"
|
|
|
22
22
|
python -m pytest -q
|
|
23
23
|
```
|
|
24
24
|
|
|
25
|
+
Inside the AbstractFramework workspace, prefer `python -P -m pytest tests -q`: `-P` keeps the current folder off
|
|
26
|
+
`sys.path`, so a workspace folder named like a package (for example `abstractflow/`) cannot shadow it.
|
|
27
|
+
|
|
25
28
|
If you cloned **only** this repo (without the AbstractFramework workspace), make sure the sibling packages above are importable (install them or clone them next to this repo) before running the full test suite.
|
|
26
29
|
|
|
27
30
|
## Repo map (source of truth)
|
|
@@ -56,6 +59,12 @@ When behavior changes, update:
|
|
|
56
59
|
- `docs/architecture.md` (semantics/invariants)
|
|
57
60
|
- `CHANGELOG.md` (user-visible changes)
|
|
58
61
|
|
|
62
|
+
List every `docs/*.md` page in `docs/README.md`. Keep `llms.txt` (the hand-curated index) and
|
|
63
|
+
`llms-full.txt` in step with the documentation in the same change. `llms-full.txt` is generated:
|
|
64
|
+
run `python scripts/generate_llms_full.py` after editing any page it includes, and
|
|
65
|
+
`python scripts/generate_llms_full.py --check` to confirm it is current (it exits 1 when the file
|
|
66
|
+
is stale). Add a page to the script's `DOCUMENTS` list when it joins the core set.
|
|
67
|
+
|
|
59
68
|
## Releases
|
|
60
69
|
|
|
61
70
|
- Bump `version` in `pyproject.toml`
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: AbstractRuntime: a durable graph runner designed to pair with AbstractCore.
|
|
5
5
|
Project-URL: AbstractCore (website), https://www.abstractcore.ai/
|
|
6
6
|
Project-URL: AbstractRuntime (GitHub), https://github.com/lpalbou/abstractruntime
|
|
@@ -20,7 +20,7 @@ Classifier: Programming Language :: Python :: 3.11
|
|
|
20
20
|
Classifier: Programming Language :: Python :: 3.12
|
|
21
21
|
Classifier: Programming Language :: Python :: 3.13
|
|
22
22
|
Requires-Python: >=3.10
|
|
23
|
-
Requires-Dist: abstractcore[audio,music,remote,tools,vision,voice]>=2.
|
|
23
|
+
Requires-Dist: abstractcore[audio,music,remote,tools,vision,voice]>=2.16.0
|
|
24
24
|
Requires-Dist: abstractmemory>=0.3.0
|
|
25
25
|
Requires-Dist: abstractsemantics>=0.0.5
|
|
26
26
|
Requires-Dist: anyio<5.0.0,>=4.12.1
|
|
@@ -35,14 +35,14 @@ Requires-Dist: reportlab<5.0.0,>=4.0.0
|
|
|
35
35
|
Requires-Dist: restrictedpython>=7.0
|
|
36
36
|
Requires-Dist: unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32
|
|
37
37
|
Provides-Extra: apple
|
|
38
|
-
Requires-Dist: abstractcore[all-apple]>=2.
|
|
38
|
+
Requires-Dist: abstractcore[all-apple]>=2.16.0; extra == 'apple'
|
|
39
39
|
Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'apple'
|
|
40
40
|
Provides-Extra: docs
|
|
41
41
|
Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
|
|
42
42
|
Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
|
|
43
43
|
Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
|
|
44
44
|
Provides-Extra: gpu
|
|
45
|
-
Requires-Dist: abstractcore[all-gpu]>=2.
|
|
45
|
+
Requires-Dist: abstractcore[all-gpu]>=2.16.0; extra == 'gpu'
|
|
46
46
|
Requires-Dist: setuptools<82.0.0,>=77.0.3; extra == 'gpu'
|
|
47
47
|
Provides-Extra: test
|
|
48
48
|
Requires-Dist: pytest>=7.0.0; extra == 'test'
|
|
@@ -54,7 +54,7 @@ Description-Content-Type: text/markdown
|
|
|
54
54
|
|
|
55
55
|
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.
|
|
56
56
|
|
|
57
|
-
**Version:** 0.
|
|
57
|
+
**Version:** 0.5.0 • **Python:** 3.10+
|
|
58
58
|
|
|
59
59
|
**Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
|
|
60
60
|
|
|
@@ -82,7 +82,7 @@ Remote-light runtime:
|
|
|
82
82
|
pip install abstractruntime
|
|
83
83
|
```
|
|
84
84
|
|
|
85
|
-
The base install includes AbstractCore 2.
|
|
85
|
+
The base install includes AbstractCore 2.16.0 or newer with remote provider,
|
|
86
86
|
tool, vision, voice, audio, and music integration, plus the
|
|
87
87
|
`abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
|
|
88
88
|
default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
|
|
@@ -146,7 +146,7 @@ state = rt.resume(
|
|
|
146
146
|
assert state.status.value == "completed"
|
|
147
147
|
```
|
|
148
148
|
|
|
149
|
-
## What’s included (v0.
|
|
149
|
+
## What’s included (v0.5.0)
|
|
150
150
|
|
|
151
151
|
Kernel (import-light):
|
|
152
152
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -179,7 +179,7 @@ Drivers + distribution:
|
|
|
179
179
|
Core media controls, including `count`/`n`, `seeds`, ordered
|
|
180
180
|
`lora_adapters`, and video `flow_shift`, while keeping provider/model/task
|
|
181
181
|
truth in AbstractCore and AbstractVision.
|
|
182
|
-
- `history_bundle`
|
|
182
|
+
- `history_bundle` exports replay-safe `resolved_actions` summaries derived
|
|
183
183
|
from Core request/output route resolution, so thin clients can reconstruct
|
|
184
184
|
what capability ran without reverse-engineering prompt prose.
|
|
185
185
|
- VisualFlow structured LLM/Agent results preserve `response` as text and expose
|
|
@@ -195,6 +195,9 @@ Runtime-owned integrations:
|
|
|
195
195
|
depends on the light AbstractMemory contract; hosts choose storage backends
|
|
196
196
|
such as LanceDB, SQLite, or in-memory stores.
|
|
197
197
|
- comms toolset gating (email/WhatsApp/Telegram): `docs/tools-comms.md`
|
|
198
|
+
- live token streaming: `Runtime.set_live_delta_sink(sink)` plus `_runtime.stream: true` delivers `llm.delta` / `llm.delta_end` events while an answer is generated, outside the ledger (`docs/integrations/abstractcore.md#live-token-streaming`)
|
|
199
|
+
- model switching in a shared process: changing the default model unloads the previous in-process model unless another owner in the process still uses it (`docs/integrations/abstractcore.md#unloading-and-switching-models`)
|
|
200
|
+
- workspace-scoped file and shell tools driven by `workspace_*` run vars, including host-only protected folders that are enforced without being shown to the model (`docs/integrations/abstractcore.md#workspace-scoped-tools`)
|
|
198
201
|
|
|
199
202
|
## Built-in scheduler (zero-config)
|
|
200
203
|
|
|
@@ -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.
|
|
7
|
+
**Version:** 0.5.0 • **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
|
|
|
@@ -32,7 +32,7 @@ Remote-light runtime:
|
|
|
32
32
|
pip install abstractruntime
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
The base install includes AbstractCore 2.
|
|
35
|
+
The base install includes AbstractCore 2.16.0 or newer with remote provider,
|
|
36
36
|
tool, vision, voice, audio, and music integration, plus the
|
|
37
37
|
`abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
|
|
38
38
|
default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
|
|
@@ -96,7 +96,7 @@ state = rt.resume(
|
|
|
96
96
|
assert state.status.value == "completed"
|
|
97
97
|
```
|
|
98
98
|
|
|
99
|
-
## What’s included (v0.
|
|
99
|
+
## What’s included (v0.5.0)
|
|
100
100
|
|
|
101
101
|
Kernel (import-light):
|
|
102
102
|
- workflow graphs: `WorkflowSpec` (`src/abstractruntime/core/spec.py`)
|
|
@@ -129,7 +129,7 @@ Drivers + distribution:
|
|
|
129
129
|
Core media controls, including `count`/`n`, `seeds`, ordered
|
|
130
130
|
`lora_adapters`, and video `flow_shift`, while keeping provider/model/task
|
|
131
131
|
truth in AbstractCore and AbstractVision.
|
|
132
|
-
- `history_bundle`
|
|
132
|
+
- `history_bundle` exports replay-safe `resolved_actions` summaries derived
|
|
133
133
|
from Core request/output route resolution, so thin clients can reconstruct
|
|
134
134
|
what capability ran without reverse-engineering prompt prose.
|
|
135
135
|
- VisualFlow structured LLM/Agent results preserve `response` as text and expose
|
|
@@ -145,6 +145,9 @@ Runtime-owned integrations:
|
|
|
145
145
|
depends on the light AbstractMemory contract; hosts choose storage backends
|
|
146
146
|
such as LanceDB, SQLite, or in-memory stores.
|
|
147
147
|
- comms toolset gating (email/WhatsApp/Telegram): `docs/tools-comms.md`
|
|
148
|
+
- live token streaming: `Runtime.set_live_delta_sink(sink)` plus `_runtime.stream: true` delivers `llm.delta` / `llm.delta_end` events while an answer is generated, outside the ledger (`docs/integrations/abstractcore.md#live-token-streaming`)
|
|
149
|
+
- model switching in a shared process: changing the default model unloads the previous in-process model unless another owner in the process still uses it (`docs/integrations/abstractcore.md#unloading-and-switching-models`)
|
|
150
|
+
- workspace-scoped file and shell tools driven by `workspace_*` run vars, including host-only protected folders that are enforced without being shown to the model (`docs/integrations/abstractcore.md#workspace-scoped-tools`)
|
|
148
151
|
|
|
149
152
|
## Built-in scheduler (zero-config)
|
|
150
153
|
|
|
@@ -26,7 +26,7 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
|
|
|
26
26
|
- `faq.md` — common questions (recommended)
|
|
27
27
|
- `manual_testing.md` — manual smoke tests and how to run the test suite
|
|
28
28
|
- `artifacts.md` — Runtime artifact identity, descriptors, provenance, catalog search, and access stats
|
|
29
|
-
- `integrations/abstractcore.md` — wiring `LLM_CALL` / `TOOL_CALLS`, the `config_facade` models/engines/host-jobs passthroughs for hosts, cached sessions with per-session prompt-cache listing/clearing, host memory snapshots, model-residency listings and
|
|
29
|
+
- `integrations/abstractcore.md` — wiring `LLM_CALL` / `TOOL_CALLS`, the `config_facade` models/engines/host-jobs passthroughs for hosts, cached sessions with per-session prompt-cache listing/clearing, host memory snapshots, model-residency listings, locks and model switching, live token streaming, workspace-scoped tools, durable bloc prompt-cache control, media inputs, generated media outputs, video progress events, and tool approval waits via AbstractCore
|
|
30
30
|
- `tools-comms.md` — enabling the optional comms toolset (email/WhatsApp/Telegram)
|
|
31
31
|
- `tool-approval.md` — tool risk tiers, the run-policy rank ceiling, and per-call refiners (the `send_email` self-recipient rule)
|
|
32
32
|
- `api.md#workflowbundles-flow-and-visualflow-distribution` — VisualFlow compiler APIs, media nodes, and document nodes (`read_pdf` / `write_pdf` / `write_docx`)
|
|
@@ -75,6 +75,8 @@ Implementation: `src/abstractruntime/core/runtime.py`.
|
|
|
75
75
|
- persists `CANCELLED`, then signals every effect of that run (and its in-flight descendants) executing in this process; the running attempt is recorded as `cancelled` (`StepStatus.CANCELLED`, never retried) with `cancelled_by` and `reason`, and no further effect starts
|
|
76
76
|
- `Runtime.set_default_provider_model(provider=..., model=...)`
|
|
77
77
|
- re-points the default provider/model seeded into new runs; pair it with the pooled client's `set_default_provider_model(...)` so both agree
|
|
78
|
+
- `Runtime.set_live_delta_sink(sink)` where `sink(event: dict) -> None`, or `None` to remove it
|
|
79
|
+
- receives live token deltas (`llm.delta`, `llm.delta_end`) for LLM calls of runs started with `_runtime.stream: true` (a boolean; `start` refuses any other value); nothing is written to the ledger. See [Live token streaming](integrations/abstractcore.md#live-token-streaming)
|
|
78
80
|
|
|
79
81
|
Effect cancellation helpers (`src/abstractruntime/core/effect_cancellation.py`):
|
|
80
82
|
- `inflight_effects(run_ids=None)` lists executing effects (run, step, provider, model, elapsed time)
|
|
@@ -216,7 +218,7 @@ from Core route resolution and persisted from `LLM_CALL` results.
|
|
|
216
218
|
|
|
217
219
|
### AbstractCore (LLM + tools)
|
|
218
220
|
|
|
219
|
-
Requires: `pip install abstractruntime` (AbstractCore 2.
|
|
221
|
+
Requires: `pip install abstractruntime` (AbstractCore 2.16.0 or newer is part of the base install).
|
|
220
222
|
|
|
221
223
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
222
224
|
|
|
@@ -231,6 +233,7 @@ Entry points:
|
|
|
231
233
|
- tool executors: `MappingToolExecutor`, `AbstractCoreToolExecutor`, `PassthroughToolExecutor`, `ApprovalToolExecutor`, `ToolApprovalPolicy` (`src/abstractruntime/integrations/abstractcore/tool_executor.py`)
|
|
232
234
|
- 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`, `list_vision_adapters`)
|
|
233
235
|
- 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`, `get_memory_snapshot`, `list_session_prompt_caches`, `clear_session_prompt_caches`, `lock_model_residency`, `unlock_model_residency`, `get_context_estimate`); the last six are optional in the client contract, and the facade returns `{"ok": false, "supported": false, ...}` when the configured client does not implement one
|
|
236
|
+
- switching the default model (`set_default_provider_model` on the pooled client) unloads the previous in-process model unless an owner in the process still uses it; `list_model_residency` diagnostics report `pending_ejects` and `last_switch_ejects`, and `unload_model_residency(runtime_id=...)` accepts any listed `local:<task>:<provider>:<model>` id, including `local:embedding:<provider>:<model>` rows (see `integrations/abstractcore.md#unloading-and-switching-models`)
|
|
234
237
|
- `lock_model_residency`, `unlock_model_residency`, and `get_context_estimate` accept an optional payload mapping and/or keyword arguments (keyword arguments win on conflicts); a lock requires provider-verified residency — locking a non-resident pair refuses with a structured `model_not_resident` payload (load with `lock: true` instead; remotely the Core server's HTTP 409 refusal is converted to the same payload), while unlock never requires residency so a locked-but-evicted pair is always releasable; a locked model refuses `unload_model_residency` with a structured `model_locked` payload — locally as a client-side per-`(provider, model)` lock, remotely by converting the Core server's HTTP 409 refusal — and unloads only with `force=true`, releasing the lock only after the unload succeeds
|
|
235
238
|
- the `MODEL_RESIDENCY` effect supports `list_loaded`, `load`, `unload`, `lock`, and `unlock` operations with the same soft-fail semantics; on `unload`, `force` is forwarded only when authored in the effect payload
|
|
236
239
|
- local `list_model_residency` merges AbstractCore's host-wide loaded-model sweep into text-generation listings (sweep-only rows carry `source: "provider_server"` and no `task` label), and residency rows normalize provider size extras to `size_bytes` / `size_vram_bytes` while keeping the originals; local text rows also carry registry-declared `modalities` (omitted on a registry miss), host identity (`host_id` / `host_name`), and runtime-owned lock truth (`locked` / `lockable`, with `pinned` a truthful alias of `locked` — never the default-identity flag, which `default` alone carries), while remote listings keep the Core server's row identity
|
|
@@ -275,6 +278,9 @@ Prompt cache / cached sessions:
|
|
|
275
278
|
- 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
|
|
276
279
|
- provider cache/session handles are not durable runtime state and should not be stored in `RunState.vars`
|
|
277
280
|
|
|
281
|
+
Workspace scope:
|
|
282
|
+
- run vars `workspace_root`, `workspace_access_mode`, `workspace_allowed_paths`, `workspace_ignored_paths`, and the host-only `workspace_builtin_deny_prefixes` / `workspace_builtin_allow` scope file and shell tools; child runs inherit them (see `integrations/abstractcore.md#workspace-scoped-tools`)
|
|
283
|
+
|
|
278
284
|
Attachment registration limits:
|
|
279
285
|
- `TOOL_CALLS.payload.max_attachment_bytes`, `run.vars["_runtime"]["max_attachment_bytes"]`, or `ABSTRACTRUNTIME_MAX_ATTACHMENT_BYTES` bound the bytes Runtime stores when local `read_file` outputs are captured as session attachments
|
|
280
286
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# AbstractRuntime — Architecture
|
|
2
2
|
|
|
3
|
-
> Updated: 2026-09-
|
|
4
|
-
> Version: 0.
|
|
3
|
+
> Updated: 2026-09-26
|
|
4
|
+
> Version: 0.5.0
|
|
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.
|
|
@@ -86,6 +86,54 @@ engine installer, host job registry"]
|
|
|
86
86
|
|
|
87
87
|
This keeps the runtime usable by `../abstractgateway` and application layers such as `../abstractflow`, `../abstractassistant`, `../abstractobserver`, and `../abstractcode` without embedding provider-specific model logic in the durable kernel.
|
|
88
88
|
|
|
89
|
+
### Live token streaming (outside the ledger)
|
|
90
|
+
|
|
91
|
+
Live text travels on a side channel next to the durable path. A run opts in with `_runtime.stream: true`, the host registers one sink with `Runtime.set_live_delta_sink(sink)`, and each `LLM_CALL` hands a per-call emitter (`src/abstractruntime/core/live_deltas.py`) to the AbstractCore client. The emitter batches fragments (about 40 ms), splits reasoning from content, holds back tool-call markup, and always closes the call with one `llm.delta_end` after the durable record is appended. Nothing on the live path is persisted, so replay and the ledger are the same with streaming on or off. See [Live token streaming](integrations/abstractcore.md#live-token-streaming).
|
|
92
|
+
|
|
93
|
+
```mermaid
|
|
94
|
+
flowchart LR
|
|
95
|
+
Provider["AbstractCore provider
|
|
96
|
+
(stream=True)"] -->|"chunks"| Client["LLM client
|
|
97
|
+
think / harmony split,
|
|
98
|
+
tool-markup hold-back"]
|
|
99
|
+
Client -->|"content / reasoning fragments"| Emitter["LiveDeltaEmitter
|
|
100
|
+
(per call, ~40 ms batches)"]
|
|
101
|
+
Emitter -->|"llm.delta / llm.delta_end"| Sink["host sink
|
|
102
|
+
set_live_delta_sink"]
|
|
103
|
+
Client -->|"final result
|
|
104
|
+
(content, usage, raw_response, prompt_cache)"| Handler["LLM_CALL handler"]
|
|
105
|
+
Handler -->|"StepRecord"| Ledger["LedgerStore"]
|
|
106
|
+
Handler -.->|"after the record: delta_end"| Emitter
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
### Model residency in a shared process
|
|
110
|
+
|
|
111
|
+
In-process models (MLX, HuggingFace, embeddings) belong to the process, not to one runtime. Every multi-local client registers what it still needs (pooled, per-override, locked, being built, default) with AbstractCore's process residency registry. An unload after a default switch or a failed load goes through `eject_unclaimed`, which checks every owner's claims and unloads under one lock, so one service never unloads a model another service, user, entity runtime or the AbstractCore server still uses. A model that is still generating is unloaded when its call ends. See [Unloading and switching models](integrations/abstractcore.md#unloading-and-switching-models).
|
|
112
|
+
|
|
113
|
+
```mermaid
|
|
114
|
+
flowchart TB
|
|
115
|
+
subgraph Process["One host process"]
|
|
116
|
+
ClientA["multi-local client
|
|
117
|
+
(service A)"]
|
|
118
|
+
ClientB["multi-local client
|
|
119
|
+
(service B / entity runtime)"]
|
|
120
|
+
Server["AbstractCore server
|
|
121
|
+
managed runtimes"]
|
|
122
|
+
Registry["process residency registry
|
|
123
|
+
claims: pool, override, lock,
|
|
124
|
+
building, default"]
|
|
125
|
+
Weights["in-process weights
|
|
126
|
+
MLX / HuggingFace / embeddings"]
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
ClientA -->|"register claims"| Registry
|
|
130
|
+
ClientB -->|"register claims"| Registry
|
|
131
|
+
Server -->|"register claims"| Registry
|
|
132
|
+
ClientA -->|"default switch:
|
|
133
|
+
eject_unclaimed(old model)"| Registry
|
|
134
|
+
Registry -->|"unload only if no owner claims it"| Weights
|
|
135
|
+
```
|
|
136
|
+
|
|
89
137
|
## Component map
|
|
90
138
|
|
|
91
139
|
```mermaid
|
|
@@ -238,7 +286,7 @@ Registered in `Runtime._register_builtin_handlers()` (`src/abstractruntime/core/
|
|
|
238
286
|
|
|
239
287
|
### Host-wired effects
|
|
240
288
|
The kernel defines the protocol; concrete integrations provide handlers:
|
|
241
|
-
- `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 with per-session attribution and clearing, host memory snapshots, discovery/catalog snapshots, model residency including host-wide provider-server rows in listings, residency locks with `force`-gated unload and context-estimate relays, durable run-scoped media child runs, media inputs, generated media outputs, provider progress callbacks as ledger events, provider-key header routing for remote servers, passthrough tools,
|
|
289
|
+
- `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 with per-session attribution and clearing, host memory snapshots, discovery/catalog snapshots, model residency including host-wide provider-server rows in listings, residency locks with `force`-gated unload and context-estimate relays, durable run-scoped media child runs, media inputs, generated media outputs, provider progress callbacks as ledger events, provider-key header routing for remote servers, passthrough tools, approval-gated local tool execution, and workspace-scoped file and shell tools (run vars `workspace_*`, inherited by child runs; the host's built-in deny prefixes are enforced without being rendered into the model's prompt).
|
|
242
290
|
- `MEMORY_KG_*`: provided by the AbstractMemory bridge (`src/abstractruntime/integrations/abstractmemory/effect_handlers.py`)
|
|
243
291
|
|
|
244
292
|
### Reliability: retries + idempotency
|
|
@@ -118,7 +118,7 @@ If a binding includes `key`, Runtime uses it as the effective prompt-cache key a
|
|
|
118
118
|
|
|
119
119
|
Gateway-specific prompt-cache environment variables should be consumed by Gateway and passed to Runtime explicitly; Runtime does not read the Gateway env namespace directly.
|
|
120
120
|
|
|
121
|
-
Hosts can inspect, prepare, and
|
|
121
|
+
Hosts can inspect, prepare, and clean up caches through `abstractruntime.integrations.abstractcore.get_abstractcore_host_facade(runtime)`, which exposes the normal prompt-cache/model-residency controls plus durable bloc helpers such as `upsert_text_bloc(...)`, `ensure_bloc_kv_artifact(...)`, `load_bloc_kv_artifact(...)`, `list_bloc_kv_artifacts(...)`, `delete_bloc_kv_artifact(...)`, and `delete_bloc(...)` without depending on the private runtime attachment directly.
|
|
122
122
|
Docs: `integrations/abstractcore.md`. Code: `src/abstractruntime/integrations/abstractcore/host_facade.py`, `src/abstractruntime/integrations/abstractcore/llm_client.py`.
|
|
123
123
|
|
|
124
124
|
## Can a host still export or import local provider prompt caches?
|
|
@@ -286,6 +286,8 @@ If your `LedgerStore` supports subscriptions (or is wrapped with `ObservableLedg
|
|
|
286
286
|
|
|
287
287
|
Long-running generated media uses the same ledger stream. Runtime converts provider progress callbacks into `EMIT_EVENT` ledger records named `abstract.progress` with JSON-safe payloads such as `phase`, `step`, `total_steps`, `frame`, `total_frames`, and `progress`.
|
|
288
288
|
|
|
289
|
+
For the text of an answer while it is generated, register a live sink with `Runtime.set_live_delta_sink(sink)` and start the run with `_runtime.stream: True`. Live deltas never reach the ledger; see `integrations/abstractcore.md#live-token-streaming`.
|
|
290
|
+
|
|
289
291
|
Docs: `architecture.md`. Code: `src/abstractruntime/core/runtime.py` (`subscribe_ledger`), `src/abstractruntime/storage/observable.py`.
|
|
290
292
|
|
|
291
293
|
## What is “evidence capture”?
|
|
@@ -12,7 +12,7 @@ Remote-light runtime:
|
|
|
12
12
|
pip install abstractruntime
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
This installs AbstractCore 2.
|
|
15
|
+
This installs AbstractCore 2.16.0 or newer with remote provider, vision,
|
|
16
16
|
voice, audio, music, tool, and MCP-worker support. The base install is
|
|
17
17
|
remote-light: it can route multimodal workflows to hosted or OpenAI-compatible
|
|
18
18
|
endpoints, but it does not select local inferencer stacks such as MLX, vLLM,
|