AbstractRuntime 0.18.0__tar.gz → 0.18.2__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.18.0 → abstractruntime-0.18.2}/CHANGELOG.md +18 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/PKG-INFO +14 -2
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/README.md +13 -1
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/digital-identity.md +2 -1
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/replay.md +5 -1
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/llms-full.txt +20 -3
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/llms.txt +1 -1
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/pyproject.toml +1 -1
- abstractruntime-0.18.2/release-notes.md +3 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/skills/abstractruntime/SKILL.md +2 -2
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +4 -9
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/view.py +42 -2
- abstractruntime-0.18.2/tests/test_embeddings_import_errors.py +29 -0
- abstractruntime-0.18.2/tests/test_replay_public_update_identity_ref.py +97 -0
- abstractruntime-0.18.0/release-notes.md +0 -86
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/.github/workflows/changelog.yml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/.github/workflows/ci.yml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/.github/workflows/release.yml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/.gitignore +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/ACKNOWLEDGMENTS.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/CODE_OF_CONDUCT.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/CONTRIBUTING.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/LICENSE +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/ROADMAP.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/SECURITY.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/changelog.d/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0008_integration_facades_are_the_complete_host_surface.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0010_one_replay_many_views.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/0011_memory_facade_is_the_complete_host_surface_for_abstractmemory.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/adr/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/api.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/architecture.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/artifacts.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/automations.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/001_runtime_kernel.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/003_wait_primitives.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/004_scheduler_driver.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/009_artifact_store.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/010_examples_and_composition.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/011_subworkflow_support.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0847_automations_v1_controller_contracts_occurrences_triggers.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0851_per_account_voice_stores.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0852_capability_refusals_are_not_retried.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0855_prefix_stability_contract_of_consecutive_llm_calls.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0856_memory_facade_and_ledger_provenance.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0862_is_empty_accepts_lists.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0863_index_build_never_loses_a_run_created_during_it.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/0864_facade_catalog_hub_search_pages.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/004_tests.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/005_docs_updates.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0848_automations_v2_external_event_inbox_and_run_triggers.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0853_session_tool_policy_before_the_approval_wait.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0854_replay_view.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0857_entity_direct_memory_writes_provenance.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0858_typed_runs_run_type_stamped_at_start.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0859_replay_view_ephemeral_text_deltas.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/0866_queued_state_in_the_ledger_and_pools_lend_never_build.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_portability/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0849_conversation_search_tool_usage_outputs_and_thinking.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0850_growing_automation_history_out_of_the_controller_ledger.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0860_replay_view_stop_wording_from_the_ledger.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0861_replay_view_activity_tool_sandbox_and_call_timings.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0862_replay_view_message_artifacts_exclude_bookkeeping.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/0865_model_loaded_ledger_event.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/email.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/entity-runtime.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/evidence.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/faq.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/getting-started.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/integrations/abstractcore.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/integrations/abstractmemory.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/limits.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/manual_testing.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/mcp-worker.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/proposal.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/provenance.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/snapshots.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/tool-approval.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/tools-comms.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/track-record.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/troubleshooting.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/docs/workflow-bundles.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/01_hello_world.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/02_ask_user.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/03_wait_until.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/04_multi_step.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/05_persistence.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/06_llm_integration.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/07_react_agent.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/examples/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/mkdocs.yml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/pytest.ini +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/scripts/backfill_diary_edges.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/scripts/changelog.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/scripts/generate_llms_full.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/scripts/regen_replay_conformance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automation_queries.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/adapters.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/attention.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/bundle.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/bundles/automation-controller/flows/controller.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/bundles/automation-controller/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/commands.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/consumers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/controller.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/ledger.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/models.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/samples.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/service.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/automations/wakes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/conversation_search.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/config.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/effect_cancellation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/event_keys.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/health.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/live_deltas.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/models.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/progress_channel.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/publish.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/questions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/run_attribution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/run_identity.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/run_lifecycle.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/run_origin.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/runtime.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/spec.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/step_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/tool_scope.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/core/vars.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/documents/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/documents/charts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/documents/docx.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/documents/pdf.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/actions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/automations.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/binding.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/feeder.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/frame.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/email/inbox.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/evidence/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/evidence/recorder.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/history_bundle.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/acquaintances.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/act_only.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/chat.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/communities.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/diary.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/digest.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/digital_identity.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/entity_runtime.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/fingerprint.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/lease.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/life.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/memory_reader.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/night_voice.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/phase_graph.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/phase_spec.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/prelude.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/prompt_overlay.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/reflection.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/substrate.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/tool_effects.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/tool_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/track_record.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/identity/visit_workflow.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/command_sandbox_host.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/config_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/email_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/llm_client.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/mcp_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/server_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/structured_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/structured_output.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/tool_effects.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/voice_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/voice_library.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/memory_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/mail_verbs.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/active_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/active_memory.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/compaction.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/kg_packets.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/memact_composer.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/recall_levels.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/memory/token_budget.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/rendering/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/rendering/json_stringify.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a_delegated_child_approval/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a_delegated_child_approval/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a_delegated_child_approval/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/a_delegated_child_approval/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/b_timer_without_resume/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/b_timer_without_resume/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/b_timer_without_resume/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/b_timer_without_resume/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/d_cancellation/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/d_cancellation/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/d_cancellation/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/d_cancellation/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e_structured_output_agents/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e_structured_output_agents/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e_structured_output_agents/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/e_structured_output_agents/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/f_windowed_slim/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/f_windowed_slim/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/f_windowed_slim/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/f_windowed_slim/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/g_ask_user/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/g_ask_user/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/g_ask_user/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/g_ask_user/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/h_denied_approval/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/h_denied_approval/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/h_denied_approval/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/h_denied_approval/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/i_wait_kinds/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/i_wait_kinds/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/i_wait_kinds/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/i_wait_kinds/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/k_nested_delegation/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/k_nested_delegation/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/k_nested_delegation/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/k_nested_delegation/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/l_answer_then_completion/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/l_answer_then_completion/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/l_answer_then_completion/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/l_answer_then_completion/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/m_session_tool_policy/expected_view.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/m_session_tool_policy/manifest.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/m_session_tool_policy/records.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/conformance/m_session_tool_policy/runs.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/delta.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/replay/executions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/scheduler/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/scheduler/convenience.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/scheduler/multi_store.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/scheduler/registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/scheduler/scheduler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/session_history.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/session_turns.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/artifacts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/base.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/change_ring.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/commands.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/in_memory.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/json_files.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/lease.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/ledger_chain.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/ledger_slim.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/observable.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/offloading.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/serialize.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/session_tool_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/snapshots.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/sqlite.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/storage/steer_sidecar.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/cloudevents.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/connection_events.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/connections.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/email_received.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/event_frame.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/feed.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/manual.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/protocol.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/schedule.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/triggers/webhook.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/turn_grounding.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/utils/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/utils/atomic_files.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/utils/file_filters.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/utils/workspace_paths.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/loop_back_check.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/loop_limit_lowering.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/visualflow_compiler/visual/reroute_lowering.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/workflow_bundle/models.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/workflow_bundle/packer.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/workflow_bundle/reader.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/src/abstractruntime/workflow_bundle/registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/README.md +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/automation_harness.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/conftest.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/email_wp2_support.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/feeds/atom.xml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/feeds/rdf-not-a-feed.xml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/feeds/rss1-malformed.xml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/feeds/rss1.xml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/feeds/rss2.xml +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/schedule_v1_corpus.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/visualflow/compare_text_operands.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/visualflow/typed_literals_flow.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/fixtures/visualflow/typed_literals_flow.legacy.json +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/live_email/conftest.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/live_email/live_email_support.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/live_email/test_email_live_runtime.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/media_endpoint_profile_probe.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_comms_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_discovery_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_host_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_run_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_server_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_structured_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_abstractcore_telegram_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_active_consumers_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_active_context_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_active_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_active_memory.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_agora_agent_alias_identity.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_agora_tools_http.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_analyze_media_addressing_and_walling.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_answer_user_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_artifact_session_candidates.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_artifacts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_calendar_schedule.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_commands.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_controller.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_controller_recovery.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_definition.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_discussion_isolation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_email_results.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_growing_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_list_reads.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_named_policy_compiler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_next_fire.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_occurrence_error.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_occurrence_input_resolver.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_occurrence_recovery.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_replay_read_only.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_retry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_session_turns.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_status.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_automation_tool_approval.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_browser_probe_target_walling.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_budget_law_no_unrequested_caps.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_capability_default_reasoning.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_changelog_fragments.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_chat_summarizer_integration.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_code_node_imports.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_code_node_restricted_python.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_command_sandbox_host_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_command_store.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_compaction_helpers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_compaction_summarizer_route.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_config_facade_model_contexts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_config_facade_models_engines.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_config_facade_voice_input_hint.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_control_adapter_while.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_controller_bundle_packaged.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_conversation_search.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_conversational_questions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_crash_ordering_inversions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_create_if_absent.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_data_registry_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_decision_facade_and_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_decision_output.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_model_warmup_switch.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_camera_gating.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_comms_gating.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_include_skim_files.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_include_skim_folders.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_include_skim_web.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_default_tools_search_files_executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_diary_capture.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_diary_write_rescue.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_digital_identity.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_directory_lease.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_disabled_toolsets_seam.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_discovery_facade_model_errors.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_discovery_survives_unbuildable_default.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_discovery_tts_unavailable_reason.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_discovery_voice_openai_api_key.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_discussion_session_anchor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_document_markdown_tables.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_document_renderers_hr_quote.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_duck_typed_store_session_attribution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_durable_toolsets.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_durable_write_discipline.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_effect_cancellation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_effect_interrupted.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_effect_issuance_idempotency.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_effect_payload_stays_json_serializable.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_election_consequence_teaching.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_binding_and_refiner.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_feeder_batched.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_feeder_flags.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_gate_fixes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_inbox_and_trigger.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_received_mailbox_id.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_regate_fixes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_review_fixes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_self_trigger_loop.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_stream_consumers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_email_toolset_and_walls.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_emergence_experiment.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_emit_event_uses_wait_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_emit_event_without_workflow_registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_endpoint_profile_media_end_to_end.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_endpoint_profile_media_in_process.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_endpoint_profile_media_specs_keep_provider.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_endpoint_profile_route_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_awake_memory_fixes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_brain_effects.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_chat_driver.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_chat_tools_reflection.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_diary.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_execute_tool.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_fetch_url_tool.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_history_window.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_life_loop.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_memory_richness.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_phase_graph_conformance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_react_visit_window.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_recent_memories.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_runtime.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_search_memory.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_substrate_resolution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_visit_honesty.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_workspace_cap.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_entity_workspace_tools.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_event_index_cross_process.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_event_wait_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_evidence_recorder.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_execute_command_output_offload.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_execution_capability_discovery.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_explicit_eject_other_clients.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_factory_default_retry_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_format_repair_nudge.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_fresh_install_no_provider.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_gateway_facades_c4899.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_git_read_only_refiner.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_hf_process_residency_merge.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_history_window_multimodal.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_hot_path_store_reads.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_identity_acquaintances.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_identity_track_record.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_indexed_idempotency_lookup.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_integration_abstractcore.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_integrations_abstractcore.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_json_file_run_store_change_token_after_build.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_json_file_run_store_children_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_json_file_run_store_index_build_race.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_json_run_cache_bound.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_json_store_scan_memo.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_jsonl_ledger_recovery.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_jsonl_ledger_seq_cross_process.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_jsonl_row_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_kg_learn_and_recall_contract.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_ledger_chain.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_ledger_cursor_invariants.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_ledger_get_record.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_ledger_record_slimming.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_ledger_subscription.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_live_token_deltas.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_media_artifact_refs.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_payload_shape_refusal.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_prefix_stability_contract.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_requires_prompt.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_response_schema_normalization.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_structured_output_fallback.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_text_phase_progress.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_truncation_retry_contract.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_use_context_appends_turn.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_client_grounding_tail.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_client_media_artifacts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_client_system_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_client_tool_call_parsing.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_retry_classification.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_llm_streaming_on_token.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_local_helper_tool_exposure.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_local_residency_host_sweep.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mail_verbs.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mailbox_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_max_iterations_ceiling.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mcp_remote_tool_executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mcp_runs_untrusted_and_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mcp_worker_logging.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mcp_worker_security.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mcp_worker_stdio.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_media_artifact_resolution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_media_capability_default_routing.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_media_host_endpoint_resolver.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_media_only_requests_skip_text_client.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_media_subprocess.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memact_composer_from_kg_result.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_appraise_handler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_communities.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_packets.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_predicate_aliasing.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_query_packetization_restart.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_note_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_query_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_query_rich_filters.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_revise.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_seam_handlers.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_seam_sqlite_durability.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_step_provenance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_memory_tag_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mlx_generation_serialization.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_mlx_process_residency_merge.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_eject_cancel.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_idle_unload_relay.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_residency_clean_switch.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_residency_control_plane.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_residency_lock_set.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_model_residency_release_and_readable_holders.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_multi_store_scheduler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_multimodal_abstractcore_integration.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_native_mlx_application_wiring.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_native_mlx_execution_controls_live.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_native_tool_channel.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_night_voice.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_no_default_provider_refusal_ux.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_occurrence_named_inputs.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_occurrence_samples.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_offload_answer_chain_c4978.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_offloading.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_packaging_extras.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_parallel_readonly_tool_execution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_pause_resume.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_pdf_unicode_rendering.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_personal_cycle.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_phantom_attachment_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_phase_graph_artifact_control.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_phase_graph_obedience.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_phase_vocabulary_migration.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_cache_export_import.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_cache_modules.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_cache_posture_inheritance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_prompt_overlay.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_provider_endpoint_profile_resolution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_provider_pin_routing_isolation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_public_action_approval_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_publish_event.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_queryable_run_store.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_r12_workspace_sandbox.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_read_idle_threading.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_readoption_experiment.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_real_integration.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_realize_election.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_recall_levels_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_remote_client_cancel.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_remote_llm_client.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_remote_speculation_defaults.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_rendering_agent_trace_report.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_rendering_json_stringify.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_conformance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_conformance_package.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_cursor_token.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_delta_cost.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_invariants.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_public_updates.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_review_findings.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_replay_tool_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_report_branding.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_residency_fit_refusal_broadcast.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_resident_media_generation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_resume_concurrent_same_wait.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_retry_idempotency.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_history_bundle.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_index_workspace_root.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_mutation_lock.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_origin.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_scoped_tool_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_store_change_token.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_run_tool_scope_ceiling.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_browser_session_boundary.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_default_provider_model_refresh.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_effect_invocation_trace.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_health_and_bounded_vars.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_install_boundary.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_node_traces.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_start_seeds_tool_support.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_runtime_tick_step_gate.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_schedule_run.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_schedule_v1_corpus.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_schedule_v2_calendar.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_scheduler.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_send_email_refiner.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_send_email_self_default_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_history.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_prompt_cache_attribution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_prompt_cache_visibility.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_route_stamp.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_start_cost.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_session_tool_policy.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_shell_tool_exposure.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_snapshots.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_speculation_inheritance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_speculation_reaches_provider_construction.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_sqlite_ledger_store.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_start_subworkflow_async_wait.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_steer_sidecar.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_step_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_storage_deletion.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_streamed_voice_namespace.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_structured_output_schema_enum.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_structured_schema_execution_client.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_subworkflow.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_terminal_effect_completion.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_thinking_inheritance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_approval_executor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_approval_resume_executes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_approval_wait_key_identity.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_calls_idempotency_keys.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_catalog.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_descriptor_registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_argument_sanitization.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_error_output_detection.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_filename_alias.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_read_file_aliases.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_executor_timeout.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_inventory_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_invoke_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_policy_and_mounts.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_tool_wait_allowlist_safety.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_topic_election_world_model.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trace_context_propagation.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_cloudevents.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_connection_listening.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_connections.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_feed.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_schedule_math.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trigger_webhook.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_trusted_run_index.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_turn_grounding_byte_stability.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_turn_grounding_carriers_a3.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_vars_query_effect.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visit_ab_fixture.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visit_live_guidance.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visit_midturn_elections.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visit_midturn_resume.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visit_workflow.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_compare_typed_values.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_entity_memory_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_llm_call_partial_override.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_loop_back_out_of_body.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_loop_limit_and_list_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_loop_limit_on_wire.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_memact_compose_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_reroute_lowering.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_set_vars_pins.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_unknown_node_type_refuses.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_add_message_builtin.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_agora_react_agent.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_call_tool_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_compiler_basic.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_continue_on_error.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_edit_json_schema_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_file_nodes_workspace.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_function_library.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_get_element_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_get_random_element_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_get_var_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_has_tools_builtin.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_make_object_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_media_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_memory_effect_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_memory_source_pins.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_pin_expressions.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_prompt_only.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_random_nodes.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_schema_enum_switch.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_string_contains_replace.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_visualflow_tool_parameters_node.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_voice_library_facade.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_voice_openai_api_key_path.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_voice_projection_contract.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_voice_stream_is_not_a_wait.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_w4_feelings_lens.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_wait_event_deadline.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_wait_event_prompt_metadata.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_wait_until_streak.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_wait_until_utc_normalization.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workflow_bundle_registry.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_builtin_deny.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_context_allowed_workspaces.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_policy_allowlist_mode.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_prompt_context.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_read_only.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_workspace_writable_paths.py +0 -0
- {abstractruntime-0.18.0 → abstractruntime-0.18.2}/tests/test_write_chart.py +0 -0
|
@@ -10,6 +10,24 @@ Unreleased changes live in [`changelog.d/`](changelog.d/README.md), one file per
|
|
|
10
10
|
|
|
11
11
|
## [Unreleased]
|
|
12
12
|
|
|
13
|
+
## [0.18.2] - 2026-11-07
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Embedding imports preserve their original error and use the public AbstractCore module path.
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
## [0.18.1] - 2026-11-04
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- **A public update names the identity its run started with** (`replay/view.py`, ADR 0052, framework backlog 1119).
|
|
25
|
+
The replay view copies the run's `vars._runtime.identity_ref` (`{"of", "rev"}`, stamped by the gateway on visit,
|
|
26
|
+
summon, meet and session runs) onto each of that run's `public_update` messages as `identity_ref`, so a host serves
|
|
27
|
+
cached views with the ref already in place. A run without a ref, or with a malformed one, gives no field, never an
|
|
28
|
+
invented one; a snapshot read after the updates were folded stamps them then; the ref is part of the snapshot
|
|
29
|
+
digest, so the cursor token (an ETag) changes with it, and a run without a ref keeps the token it had.
|
|
30
|
+
|
|
13
31
|
## [0.18.0] - 2026-11-04
|
|
14
32
|
|
|
15
33
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: AbstractRuntime
|
|
3
|
-
Version: 0.18.
|
|
3
|
+
Version: 0.18.2
|
|
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
|
|
@@ -51,14 +51,26 @@ Description-Content-Type: text/markdown
|
|
|
51
51
|
|
|
52
52
|
# AbstractRuntime
|
|
53
53
|
|
|
54
|
+
**Release 0.18.2:** Embedding imports use the public AbstractCore module and preserve actionable import errors. See [release notes](CHANGELOG.md).
|
|
55
|
+
|
|
54
56
|
**AbstractRuntime** is a durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
|
|
55
57
|
|
|
56
58
|
It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
|
|
57
59
|
|
|
58
|
-
**Version:** 0.18.
|
|
60
|
+
**Version:** 0.18.2 • **Python:** 3.10+
|
|
59
61
|
|
|
60
62
|
**Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
|
|
61
63
|
|
|
64
|
+
## What's new in 0.18.2
|
|
65
|
+
|
|
66
|
+
An embedding import failure now reports its real cause (for example a missing dependency) instead of a
|
|
67
|
+
secondary error from a fallback import path.
|
|
68
|
+
|
|
69
|
+
## What's new in 0.18.1
|
|
70
|
+
|
|
71
|
+
- **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
|
|
72
|
+
its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
|
|
73
|
+
|
|
62
74
|
## What's new in 0.18.0
|
|
63
75
|
|
|
64
76
|
- **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
|
|
@@ -1,13 +1,25 @@
|
|
|
1
1
|
# AbstractRuntime
|
|
2
2
|
|
|
3
|
+
**Release 0.18.2:** Embedding imports use the public AbstractCore module and preserve actionable import errors. See [release notes](CHANGELOG.md).
|
|
4
|
+
|
|
3
5
|
**AbstractRuntime** is a durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
|
|
4
6
|
|
|
5
7
|
It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
|
|
6
8
|
|
|
7
|
-
**Version:** 0.18.
|
|
9
|
+
**Version:** 0.18.2 • **Python:** 3.10+
|
|
8
10
|
|
|
9
11
|
**Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
|
|
10
12
|
|
|
13
|
+
## What's new in 0.18.2
|
|
14
|
+
|
|
15
|
+
An embedding import failure now reports its real cause (for example a missing dependency) instead of a
|
|
16
|
+
secondary error from a fallback import path.
|
|
17
|
+
|
|
18
|
+
## What's new in 0.18.1
|
|
19
|
+
|
|
20
|
+
- **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
|
|
21
|
+
its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
|
|
22
|
+
|
|
11
23
|
## What's new in 0.18.0
|
|
12
24
|
|
|
13
25
|
- **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
|
|
@@ -134,7 +134,8 @@ parse_identity_ref("session:sess_9f2a#1") # a regular agent's identity rides it
|
|
|
134
134
|
`{"of", "rev"}`, beside the signed entity stamp (`vars["_runtime"]["entity"]`) and never inside
|
|
135
135
|
it: presentation is not authority. `stamp_run_identity_ref(vars, ref)` puts it there;
|
|
136
136
|
`read_run_identity_ref(vars)` returns it, or `None` when the run carries none (a reference is never
|
|
137
|
-
made up). An old rev resolves through `identity_at_rev`.
|
|
137
|
+
made up). An old rev resolves through `identity_at_rev`. The replay view copies it onto the run's public
|
|
138
|
+
updates (`identity_ref`, see [replay.md](replay.md#public-conversation-messages)).
|
|
138
139
|
|
|
139
140
|
## The fingerprint
|
|
140
141
|
|
|
@@ -28,7 +28,11 @@ Explicit completed `public_update` events become assistant messages with
|
|
|
28
28
|
`iteration`, `source_call_ids`, `update_kind`, and normal ledger provenance. `update_kind` is
|
|
29
29
|
the producer's type for the update: `"finding"` (a fact or piece of evidence the actor
|
|
30
30
|
established) or `"progress"` (what it is doing); an event without a `kind` of `"finding"`
|
|
31
|
-
replays as `"progress"`. Replay copies the type and never infers it from the text.
|
|
31
|
+
replays as `"progress"`. Replay copies the type and never infers it from the text. When the run's snapshot
|
|
32
|
+
carries `vars["_runtime"]["identity_ref"]` (the gateway stamps it on visit, summon, meet and session runs),
|
|
33
|
+
each of that run's public updates carries it as `identity_ref` (`{"of", "rev"}`); a run without one, or with
|
|
34
|
+
a malformed one, gives no field, never an invented one. A snapshot read after the updates were folded stamps
|
|
35
|
+
them then, and the ref is part of the snapshot digest, so the cursor token changes with it. Replay does not turn reasoning,
|
|
32
36
|
raw tool output or a marker inside model text into public speech. Diary/thinking fences
|
|
33
37
|
are excluded. These are actor-authored updates; their wording alone is not proof of a fact
|
|
34
38
|
or of completed work.
|
|
@@ -53,14 +53,26 @@ See llms.txt for the linked index.
|
|
|
53
53
|
|
|
54
54
|
# AbstractRuntime
|
|
55
55
|
|
|
56
|
+
**Release 0.18.2:** Embedding imports use the public AbstractCore module and preserve actionable import errors. See [release notes](CHANGELOG.md).
|
|
57
|
+
|
|
56
58
|
**AbstractRuntime** is a durable workflow runtime (interrupt → checkpoint → resume) with an append-only execution ledger.
|
|
57
59
|
|
|
58
60
|
It is designed for long-running workflows that must survive restarts and explicitly model blocking (human input, timers, external events, subworkflows) without keeping Python stacks alive.
|
|
59
61
|
|
|
60
|
-
**Version:** 0.18.
|
|
62
|
+
**Version:** 0.18.2 • **Python:** 3.10+
|
|
61
63
|
|
|
62
64
|
**Status:** pre-1.0 (API may evolve). For production use, pin versions and follow `CHANGELOG.md`.
|
|
63
65
|
|
|
66
|
+
## What's new in 0.18.2
|
|
67
|
+
|
|
68
|
+
An embedding import failure now reports its real cause (for example a missing dependency) instead of a
|
|
69
|
+
secondary error from a fallback import path.
|
|
70
|
+
|
|
71
|
+
## What's new in 0.18.1
|
|
72
|
+
|
|
73
|
+
- **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
|
|
74
|
+
its public updates, so a host serving cached views shows who spoke; a run without one gets no field.
|
|
75
|
+
|
|
64
76
|
## What's new in 0.18.0
|
|
65
77
|
|
|
66
78
|
- **Models unload after being idle**: a host sets how long a local model may sit unused (`set_model_idle_unload`,
|
|
@@ -6621,7 +6633,8 @@ parse_identity_ref("session:sess_9f2a#1") # a regular agent's identity rides it
|
|
|
6621
6633
|
`{"of", "rev"}`, beside the signed entity stamp (`vars["_runtime"]["entity"]`) and never inside
|
|
6622
6634
|
it: presentation is not authority. `stamp_run_identity_ref(vars, ref)` puts it there;
|
|
6623
6635
|
`read_run_identity_ref(vars)` returns it, or `None` when the run carries none (a reference is never
|
|
6624
|
-
made up). An old rev resolves through `identity_at_rev`.
|
|
6636
|
+
made up). An old rev resolves through `identity_at_rev`. The replay view copies it onto the run's public
|
|
6637
|
+
updates (`identity_ref`, see [replay.md](replay.md#public-conversation-messages)).
|
|
6625
6638
|
|
|
6626
6639
|
## The fingerprint
|
|
6627
6640
|
|
|
@@ -6990,7 +7003,11 @@ Explicit completed `public_update` events become assistant messages with
|
|
|
6990
7003
|
`iteration`, `source_call_ids`, `update_kind`, and normal ledger provenance. `update_kind` is
|
|
6991
7004
|
the producer's type for the update: `"finding"` (a fact or piece of evidence the actor
|
|
6992
7005
|
established) or `"progress"` (what it is doing); an event without a `kind` of `"finding"`
|
|
6993
|
-
replays as `"progress"`. Replay copies the type and never infers it from the text.
|
|
7006
|
+
replays as `"progress"`. Replay copies the type and never infers it from the text. When the run's snapshot
|
|
7007
|
+
carries `vars["_runtime"]["identity_ref"]` (the gateway stamps it on visit, summon, meet and session runs),
|
|
7008
|
+
each of that run's public updates carries it as `identity_ref` (`{"of", "rev"}`); a run without one, or with
|
|
7009
|
+
a malformed one, gives no field, never an invented one. A snapshot read after the updates were folded stamps
|
|
7010
|
+
them then, and the ref is part of the snapshot digest, so the cursor token changes with it. Replay does not turn reasoning,
|
|
6994
7011
|
raw tool output or a marker inside model text into public speech. Diary/thinking fences
|
|
6995
7012
|
are excluded. These are actor-authored updates; their wording alone is not proof of a fact
|
|
6996
7013
|
or of completed work.
|
|
@@ -3,7 +3,7 @@
|
|
|
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.18.
|
|
6
|
+
- Version: 0.18.2
|
|
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
9
|
- Current AbstractCore baseline: base `abstractruntime` requires AbstractCore 2.34.0 or newer with its light install (remote providers, tools and the MCP worker, media routing, the `decision` output modality); `abstractruntime[apple]` and `abstractruntime[gpu]` require AbstractCore's `apple` and `gpu` settings (`pyproject.toml`)
|
|
@@ -4,7 +4,7 @@ description: Operate AbstractRuntime through durable Python workflows, effect re
|
|
|
4
4
|
license: MIT
|
|
5
5
|
compatibility: Python 3.10+. Model execution needs a configured AbstractCore provider or server; local engines need the apple or gpu install profile. This skill uses the Python API rather than a Gateway HTTP API.
|
|
6
6
|
metadata:
|
|
7
|
-
package-version: "0.18.
|
|
7
|
+
package-version: "0.18.1"
|
|
8
8
|
---
|
|
9
9
|
|
|
10
10
|
# AbstractRuntime
|
|
@@ -22,7 +22,7 @@ folder when state must survive a restart.
|
|
|
22
22
|
Install the version this skill describes (or newer):
|
|
23
23
|
|
|
24
24
|
```bash
|
|
25
|
-
python -m pip install "abstractruntime>=0.18.
|
|
25
|
+
python -m pip install "abstractruntime>=0.18.1"
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
The base profile includes remote-light AbstractCore integration and the MCP
|
|
@@ -28,15 +28,10 @@ class AbstractCoreEmbeddingsClient:
|
|
|
28
28
|
model: str,
|
|
29
29
|
manager_kwargs: dict[str, Any] | None = None,
|
|
30
30
|
) -> None:
|
|
31
|
-
#
|
|
32
|
-
#
|
|
33
|
-
#
|
|
34
|
-
|
|
35
|
-
# implementation exists. Prefer the public import, but fall back to the concrete path.
|
|
36
|
-
try:
|
|
37
|
-
from abstractcore.embeddings.manager import EmbeddingManager # type: ignore
|
|
38
|
-
except Exception: # pragma: no cover
|
|
39
|
-
from abstractcore.abstractcore.embeddings.manager import EmbeddingManager # type: ignore
|
|
31
|
+
# Use the installed public package. Import failures (including a missing
|
|
32
|
+
# dependency) must retain their cause; a checkout-shaped fallback masks
|
|
33
|
+
# that failure and is not a valid installed-package import.
|
|
34
|
+
from abstractcore.embeddings.manager import EmbeddingManager
|
|
40
35
|
|
|
41
36
|
prov = str(provider or "").strip().lower()
|
|
42
37
|
mod = str(model or "").strip()
|
|
@@ -49,6 +49,7 @@ from typing import Any, Dict, Iterable, List, Mapping, Optional, Set, Tuple
|
|
|
49
49
|
from ..automations.attention import ANSWER_PAYLOADS
|
|
50
50
|
from ..core.vars import is_paused_vars
|
|
51
51
|
from ..history_bundle import _extract_usage_from_ledger_record, _extract_user_prompt_from_input
|
|
52
|
+
from ..identity.digital_identity import read_run_identity_ref
|
|
52
53
|
from ..storage.ledger_slim import is_slim_marker, resolve_slim_value
|
|
53
54
|
from .delta import token_run_names
|
|
54
55
|
from .executions import ExecutionTracker, is_completion_record, is_progress_record
|
|
@@ -152,6 +153,18 @@ def _artifact_refs(value: Any, path: str = "", depth: int = 0) -> List[Tuple[str
|
|
|
152
153
|
return out
|
|
153
154
|
|
|
154
155
|
|
|
156
|
+
def _run_identity_ref(run_vars: Any) -> Optional[Dict[str, Any]]:
|
|
157
|
+
"""The `{of, rev}` identity ref the host stamped on the run (`vars._runtime.identity_ref`), or None:
|
|
158
|
+
absent or malformed, the view carries no ref rather than an invented one."""
|
|
159
|
+
if not isinstance(run_vars, Mapping):
|
|
160
|
+
return None
|
|
161
|
+
try:
|
|
162
|
+
ref = read_run_identity_ref(run_vars)
|
|
163
|
+
except (TypeError, ValueError):
|
|
164
|
+
return None
|
|
165
|
+
return ref.to_dict() if ref is not None else None
|
|
166
|
+
|
|
167
|
+
|
|
155
168
|
def _snapshot(run: Any) -> Dict[str, Any]:
|
|
156
169
|
"""A run snapshot (RunState or its dict) as the plain fields the view reads."""
|
|
157
170
|
if run is None:
|
|
@@ -173,7 +186,7 @@ def _snapshot(run: Any) -> Dict[str, Any]:
|
|
|
173
186
|
prompt = _extract_user_prompt_from_input(source)[0] if isinstance(source, dict) else ""
|
|
174
187
|
out = d.get("output")
|
|
175
188
|
# Only what the view reads is kept (a snapshot's vars can be conversation-sized).
|
|
176
|
-
|
|
189
|
+
snap = {
|
|
177
190
|
"run_id": _s(d.get("run_id")),
|
|
178
191
|
"workflow_id": _s(d.get("workflow_id")),
|
|
179
192
|
"status": _enum(d.get("status")),
|
|
@@ -187,6 +200,11 @@ def _snapshot(run: Any) -> Dict[str, Any]:
|
|
|
187
200
|
"updated_at": _s(d.get("updated_at")),
|
|
188
201
|
"paused": bool(is_paused_vars(d.get("vars"))),
|
|
189
202
|
}
|
|
203
|
+
# Only when the host stamped one: a run without a ref keeps the same snapshot digest (cursor token).
|
|
204
|
+
ref = _run_identity_ref(d.get("vars"))
|
|
205
|
+
if ref is not None:
|
|
206
|
+
snap["identity_ref"] = ref
|
|
207
|
+
return snap
|
|
190
208
|
|
|
191
209
|
|
|
192
210
|
def _snapshot_digest(snap: Dict[str, Any]) -> str:
|
|
@@ -522,9 +540,12 @@ class ReplayView:
|
|
|
522
540
|
return
|
|
523
541
|
r = self._run(rid)
|
|
524
542
|
if r.snapshot != snap:
|
|
543
|
+
ref_changed = r.snapshot.get("identity_ref") != snap.get("identity_ref")
|
|
525
544
|
r.snapshot = snap
|
|
526
545
|
r.snap_digest = _snapshot_digest(snap)
|
|
527
546
|
self._dirty["runs"].add(rid)
|
|
547
|
+
if ref_changed:
|
|
548
|
+
self._stamp_identity_ref(rid)
|
|
528
549
|
if snap.get("workflow_id") and r.workflow_id != snap["workflow_id"]:
|
|
529
550
|
r.workflow_id = snap["workflow_id"]
|
|
530
551
|
self._dirty["runs"].add(rid)
|
|
@@ -1027,7 +1048,11 @@ class ReplayView:
|
|
|
1027
1048
|
extra={"update_kind": "finding" if b.get("kind") == "finding" else "progress",
|
|
1028
1049
|
"source_call_ids": [c for c in calls if isinstance(c, str)]
|
|
1029
1050
|
if isinstance(calls, list) else [], "iteration": b.get("iteration"),
|
|
1030
|
-
"session_id": _s(b.get("session_id")) or None
|
|
1051
|
+
"session_id": _s(b.get("session_id")) or None,
|
|
1052
|
+
# The identity the host stamped on this run (visit, summon, meet,
|
|
1053
|
+
# session), as `{of, rev}`; none when the run carries none.
|
|
1054
|
+
"identity_ref": dict(r.snapshot["identity_ref"])
|
|
1055
|
+
if r.snapshot.get("identity_ref") else None})
|
|
1031
1056
|
return
|
|
1032
1057
|
question_receipt = (_s(rec.get("node_id")) == "__host_question__"
|
|
1033
1058
|
and _s(rec.get("idempotency_key")).startswith("system:question:"))
|
|
@@ -1147,6 +1172,21 @@ class ReplayView:
|
|
|
1147
1172
|
|
|
1148
1173
|
# ----------------------------------------------------------------- messages, artifacts
|
|
1149
1174
|
|
|
1175
|
+
def _stamp_identity_ref(self, run_id: str) -> None:
|
|
1176
|
+
"""Put the run's identity ref on its public updates already folded (a snapshot read after
|
|
1177
|
+
its records), or take it off when the snapshot no longer carries one."""
|
|
1178
|
+
ref = self._runs[run_id].snapshot.get("identity_ref")
|
|
1179
|
+
for mid, msg in self._messages.items():
|
|
1180
|
+
if msg.get("run_id") != run_id or msg.get("kind") != "public_update" or msg.get("identity_ref") == ref:
|
|
1181
|
+
continue
|
|
1182
|
+
msg = dict(msg)
|
|
1183
|
+
if ref is None:
|
|
1184
|
+
msg.pop("identity_ref", None)
|
|
1185
|
+
else:
|
|
1186
|
+
msg["identity_ref"] = dict(ref)
|
|
1187
|
+
self._messages[mid] = msg
|
|
1188
|
+
self._dirty["messages"].add(mid)
|
|
1189
|
+
|
|
1150
1190
|
def _message(self, mid: str, *, role: str, kind: str, text: str, run_id: str, step_id: str, seq: int, ts: str,
|
|
1151
1191
|
source: str, artifact_ids: Optional[List[str]] = None, extra: Optional[Dict[str, Any]] = None) -> None:
|
|
1152
1192
|
msg = {
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Embedding import failures must keep the original actionable cause."""
|
|
2
|
+
import builtins
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from abstractruntime.integrations.abstractcore.embeddings_client import AbstractCoreEmbeddingsClient
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.mark.parametrize("failure", [
|
|
10
|
+
ModuleNotFoundError("No module named 'missing_dependency'", name="missing_dependency"),
|
|
11
|
+
ImportError("cannot import name 'EmbeddingManager'"),
|
|
12
|
+
RuntimeError("embedding backend initialization failed"),
|
|
13
|
+
])
|
|
14
|
+
def test_embedding_import_preserves_original_failure(monkeypatch, failure):
|
|
15
|
+
original = builtins.__import__
|
|
16
|
+
attempted = []
|
|
17
|
+
|
|
18
|
+
def importing(name, *args, **kwargs):
|
|
19
|
+
if name.startswith("abstractcore."):
|
|
20
|
+
attempted.append(name)
|
|
21
|
+
if name == "abstractcore.embeddings.manager":
|
|
22
|
+
raise failure
|
|
23
|
+
return original(name, *args, **kwargs)
|
|
24
|
+
|
|
25
|
+
monkeypatch.setattr(builtins, "__import__", importing)
|
|
26
|
+
with pytest.raises(type(failure)) as caught:
|
|
27
|
+
AbstractCoreEmbeddingsClient(provider="lmstudio", model="configured-model")
|
|
28
|
+
assert caught.value is failure
|
|
29
|
+
assert attempted == ["abstractcore.embeddings.manager"]
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"""A public update names the identity its run started with (gateway lane ask, ADR 0052): the replay
|
|
2
|
+
view folds and caches public updates by version, so the host cannot stamp them at serve time. The view
|
|
3
|
+
copies the run's `vars._runtime.identity_ref` (`{of, rev}`, set by the gateway on visit, summon, meet and
|
|
4
|
+
session runs) onto that run's public updates; a run without one gets no field, never an invented one."""
|
|
5
|
+
import pytest
|
|
6
|
+
|
|
7
|
+
from abstractruntime.identity.digital_identity import identity_ref, stamp_run_identity_ref
|
|
8
|
+
from abstractruntime.replay import ReplayView, replay
|
|
9
|
+
|
|
10
|
+
pytestmark = pytest.mark.basic
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def event(run, seq):
|
|
14
|
+
return {"run_id": run, "seq": seq, "step_id": f"s{seq}", "node_id": "parse", "status": "completed",
|
|
15
|
+
"started_at": f"2027-01-01T12:00:{seq:02d}+00:00",
|
|
16
|
+
"effect": {"type": "emit_event", "payload": {"name": "public_update", "payload": {
|
|
17
|
+
"id": f"{run}:public_update:{seq}", "run_id": run, "text": "The shorter route has stairs."}}},
|
|
18
|
+
"result": {"emitted": True}}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def snapshot(run, ref=None, **runtime):
|
|
22
|
+
run_vars = {"_runtime": dict(runtime)}
|
|
23
|
+
if ref is not None:
|
|
24
|
+
stamp_run_identity_ref(run_vars, ref)
|
|
25
|
+
return {"run_id": run, "workflow_id": "visit", "status": "running", "vars": run_vars}
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def guidance(run, seq):
|
|
29
|
+
"""The host's receipt of a person's words: a `guidance` message of the same run, not a public update."""
|
|
30
|
+
return {"run_id": run, "seq": seq, "step_id": f"s{seq}", "node_id": "__host_user_guidance__", "status": "completed",
|
|
31
|
+
"idempotency_key": "system:user_guidance:1", "started_at": f"2027-01-01T12:00:{seq:02d}+00:00",
|
|
32
|
+
"effect": {"type": "emit_event", "payload": {"name": "user_guidance", "payload": {
|
|
33
|
+
"seq": 1, "status": "accepted", "id": f"{run}:guidance:1", "run_id": run, "text": "No stairs."}}},
|
|
34
|
+
"result": {"emitted": True}}
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def updates(view):
|
|
38
|
+
return [m for m in view.to_json()["messages"] if m["kind"] == "public_update"]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def test_the_run_s_identity_ref_is_copied_onto_its_public_updates():
|
|
42
|
+
view = replay({"R": [event("R", 1), event("R", 2)]}, {"R": snapshot("R", identity_ref("entity:castor", 3))},
|
|
43
|
+
root_run_id="R")
|
|
44
|
+
assert [m["identity_ref"] for m in updates(view)] == [{"of": "entity:castor", "rev": 3}] * 2
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def test_a_child_run_s_update_names_the_child_s_ref_not_the_parent_s():
|
|
48
|
+
parent = {"run_id": "R", "seq": 1, "step_id": "spawn", "node_id": "agent", "status": "waiting",
|
|
49
|
+
"effect": {"type": "start_subworkflow", "payload": {"workflow_id": "agent"}},
|
|
50
|
+
"result": {"wait": {"reason": "subworkflow", "wait_key": "subworkflow:C"}}}
|
|
51
|
+
view = replay({"R": [parent], "C": [event("C", 1)]},
|
|
52
|
+
{"R": snapshot("R", identity_ref("entity:castor", 3)),
|
|
53
|
+
"C": dict(snapshot("C", identity_ref("session:s1", 1)), parent_run_id="R")}, root_run_id="R")
|
|
54
|
+
assert [m["identity_ref"] for m in updates(view)] == [{"of": "session:s1", "rev": 1}]
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def test_a_snapshot_read_after_the_records_stamps_the_updates_already_folded():
|
|
58
|
+
view = ReplayView("R")
|
|
59
|
+
view.apply([event("R", 1), guidance("R", 2)])
|
|
60
|
+
assert "identity_ref" not in updates(view)[0]
|
|
61
|
+
delta = view.apply(runs_by_id={"R": snapshot("R", identity_ref("entity:castor", 3))})
|
|
62
|
+
assert updates(view)[0]["identity_ref"] == {"of": "entity:castor", "rev": 3}
|
|
63
|
+
# Only public updates carry it: the person's words in the same run are not the entity's.
|
|
64
|
+
words = [m for m in view.to_json()["messages"] if m["kind"] == "guidance"]
|
|
65
|
+
assert len(words) == 1 and "identity_ref" not in words[0]
|
|
66
|
+
assert "R:public_update:1" in str(delta) # the stamped message travels in the delta
|
|
67
|
+
fresh = replay({"R": [event("R", 1), guidance("R", 2)]}, {"R": snapshot("R", identity_ref("entity:castor", 3))},
|
|
68
|
+
root_run_id="R")
|
|
69
|
+
assert view.to_json()["messages"] == fresh.to_json()["messages"]
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
@pytest.mark.parametrize("run_snapshot", [
|
|
73
|
+
None, # no snapshot read at all
|
|
74
|
+
snapshot("R"), # a run without a ref
|
|
75
|
+
snapshot("R", identity_ref={"of": "entity:castor"}), # malformed: no rev
|
|
76
|
+
snapshot("R", identity_ref={"of": "castor", "rev": 3}), # malformed: subject without a namespace
|
|
77
|
+
snapshot("R", identity_ref="entity:castor#3"), # malformed: text, not {of, rev}
|
|
78
|
+
])
|
|
79
|
+
def test_no_ref_on_the_run_means_no_field_never_a_fake(run_snapshot):
|
|
80
|
+
view = replay({"R": [event("R", 1)]}, {"R": run_snapshot} if run_snapshot else None, root_run_id="R")
|
|
81
|
+
assert "identity_ref" not in updates(view)[0]
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def test_the_cursor_changes_with_the_ref_and_not_for_a_run_without_one():
|
|
85
|
+
records = {"R": [event("R", 1)]}
|
|
86
|
+
without = replay(records, {"R": snapshot("R")}, root_run_id="R").cursor["token"]
|
|
87
|
+
with_ref = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 3))}, root_run_id="R").cursor["token"]
|
|
88
|
+
next_rev = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 4))}, root_run_id="R").cursor["token"]
|
|
89
|
+
assert len({without, with_ref, next_rev}) == 3
|
|
90
|
+
# A run without a ref folds exactly the snapshot it folded before refs existed: its token (an ETag
|
|
91
|
+
# a client holds) does not change with this release.
|
|
92
|
+
from abstractruntime.replay.view import _snapshot
|
|
93
|
+
assert "identity_ref" not in _snapshot(snapshot("R"))
|
|
94
|
+
# A run whose ref is withdrawn loses it from its updates (the view never keeps a stale one).
|
|
95
|
+
view = replay(records, {"R": snapshot("R", identity_ref("entity:castor", 3))}, root_run_id="R")
|
|
96
|
+
view.apply(runs_by_id={"R": snapshot("R")})
|
|
97
|
+
assert "identity_ref" not in updates(view)[0] and view.cursor["token"] == without
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
### Added
|
|
2
|
-
|
|
3
|
-
- **Acquaintances of an entity or a session** (`identity/acquaintances.py`, framework backlog 1119):
|
|
4
|
-
`entity_acquaintances(home_dir, run_store)` and `session_acquaintances(session_id, run_store)` answer two
|
|
5
|
-
lists, the other entities and the humans it interacted with, each with first and last seen, the number of
|
|
6
|
-
interactions and the task kinds. Computed from existing records, never stored: the participants the
|
|
7
|
-
gateway stamps on visit, summon and meet runs, the person who started a run (`_meta.origin`), and who left
|
|
8
|
-
a task in the task inbox. Identifiers only; interactions with no usable identifier (an `agent:` participant,
|
|
9
|
-
a participant without a namespace, a person-started run without an actor) are listed under `not_counted`,
|
|
10
|
-
never guessed. See `docs/track-record.md#acquaintances`.
|
|
11
|
-
- **An entity's digital identity: its look and its voice, one record in its home**
|
|
12
|
-
(`abstractruntime.identity.digital_identity`, framework ADR 0052 draft, backlog 1119; `docs/digital-identity.md`).
|
|
13
|
-
`<home>/identity.json` holds the avatar design, its colour and the voice (`schema_version` 1). `write_identity` checks
|
|
14
|
-
every bound (`IdentityInvalid` names the field), runs the gateway's `check` hook, appends an `identity_changed` row to
|
|
15
|
-
`state_history.jsonl` (the `phase_changed` field names) before the file is replaced atomically, and never gives a
|
|
16
|
-
`rev` twice: one write at a time per home (`<home>/.identity.lock`, held from the read to the file replace). A
|
|
17
|
-
file it cannot read in full raises `IdentityUnreadable` on read and on write, never "no identity".
|
|
18
|
-
`default_identity` is the recorded default anyone can recompute (SHA-256 of the entity id, eight engraved Watch
|
|
19
|
-
designs, an HSL colour, the gateway's default voice as a value); `record_default_identity` writes it once and never
|
|
20
|
-
overwrites. `identity_at_rev` answers an old rev from the biography. The reference `entity:castor#3` rides
|
|
21
|
-
`vars._runtime.identity_ref` beside the signed entity stamp (`stamp_run_identity_ref`, `read_run_identity_ref`,
|
|
22
|
-
`parse_identity_ref`). `identity_fingerprint` derives the individual's `actor_id` from the manifest, with the diary's
|
|
23
|
-
chain head. Homes without `identity.json` are untouched.
|
|
24
|
-
- **The summon tells the entity when its look or voice changed**: one sentence ("Your voice changed on 4 November (by
|
|
25
|
-
laurent): now fr-male-rene.") in the summon prelude, after the identity core, when the change is newer than the
|
|
26
|
-
previous summon (`render_summon_prelude(home_dir=, identity_since=)`, `ChatSession(identity_since=)`,
|
|
27
|
-
`build_visit_workflow(identity_since=)` or `_visit.identity_since` seeded by the door).
|
|
28
|
-
- **The idle unload reaches the host: `set_model_idle_unload(seconds)`** (host facade, `LocalAbstractCoreLLMClient`,
|
|
29
|
-
`MultiLocalAbstractCoreLLMClient`; framework backlog 1115). It relays AbstractCore's process-wide idle-unload time
|
|
30
|
-
(ADR 0012, default 60 minutes): a model no call has used for that long is unloaded, a locked model never is, and a
|
|
31
|
-
running call is never interrupted. `None` or `0` turns it off; a refused value answers `ok: false`. Local residency
|
|
32
|
-
rows of in-process text models carry `idle_unload_s`, `last_used_at` and `idle_unload_at`, and pass through Core's
|
|
33
|
-
`in_use` and `locked_by`, so a host can show a model that is in use, or kept loaded by another account.
|
|
34
|
-
- **`set_model_residency_locks(locks)`**: the locked models become exactly the listed ones (resident ones locked,
|
|
35
|
-
missing ones loaded then locked, the others unlocked), each pair with its own outcome. A lock names a provider and a
|
|
36
|
-
model; the `base_url` of a configured endpoint is not part of the key. A host stores its "Keep loaded" set and
|
|
37
|
-
replays it at start; as a `set_` name it is replayed when the gateway's model host rebuilds a client.
|
|
38
|
-
- **Track record and reputation of an entity or a session** (`identity/track_record.py`, ADR 0052 §5-§6,
|
|
39
|
-
framework backlog 1119). `entity_track_record(home_dir, run_store, ledger_store, *, book_head)` and
|
|
40
|
-
`session_track_record(session_id, run_store, ledger_store)` answer sessions, runs, successes, failures,
|
|
41
|
-
cancelled, in progress and tokens (input, output, total), per task kind (`<phase or role>/<workflow_id>`,
|
|
42
|
-
from ids only) and overall; `compute_reputation(record)` gives trust per task kind,
|
|
43
|
-
`(successes + 1) / (successes + failures + 2)` with its support, the support-weighted overall, and the
|
|
44
|
-
last 20 outcomes as evidence ("no experience yet" when there is none). Everything is computed from
|
|
45
|
-
existing records; nothing is stored. Only work from outside counts: turn roots a person or a trigger
|
|
46
|
-
started and automation occurrences (once each, however many attempts); sub-runs, controllers, the
|
|
47
|
-
session memory run and runs another run or the system started never do. Outcomes come from the run
|
|
48
|
-
status, the occurrence's `automation.completed` decision, an entity task marked `done`, and the work
|
|
49
|
-
order verdicts (`done:` / `blocked:`). Feedback from people and agents (`feedback_user`,
|
|
50
|
-
`feedback_agent`) is typed but has no source yet, so every answer says `basis: "completion-rate only"`.
|
|
51
|
-
Each answer names its subject's `identity_ref` and, for an entity, its `identity_fingerprint`.
|
|
52
|
-
See `docs/track-record.md`.
|
|
53
|
-
- **`metrics_many` also returns `tokens_input` and `tokens_output`** (SQLite ledger): `usage.input_tokens`
|
|
54
|
-
(else `prompt_tokens`) and `output_tokens` (else `completion_tokens`) of completed `llm_call` records.
|
|
55
|
-
Existing keys are unchanged.
|
|
56
|
-
- **`identity.life.read_work_order_verdicts(home_dir)`**: the verdicts the work lane archived in
|
|
57
|
-
`work_order.done.md`, oldest first.
|
|
58
|
-
|
|
59
|
-
### Changed
|
|
60
|
-
|
|
61
|
-
- **AbstractCore 2.34.0 or newer** (base install, `apple` and `gpu` settings): the idle unload and its residency rows
|
|
62
|
-
come from it.
|
|
63
|
-
- **A load with `ttl_s` or `keep_alive` on an in-process model** still lists them under `unsupported_options`; its
|
|
64
|
-
warning now names the idle unload that applies instead ("the idle unload setting applies (60 min unused, never while
|
|
65
|
-
it is kept loaded)"), or says it is off.
|
|
66
|
-
|
|
67
|
-
### Fixed
|
|
68
|
-
|
|
69
|
-
- **A run store whose index cannot attribute a session is refused, never started as a plain chat**
|
|
70
|
-
(`core/run_attribution.py`, framework backlog 0938). A third-party store with `list_run_index` but no `session_kind`
|
|
71
|
-
in its rows (an index written before automations v1) used to report "no kinds" and let a `discussion-session:` start
|
|
72
|
-
through as an ordinary chat, skipping the discussion's read-only anchor. It now raises `SessionAttributionError`
|
|
73
|
-
naming the missing column; a store with no index at all names both methods it lacks. Built-in stores are unchanged.
|
|
74
|
-
Upgrading a custom store: add `session_kind` and `role` to its index rows, or implement `session_kinds(session_id)`
|
|
75
|
-
(see `docs/automations.md`, "Storage guarantees").
|
|
76
|
-
- **A tool that reports its failure as a JSON object keeps its explanation** (`integrations/abstractcore/tool_executor.py`,
|
|
77
|
-
framework backlog 1005). A failed result's `output` used to be emptied when the tool returned its failure as a JSON
|
|
78
|
-
string, so the agent and the run ledger saw only the error line (for a web search: "No results found", never the
|
|
79
|
-
backends tried, the bot-challenge status or the hint). The parsed object is now the result's `output`, as for a tool
|
|
80
|
-
that returns a dict; a plain text error (`Error: ...`) still keeps an empty output and its message in `error`.
|
|
81
|
-
- **The visual-flow Agent node shows the model that explanation** (`visualflow_compiler/compiler.py`). A failed call
|
|
82
|
-
whose `output` is an object is rendered as its error line followed by the object (`[web_search]: Error: No results
|
|
83
|
-
found` then the JSON), under the same `agent_observation_max_chars` limit; a plain text failure still shows its error
|
|
84
|
-
line alone.
|
|
85
|
-
- Failure payloads are now recorded in the run ledger and the history bundle like success payloads: whatever a tool puts
|
|
86
|
-
in its failure JSON (its parameters included) is stored with the run.
|
|
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
|
|
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.18.0 → abstractruntime-0.18.2}/docs/backlog/completed/001_runtime_kernel.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|