AbstractRuntime 0.8.4__tar.gz → 0.8.5__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.8.4 → abstractruntime-0.8.5}/CHANGELOG.md +4 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/PKG-INFO +5 -5
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/README.md +1 -1
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/api.md +5 -1
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/getting-started.md +1 -1
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/integrations/abstractcore.md +17 -1
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/llms-full.txt +24 -4
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/llms.txt +2 -2
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/pyproject.toml +4 -4
- abstractruntime-0.8.5/release-notes.md +1 -0
- abstractruntime-0.8.5/src/abstractruntime/integrations/abstractcore/server_facade.py +32 -0
- abstractruntime-0.8.5/tests/test_abstractcore_server_facade.py +72 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_packaging_extras.py +3 -3
- abstractruntime-0.8.4/release-notes.md +0 -2
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/.gitignore +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/CODE_OF_CONDUCT.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/CONTRIBUTING.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/LICENSE +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/ROADMAP.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/SECURITY.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/architecture.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/artifacts.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/automations.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/0847_automations_v1_controller_contracts_occurrences_triggers.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/0848_automations_v2_external_event_inbox_and_run_triggers.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_portability/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/email.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/entity-runtime.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/evidence.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/faq.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/limits.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/manual_testing.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/proposal.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/provenance.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/snapshots.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/tool-approval.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/tools-comms.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/troubleshooting.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/05_persistence.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/examples/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/mkdocs.yml +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/pytest.ini +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/scripts/backfill_diary_edges.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/scripts/generate_llms_full.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automation_queries.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/adapters.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/attention.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/bundle.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/bundles/automation-controller/flows/controller.json +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/bundles/automation-controller/manifest.json +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/commands.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/controller.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/ledger.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/models.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/automations/service.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/effect_cancellation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/health.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/live_deltas.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/progress_channel.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/run_attribution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/run_identity.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/run_lifecycle.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/runtime.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/tool_scope.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/documents/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/documents/charts.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/documents/docx.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/documents/pdf.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/actions.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/automations.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/binding.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/feeder.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/frame.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/email/inbox.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/act_only.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/chat.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/communities.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/diary.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/digest.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/entity_runtime.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/lease.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/life.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/memory_reader.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/night_voice.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/phase_graph.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/phase_spec.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/prelude.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/prompt_overlay.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/reflection.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/substrate.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/tool_effects.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/tool_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/identity/visit_workflow.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/config_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/email_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/llm_client.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/mcp_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/tool_effects.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/scheduler/multi_store.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/session_history.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/session_turns.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/lease.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/ledger_slim.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/serialize.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/storage/steer_sidecar.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/email_received.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/manual.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/protocol.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/triggers/schedule.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/turn_grounding.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/utils/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/utils/atomic_files.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/utils/file_filters.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/utils/workspace_paths.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/README.md +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/automation_harness.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/conftest.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/email_wp2_support.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/live_email/conftest.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/live_email/live_email_support.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/live_email/test_email_live_runtime.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_abstractcore_discovery_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_abstractcore_host_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_abstractcore_run_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_agora_agent_alias_identity.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_agora_tools_http.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_analyze_media_addressing_and_walling.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_commands.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_controller.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_controller_recovery.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_definition.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_discussion_isolation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_email_results.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_growing_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_index.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_next_fire.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_occurrence_recovery.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_replay_read_only.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_retry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_session_turns.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_status.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_automation_tool_approval.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_browser_probe_target_walling.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_budget_law_no_unrequested_caps.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_capability_default_reasoning.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_code_node_restricted_python.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_command_store.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_compaction_summarizer_route.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_config_facade_models_engines.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_controller_bundle_packaged.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_crash_ordering_inversions.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_create_if_absent.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_data_registry_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_camera_gating.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_include_skim_web.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_diary_capture.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_diary_write_rescue.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_directory_lease.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_disabled_toolsets_seam.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_discovery_survives_unbuildable_default.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_discovery_tts_unavailable_reason.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_discovery_voice_openai_api_key.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_discussion_session_anchor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_document_markdown_tables.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_document_renderers_hr_quote.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_durable_write_discipline.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_effect_cancellation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_effect_issuance_idempotency.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_effect_payload_stays_json_serializable.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_election_consequence_teaching.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_binding_and_refiner.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_gate_fixes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_inbox_and_trigger.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_regate_fixes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_review_fixes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_self_trigger_loop.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_email_toolset_and_walls.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_emergence_experiment.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_emit_event_uses_wait_index.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_endpoint_profile_route_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_awake_memory_fixes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_brain_effects.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_chat_driver.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_chat_tools_reflection.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_diary.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_execute_tool.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_fetch_url_tool.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_history_window.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_life_loop.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_memory_richness.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_phase_graph_conformance.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_react_visit_window.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_recent_memories.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_runtime.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_search_memory.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_substrate_resolution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_visit_honesty.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_workspace_cap.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_entity_workspace_tools.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_event_wait_index.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_execute_command_output_offload.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_execution_capability_discovery.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_explicit_eject_other_clients.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_factory_default_retry_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_format_repair_nudge.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_fresh_install_no_provider.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_gateway_facades_c4899.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_git_read_only_refiner.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_hf_process_residency_merge.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_history_window_multimodal.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_hot_path_store_reads.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_indexed_idempotency_lookup.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_json_run_cache_bound.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_json_store_scan_memo.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_ledger_record_slimming.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_live_token_deltas.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_payload_shape_refusal.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_text_phase_progress.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_client_grounding_tail.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_retry_classification.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_llm_streaming_on_token.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_local_helper_tool_exposure.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_local_residency_host_sweep.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_max_iterations_ceiling.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mcp_runs_untrusted_and_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_media_capability_default_routing.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_media_only_requests_skip_text_client.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_media_subprocess.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_appraise_handler.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_communities.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_seam_handlers.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_seam_sqlite_durability.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_mlx_process_residency_merge.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_model_eject_cancel.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_model_residency_clean_switch.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_model_residency_control_plane.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_multi_store_scheduler.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_multimodal_abstractcore_integration.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_native_mlx_application_wiring.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_native_mlx_execution_controls_live.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_native_tool_channel.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_night_voice.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_no_default_provider_refusal_ux.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_offload_answer_chain_c4978.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_offloading.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_parallel_readonly_tool_execution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_pdf_unicode_rendering.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_personal_cycle.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_phantom_attachment_index.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_phase_graph_artifact_control.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_phase_graph_obedience.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_phase_vocabulary_migration.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_cache_modules.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_cache_posture_inheritance.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_prompt_overlay.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_provider_endpoint_profile_resolution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_provider_pin_routing_isolation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_read_idle_threading.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_readoption_experiment.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_realize_election.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_remote_client_cancel.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_remote_speculation_defaults.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_report_branding.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_resident_media_generation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_resume_concurrent_same_wait.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_run_index_workspace_root.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_run_mutation_lock.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_run_scoped_tool_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_run_tool_scope_ceiling.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_browser_session_boundary.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_default_provider_model_refresh.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_effect_invocation_trace.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_health_and_bounded_vars.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_runtime_tick_step_gate.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_send_email_refiner.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_send_email_self_default_policy.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_history.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_prompt_cache_attribution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_prompt_cache_visibility.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_route_stamp.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_session_start_cost.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_shell_tool_exposure.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_speculation_inheritance.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_speculation_reaches_provider_construction.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_steer_sidecar.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_storage_deletion.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_thinking_inheritance.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_approval_wait_key_identity.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_catalog.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_descriptor_registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_inventory_facade.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_invoke_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_policy_and_mounts.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_topic_election_world_model.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_trigger_registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_trigger_schedule_math.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_turn_grounding_byte_stability.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_turn_grounding_carriers_a3.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visit_ab_fixture.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visit_midturn_elections.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visit_midturn_resume.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visit_workflow.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_entity_memory_nodes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_llm_call_partial_override.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_unknown_node_type_refuses.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_agora_react_agent.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_continue_on_error.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_edit_json_schema_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_file_nodes_workspace.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_function_library.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_get_var_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_media_nodes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_pin_expressions.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_schema_enum_switch.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_voice_openai_api_key_path.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_w4_feelings_lens.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_wait_event_deadline.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_wait_until_streak.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_wait_until_utc_normalization.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_builtin_deny.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_prompt_context.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_workspace_read_only.py +0 -0
- {abstractruntime-0.8.4 → abstractruntime-0.8.5}/tests/test_write_chart.py +0 -0
|
@@ -9,6 +9,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
9
9
|
|
|
10
10
|
Nothing yet.
|
|
11
11
|
|
|
12
|
+
## [0.8.5] - 2026-10-03
|
|
13
|
+
|
|
14
|
+
- Hosts can serve AbstractCore ASGI requests through `integrations.abstractcore.server_facade.serve_core_request`, with independent request-scoped authentication preserved throughout streaming. Requires AbstractCore 2.24.0 or newer.
|
|
15
|
+
|
|
12
16
|
## [0.8.4] - 2026-10-02
|
|
13
17
|
|
|
14
18
|
- Automations accept `context.growing.max_tokens` at creation and revision, defaulting to 50,000 tokens. Whole-turn history and admitted retry inputs are preserved.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.5
|
|
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>=2.
|
|
23
|
+
Requires-Dist: abstractcore>=2.24.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[apple]>=2.
|
|
38
|
+
Requires-Dist: abstractcore[apple]>=2.24.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[gpu]>=2.
|
|
45
|
+
Requires-Dist: abstractcore[gpu]>=2.24.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: aiosmtpd<2.0.0,>=1.4.4; extra == 'test'
|
|
@@ -83,7 +83,7 @@ Remote-light runtime:
|
|
|
83
83
|
pip install abstractruntime
|
|
84
84
|
```
|
|
85
85
|
|
|
86
|
-
The base install includes AbstractCore 2.
|
|
86
|
+
The base install includes AbstractCore 2.24.0 or newer (its light install:
|
|
87
87
|
remote providers, tools, vision, voice, audio, and music integration), plus the
|
|
88
88
|
`abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
|
|
89
89
|
default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
|
|
@@ -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.24.0 or newer (its light install:
|
|
36
36
|
remote providers, tools, 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
|
|
@@ -302,7 +302,7 @@ from Core route resolution and persisted from `LLM_CALL` results.
|
|
|
302
302
|
|
|
303
303
|
### AbstractCore (LLM + tools)
|
|
304
304
|
|
|
305
|
-
Requires: `pip install abstractruntime` (AbstractCore 2.
|
|
305
|
+
Requires: `pip install abstractruntime` (AbstractCore 2.24.0 or newer is part of the base install).
|
|
306
306
|
|
|
307
307
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
308
308
|
|
|
@@ -391,3 +391,7 @@ This provides handlers for `MEMORY_KG_*` effects (opt-in wiring layer).
|
|
|
391
391
|
- `architecture.md` — component map + durability invariants
|
|
392
392
|
- `faq.md` — common questions and gotchas
|
|
393
393
|
- `integrations/abstractcore.md` — `LLM_CALL` / `TOOL_CALLS` wiring
|
|
394
|
+
|
|
395
|
+
### Host ASGI serving
|
|
396
|
+
|
|
397
|
+
`abstractruntime.integrations.abstractcore.server_facade.serve_core_request(scope, receive, send, *, token: str, allow_unauthenticated: bool = False)` delegates host-admitted ASGI requests with request-scoped Core authentication. See [host-managed serving](integrations/abstractcore.md#host-managed-serving) for network and credential responsibilities.
|
|
@@ -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.24.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,
|
|
@@ -16,7 +16,7 @@ Implementation pointers (this repo):
|
|
|
16
16
|
pip install abstractruntime
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
The base install includes AbstractCore 2.
|
|
19
|
+
The base install includes AbstractCore 2.24.0 or newer. That is the supported baseline for the current server auth split (`Authorization` for server auth, `X-AbstractCore-Provider-API-Key` for provider overrides), generated-media contracts, image upscaling, capability catalog, prompt-cache control-plane endpoints (including session attribution via `/acore/prompt_cache/key_meta`), host memory snapshots, the host-wide loaded-model sweep used by residency listings, the process-wide MLX residency report and eject used by model unload, durable bloc prompt-cache helpers, bindings and lifecycle operations, task-aware model residency for text/image/video/TTS/STT, current tool catalog, AbstractCore's public output-selector contract, async/sync text-generation output-selector parity, video generation endpoints, the public local vision-cache catalog helper used by Runtime discovery, vision adapter discovery plus batch/LoRA media controls, and the released shared workspace/file-filter utility surface used by Runtime packaging and integration checks.
|
|
20
20
|
|
|
21
21
|
The base install also includes the remote-light media/capability plugins needed
|
|
22
22
|
for AbstractCore's multimodal `generate(..., output=...)` path. Local
|
|
@@ -1168,3 +1168,19 @@ This is useful when building a `MappingToolExecutor` quickly.
|
|
|
1168
1168
|
- `../architecture.md` — effect handler boundaries and durability invariants
|
|
1169
1169
|
- `../tools-comms.md` — enabling email/WhatsApp/Telegram tools
|
|
1170
1170
|
- `../adr/0002_execution_modes_local_remote_hybrid.md` — rationale for local/remote/hybrid
|
|
1171
|
+
|
|
1172
|
+
## Host-managed serving
|
|
1173
|
+
|
|
1174
|
+
Hosts that expose AbstractCore serving routes use
|
|
1175
|
+
`abstractruntime.integrations.abstractcore.server_facade.serve_core_request(scope, receive, send, *, token, allow_unauthenticated=False)`.
|
|
1176
|
+
The facade lazily loads the Core ASGI application and keeps the host's independent
|
|
1177
|
+
inbound authentication policy scoped to the entire response, including streamed
|
|
1178
|
+
bodies. Concurrent requests retain separate policies; cancellation and exceptions
|
|
1179
|
+
restore the previous policy.
|
|
1180
|
+
|
|
1181
|
+
The host owns route admission, network exposure, origin checks, and token storage.
|
|
1182
|
+
Provide a nonempty token even for open access: absent Authorization is allowed when
|
|
1183
|
+
`allow_unauthenticated=True`, while any supplied Authorization must validate.
|
|
1184
|
+
Anonymous callers cannot use server-held cloud credentials; explicit provider
|
|
1185
|
+
keys use `X-AbstractCore-Provider-API-Key`. This serving facade does not create
|
|
1186
|
+
durable Runtime runs. The AbstractCore server dependencies must be installed.
|
|
@@ -81,7 +81,7 @@ Remote-light runtime:
|
|
|
81
81
|
pip install abstractruntime
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
The base install includes AbstractCore 2.
|
|
84
|
+
The base install includes AbstractCore 2.24.0 or newer (its light install:
|
|
85
85
|
remote providers, tools, vision, voice, audio, and music integration), plus the
|
|
86
86
|
`abstractruntime-mcp-worker` entry point. It keeps inference remote/light by
|
|
87
87
|
default: local engines such as MLX, vLLM, HuggingFace/Torch, Diffusers, and
|
|
@@ -287,7 +287,7 @@ Remote-light runtime:
|
|
|
287
287
|
pip install abstractruntime
|
|
288
288
|
```
|
|
289
289
|
|
|
290
|
-
This installs AbstractCore 2.
|
|
290
|
+
This installs AbstractCore 2.24.0 or newer with remote provider, vision,
|
|
291
291
|
voice, audio, music, tool, and MCP-worker support. The base install is
|
|
292
292
|
remote-light: it can route multimodal workflows to hosted or OpenAI-compatible
|
|
293
293
|
endpoints, but it does not select local inferencer stacks such as MLX, vLLM,
|
|
@@ -1167,7 +1167,7 @@ from Core route resolution and persisted from `LLM_CALL` results.
|
|
|
1167
1167
|
|
|
1168
1168
|
### AbstractCore (LLM + tools)
|
|
1169
1169
|
|
|
1170
|
-
Requires: `pip install abstractruntime` (AbstractCore 2.
|
|
1170
|
+
Requires: `pip install abstractruntime` (AbstractCore 2.24.0 or newer is part of the base install).
|
|
1171
1171
|
|
|
1172
1172
|
Implementation: `src/abstractruntime/integrations/abstractcore/*`.
|
|
1173
1173
|
|
|
@@ -1257,6 +1257,10 @@ This provides handlers for `MEMORY_KG_*` effects (opt-in wiring layer).
|
|
|
1257
1257
|
- `faq.md` — common questions and gotchas
|
|
1258
1258
|
- `integrations/abstractcore.md` — `LLM_CALL` / `TOOL_CALLS` wiring
|
|
1259
1259
|
|
|
1260
|
+
### Host ASGI serving
|
|
1261
|
+
|
|
1262
|
+
`abstractruntime.integrations.abstractcore.server_facade.serve_core_request(scope, receive, send, *, token: str, allow_unauthenticated: bool = False)` delegates host-admitted ASGI requests with request-scoped Core authentication. See [host-managed serving](integrations/abstractcore.md#host-managed-serving) for network and credential responsibilities.
|
|
1263
|
+
|
|
1260
1264
|
|
|
1261
1265
|
==============================================================================
|
|
1262
1266
|
# FILE: docs/faq.md
|
|
@@ -1978,7 +1982,7 @@ Implementation pointers (this repo):
|
|
|
1978
1982
|
pip install abstractruntime
|
|
1979
1983
|
```
|
|
1980
1984
|
|
|
1981
|
-
The base install includes AbstractCore 2.
|
|
1985
|
+
The base install includes AbstractCore 2.24.0 or newer. That is the supported baseline for the current server auth split (`Authorization` for server auth, `X-AbstractCore-Provider-API-Key` for provider overrides), generated-media contracts, image upscaling, capability catalog, prompt-cache control-plane endpoints (including session attribution via `/acore/prompt_cache/key_meta`), host memory snapshots, the host-wide loaded-model sweep used by residency listings, the process-wide MLX residency report and eject used by model unload, durable bloc prompt-cache helpers, bindings and lifecycle operations, task-aware model residency for text/image/video/TTS/STT, current tool catalog, AbstractCore's public output-selector contract, async/sync text-generation output-selector parity, video generation endpoints, the public local vision-cache catalog helper used by Runtime discovery, vision adapter discovery plus batch/LoRA media controls, and the released shared workspace/file-filter utility surface used by Runtime packaging and integration checks.
|
|
1982
1986
|
|
|
1983
1987
|
The base install also includes the remote-light media/capability plugins needed
|
|
1984
1988
|
for AbstractCore's multimodal `generate(..., output=...)` path. Local
|
|
@@ -3131,6 +3135,22 @@ This is useful when building a `MappingToolExecutor` quickly.
|
|
|
3131
3135
|
- `../tools-comms.md` — enabling email/WhatsApp/Telegram tools
|
|
3132
3136
|
- `../adr/0002_execution_modes_local_remote_hybrid.md` — rationale for local/remote/hybrid
|
|
3133
3137
|
|
|
3138
|
+
## Host-managed serving
|
|
3139
|
+
|
|
3140
|
+
Hosts that expose AbstractCore serving routes use
|
|
3141
|
+
`abstractruntime.integrations.abstractcore.server_facade.serve_core_request(scope, receive, send, *, token, allow_unauthenticated=False)`.
|
|
3142
|
+
The facade lazily loads the Core ASGI application and keeps the host's independent
|
|
3143
|
+
inbound authentication policy scoped to the entire response, including streamed
|
|
3144
|
+
bodies. Concurrent requests retain separate policies; cancellation and exceptions
|
|
3145
|
+
restore the previous policy.
|
|
3146
|
+
|
|
3147
|
+
The host owns route admission, network exposure, origin checks, and token storage.
|
|
3148
|
+
Provide a nonempty token even for open access: absent Authorization is allowed when
|
|
3149
|
+
`allow_unauthenticated=True`, while any supplied Authorization must validate.
|
|
3150
|
+
Anonymous callers cannot use server-held cloud credentials; explicit provider
|
|
3151
|
+
keys use `X-AbstractCore-Provider-API-Key`. This serving facade does not create
|
|
3152
|
+
durable Runtime runs. The AbstractCore server dependencies must be installed.
|
|
3153
|
+
|
|
3134
3154
|
|
|
3135
3155
|
==============================================================================
|
|
3136
3156
|
# FILE: docs/proposal.md
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
> Durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
|
|
4
4
|
|
|
5
5
|
- Python: 3.10+ (see `pyproject.toml`)
|
|
6
|
-
- Version: 0.8.
|
|
6
|
+
- Version: 0.8.5
|
|
7
7
|
- Ecosystem: [AbstractFramework](https://github.com/lpalbou/AbstractFramework) umbrella, integrates with [AbstractCore](https://github.com/lpalbou/abstractcore)
|
|
8
8
|
- Hard invariant: `RunState.vars` must be JSON-serializable (`src/abstractruntime/core/models.py`)
|
|
9
|
-
- Current AbstractCore baseline: base `abstractruntime` requires AbstractCore 2.
|
|
9
|
+
- Current AbstractCore baseline: base `abstractruntime` requires AbstractCore 2.24.0 or newer with its light install (remote providers, tools and the MCP worker, media routing); `abstractruntime[apple]` and `abstractruntime[gpu]` require AbstractCore's `apple` and `gpu` settings (`pyproject.toml`)
|
|
10
10
|
- Install profiles: base `abstractruntime` is remote-light with MCP, generated media routing, and Runtime-owned permissive PDF read/write nodes; `abstractruntime[apple]` and `abstractruntime[gpu]` add local inferencer stacks.
|
|
11
11
|
- Config boundary: Runtime does not read `ABSTRACTGATEWAY_*`; Gateway-owned config should be translated into explicit Runtime inputs or Runtime-owned env names. Hosts can attach `resolve_provider_endpoint_profile(provider_id)` to the LLM client; Runtime treats it as an optional resolver hook, injects transient provider/base URL/key params for the call, and redacts secret-like params from persisted observability.
|
|
12
12
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "AbstractRuntime"
|
|
7
|
-
version = "0.8.
|
|
7
|
+
version = "0.8.5"
|
|
8
8
|
description = "AbstractRuntime: a durable graph runner designed to pair with AbstractCore."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -53,7 +53,7 @@ dependencies = [
|
|
|
53
53
|
# plugins) without selecting local inference engines. 2.19.2 floors
|
|
54
54
|
# abstractvision>=0.3.33, whose resident loads report `loaded_new` and whose
|
|
55
55
|
# unload frees the pipeline (the resident media path relies on both).
|
|
56
|
-
"abstractcore>=2.
|
|
56
|
+
"abstractcore>=2.24.0",
|
|
57
57
|
"openai<3.0.0,>=1.109.1",
|
|
58
58
|
"httpx<1.0.0,>=0.28.1",
|
|
59
59
|
"anyio<5.0.0,>=4.12.1",
|
|
@@ -70,12 +70,12 @@ dependencies = [
|
|
|
70
70
|
|
|
71
71
|
[project.optional-dependencies]
|
|
72
72
|
apple = [
|
|
73
|
-
"abstractcore[apple]>=2.
|
|
73
|
+
"abstractcore[apple]>=2.24.0",
|
|
74
74
|
"setuptools<82.0.0,>=80.10.2",
|
|
75
75
|
]
|
|
76
76
|
|
|
77
77
|
gpu = [
|
|
78
|
-
"abstractcore[gpu]>=2.
|
|
78
|
+
"abstractcore[gpu]>=2.24.0",
|
|
79
79
|
# vLLM 0.9-0.19 caps setuptools below 80; 77.0.3 is still a modern floor.
|
|
80
80
|
"setuptools<82.0.0,>=77.0.3",
|
|
81
81
|
]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
- Hosts can serve AbstractCore ASGI requests through `integrations.abstractcore.server_facade.serve_core_request`, with independent request-scoped authentication preserved throughout streaming. Requires AbstractCore 2.24.0 or newer.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Host-facing ASGI delegation to AbstractCore's serving application.
|
|
2
|
+
|
|
3
|
+
Hosts own route admission, network policy, and token storage. This facade keeps
|
|
4
|
+
Core imports behind Runtime's integration boundary and scopes authentication to
|
|
5
|
+
one complete ASGI response, including streamed bodies.
|
|
6
|
+
"""
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import asyncio
|
|
10
|
+
import importlib
|
|
11
|
+
from typing import Any, Awaitable, Callable, MutableMapping
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
async def serve_core_request(
|
|
15
|
+
scope: MutableMapping[str, Any],
|
|
16
|
+
receive: Callable[[], Awaitable[dict[str, Any]]],
|
|
17
|
+
send: Callable[[dict[str, Any]], Awaitable[None]],
|
|
18
|
+
*,
|
|
19
|
+
token: str,
|
|
20
|
+
allow_unauthenticated: bool = False,
|
|
21
|
+
) -> None:
|
|
22
|
+
"""Serve a host-admitted request using an independent inbound auth policy.
|
|
23
|
+
|
|
24
|
+
Requires the AbstractCore server dependencies. Importing this module does
|
|
25
|
+
not load Core or its application. The host must provide a nonempty token,
|
|
26
|
+
even when allowing anonymous requests; supplied credentials still validate.
|
|
27
|
+
"""
|
|
28
|
+
module = await asyncio.to_thread(importlib.import_module, "abstractcore.server.app")
|
|
29
|
+
from abstractcore.server.auth_policy import ServerAuthPolicy, use_server_auth_policy
|
|
30
|
+
|
|
31
|
+
with use_server_auth_policy(ServerAuthPolicy(token, allow_unauthenticated)):
|
|
32
|
+
await module.app(scope, receive, send)
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"""The host facade preserves ASGI streaming and request-local auth."""
|
|
2
|
+
import asyncio
|
|
3
|
+
import importlib
|
|
4
|
+
import threading
|
|
5
|
+
from types import SimpleNamespace
|
|
6
|
+
|
|
7
|
+
import pytest
|
|
8
|
+
|
|
9
|
+
from abstractruntime.integrations.abstractcore import server_facade
|
|
10
|
+
from abstractcore.server.auth_policy import current_server_auth_policy
|
|
11
|
+
|
|
12
|
+
pytestmark = pytest.mark.basic
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def test_concurrent_streams_keep_separate_auth_and_import_off_loop(monkeypatch):
|
|
16
|
+
main_thread = threading.get_ident()
|
|
17
|
+
imports = []
|
|
18
|
+
barrier = None
|
|
19
|
+
seen = []
|
|
20
|
+
|
|
21
|
+
async def app(scope, receive, send):
|
|
22
|
+
policy = current_server_auth_policy()
|
|
23
|
+
assert policy.token == scope["token"]
|
|
24
|
+
await send({"type": "http.response.start", "status": 200, "headers": []})
|
|
25
|
+
await send({"type": "http.response.body", "body": b"first", "more_body": True})
|
|
26
|
+
await barrier.wait()
|
|
27
|
+
assert current_server_auth_policy() is policy
|
|
28
|
+
seen.append((policy.token, policy.allow_unauthenticated))
|
|
29
|
+
await send({"type": "http.response.body", "body": b"last"})
|
|
30
|
+
|
|
31
|
+
def load(name):
|
|
32
|
+
imports.append((name, threading.get_ident()))
|
|
33
|
+
return SimpleNamespace(app=app)
|
|
34
|
+
|
|
35
|
+
monkeypatch.setattr(server_facade.importlib, "import_module", load)
|
|
36
|
+
|
|
37
|
+
async def run():
|
|
38
|
+
nonlocal barrier
|
|
39
|
+
barrier = asyncio.Event()
|
|
40
|
+
bodies = {"one": [], "two": []}
|
|
41
|
+
async def receive():
|
|
42
|
+
return {"type": "http.disconnect"}
|
|
43
|
+
async def invoke(token, anonymous):
|
|
44
|
+
async def send(message):
|
|
45
|
+
bodies[token].append(message)
|
|
46
|
+
if all(any(m.get("more_body") for m in messages) for messages in bodies.values()):
|
|
47
|
+
barrier.set()
|
|
48
|
+
await server_facade.serve_core_request({"token": token}, receive, send, token=token, allow_unauthenticated=anonymous)
|
|
49
|
+
assert current_server_auth_policy() is None
|
|
50
|
+
await asyncio.gather(invoke("one", False), invoke("two", True))
|
|
51
|
+
assert all(messages[-1]["body"] == b"last" for messages in bodies.values())
|
|
52
|
+
asyncio.run(run())
|
|
53
|
+
assert sorted(seen) == [("one", False), ("two", True)]
|
|
54
|
+
assert all(name == "abstractcore.server.app" and thread != main_thread for name, thread in imports)
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
@pytest.mark.parametrize("error", [RuntimeError("stream failed"), asyncio.CancelledError()])
|
|
58
|
+
def test_policy_resets_on_failure_or_cancellation(monkeypatch, error):
|
|
59
|
+
async def app(scope, receive, send):
|
|
60
|
+
assert current_server_auth_policy().token == "managed"
|
|
61
|
+
await asyncio.sleep(0)
|
|
62
|
+
raise error
|
|
63
|
+
monkeypatch.setattr(server_facade.importlib, "import_module", lambda name: SimpleNamespace(app=app))
|
|
64
|
+
async def run():
|
|
65
|
+
async def receive():
|
|
66
|
+
return {"type": "http.disconnect"}
|
|
67
|
+
async def send(message):
|
|
68
|
+
pass
|
|
69
|
+
with pytest.raises(type(error)):
|
|
70
|
+
await server_facade.serve_core_request({}, receive, send, token="managed")
|
|
71
|
+
assert current_server_auth_policy() is None
|
|
72
|
+
asyncio.run(run())
|
|
@@ -52,7 +52,7 @@ def test_runtime_base_is_remote_light_with_multimodal_and_mcp_support() -> None:
|
|
|
52
52
|
assert "abstractcore = [" not in text
|
|
53
53
|
assert "multimodal = [" not in text
|
|
54
54
|
assert "mcp-worker = [" not in text
|
|
55
|
-
assert '"abstractcore>=2.
|
|
55
|
+
assert '"abstractcore>=2.24.0"' in text
|
|
56
56
|
# Only AbstractCore's three install settings: light (no extra), apple, gpu.
|
|
57
57
|
assert re.findall(r'"abstractcore\[([^\]]*)\]', text) == ["apple", "gpu"]
|
|
58
58
|
assert '"openai<3.0.0,>=1.109.1"' in text
|
|
@@ -89,8 +89,8 @@ def test_runtime_exposes_only_apple_and_gpu_user_install_profiles() -> None:
|
|
|
89
89
|
apple_block = _extract_optional_dependency_block(text, key="apple")
|
|
90
90
|
gpu_block = _extract_optional_dependency_block(text, key="gpu")
|
|
91
91
|
|
|
92
|
-
assert '"abstractcore[apple]>=2.
|
|
93
|
-
assert '"abstractcore[gpu]>=2.
|
|
92
|
+
assert '"abstractcore[apple]>=2.24.0"' in apple_block
|
|
93
|
+
assert '"abstractcore[gpu]>=2.24.0"' in gpu_block
|
|
94
94
|
assert '"setuptools<82.0.0,>=80.10.2"' in apple_block
|
|
95
95
|
assert '"setuptools<82.0.0,>=77.0.3"' in gpu_block
|
|
96
96
|
assert "pymupdf" not in apple_block.lower()
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
- Automations accept `context.growing.max_tokens` at creation and revision, defaulting to 50,000 tokens. Whole-turn history and admitted retry inputs are preserved.
|
|
2
|
-
- Email-enabled automations produce a result notification for every completed occurrence, with the full answer and configurable `notify.recipients`.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0001_layered_coupling_with_abstractcore.md
RENAMED
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/adr/0002_execution_modes_local_remote_hybrid.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/001_runtime_kernel.md
RENAMED
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/002_persistence_and_ledger.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/003_wait_primitives.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/004_scheduler_driver.md
RENAMED
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/006_snapshots_bookmarks.md
RENAMED
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/007_provenance_hash_chain.md
RENAMED
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/009_artifact_store.md
RENAMED
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/completed/011_subworkflow_support.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/001_runtime_kernel.md
RENAMED
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/002_snapshots_bookmarks.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/deprecated/DEPRECATED_README.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/008_signatures_and_keys.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/0233_real_run_cancellation.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{abstractruntime-0.8.4 → abstractruntime-0.8.5}/docs/backlog/planned/runtime_portability/README.md
RENAMED
|
File without changes
|