AbstractRuntime 0.18.1__tar.gz → 0.18.3__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.
Files changed (909) hide show
  1. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/CHANGELOG.md +18 -0
  2. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/PKG-INFO +14 -2
  3. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/README.md +13 -1
  4. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/llms-full.txt +13 -1
  5. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/llms.txt +1 -1
  6. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/pyproject.toml +1 -1
  7. abstractruntime-0.18.3/release-notes.md +8 -0
  8. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +29 -1
  9. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +4 -9
  10. abstractruntime-0.18.3/tests/test_discovery_tts_unavailable_reason.py +108 -0
  11. abstractruntime-0.18.3/tests/test_embeddings_import_errors.py +29 -0
  12. abstractruntime-0.18.1/release-notes.md +0 -8
  13. abstractruntime-0.18.1/tests/test_discovery_tts_unavailable_reason.py +0 -52
  14. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/.github/workflows/changelog.yml +0 -0
  15. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/.github/workflows/ci.yml +0 -0
  16. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/.github/workflows/release.yml +0 -0
  17. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/.gitignore +0 -0
  18. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/ACKNOWLEDGMENTS.md +0 -0
  19. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/CODE_OF_CONDUCT.md +0 -0
  20. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/CONTRIBUTING.md +0 -0
  21. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/LICENSE +0 -0
  22. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/ROADMAP.md +0 -0
  23. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/SECURITY.md +0 -0
  24. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/changelog.d/README.md +0 -0
  25. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/README.md +0 -0
  26. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
  27. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
  28. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
  29. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
  30. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
  31. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
  32. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
  33. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0008_integration_facades_are_the_complete_host_surface.md +0 -0
  34. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0010_one_replay_many_views.md +0 -0
  35. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/0011_memory_facade_is_the_complete_host_surface_for_abstractmemory.md +0 -0
  36. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/adr/README.md +0 -0
  37. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/api.md +0 -0
  38. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/architecture.md +0 -0
  39. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/artifacts.md +0 -0
  40. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/automations.md +0 -0
  41. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/README.md +0 -0
  42. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/001_runtime_kernel.md +0 -0
  43. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
  44. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
  45. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
  46. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
  47. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
  48. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
  49. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
  50. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/003_wait_primitives.md +0 -0
  51. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
  52. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
  53. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
  54. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
  55. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/004_scheduler_driver.md +0 -0
  56. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
  57. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
  58. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
  59. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/009_artifact_store.md +0 -0
  60. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/010_examples_and_composition.md +0 -0
  61. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/011_subworkflow_support.md +0 -0
  62. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
  63. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
  64. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
  65. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
  66. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
  67. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
  68. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
  69. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
  70. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
  71. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
  72. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
  73. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
  74. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
  75. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
  76. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0847_automations_v1_controller_contracts_occurrences_triggers.md +0 -0
  77. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0851_per_account_voice_stores.md +0 -0
  78. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0852_capability_refusals_are_not_retried.md +0 -0
  79. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0855_prefix_stability_contract_of_consecutive_llm_calls.md +0 -0
  80. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0856_memory_facade_and_ledger_provenance.md +0 -0
  81. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0862_is_empty_accepts_lists.md +0 -0
  82. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0863_index_build_never_loses_a_run_created_during_it.md +0 -0
  83. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/completed/0864_facade_catalog_hub_search_pages.md +0 -0
  84. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
  85. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
  86. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
  87. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
  88. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
  89. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
  90. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
  91. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
  92. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/004_tests.md +0 -0
  93. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/005_docs_updates.md +0 -0
  94. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
  95. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
  96. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
  97. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/README.md +0 -0
  98. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
  99. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
  100. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
  101. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
  102. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
  103. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
  104. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
  105. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
  106. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
  107. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
  108. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
  109. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
  110. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0848_automations_v2_external_event_inbox_and_run_triggers.md +0 -0
  111. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0853_session_tool_policy_before_the_approval_wait.md +0 -0
  112. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0854_replay_view.md +0 -0
  113. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0857_entity_direct_memory_writes_provenance.md +0 -0
  114. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0858_typed_runs_run_type_stamped_at_start.md +0 -0
  115. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0859_replay_view_ephemeral_text_deltas.md +0 -0
  116. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/0866_queued_state_in_the_ledger_and_pools_lend_never_build.md +0 -0
  117. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
  118. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
  119. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_portability/README.md +0 -0
  120. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
  121. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
  122. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
  123. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
  124. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
  125. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
  126. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
  127. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
  128. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
  129. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
  130. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
  131. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
  132. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
  133. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
  134. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
  135. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
  136. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
  137. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
  138. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
  139. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
  140. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0849_conversation_search_tool_usage_outputs_and_thinking.md +0 -0
  141. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0850_growing_automation_history_out_of_the_controller_ledger.md +0 -0
  142. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0860_replay_view_stop_wording_from_the_ledger.md +0 -0
  143. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0861_replay_view_activity_tool_sandbox_and_call_timings.md +0 -0
  144. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0862_replay_view_message_artifacts_exclude_bookkeeping.md +0 -0
  145. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/0865_model_loaded_ledger_event.md +0 -0
  146. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
  147. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
  148. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
  149. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
  150. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
  151. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
  152. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
  153. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
  154. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
  155. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/digital-identity.md +0 -0
  156. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/email.md +0 -0
  157. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/entity-runtime.md +0 -0
  158. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/evidence.md +0 -0
  159. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/faq.md +0 -0
  160. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/getting-started.md +0 -0
  161. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/integrations/abstractcore.md +0 -0
  162. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/integrations/abstractmemory.md +0 -0
  163. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/limits.md +0 -0
  164. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/manual_testing.md +0 -0
  165. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/mcp-worker.md +0 -0
  166. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/proposal.md +0 -0
  167. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/provenance.md +0 -0
  168. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/replay.md +0 -0
  169. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/snapshots.md +0 -0
  170. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/tool-approval.md +0 -0
  171. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/tools-comms.md +0 -0
  172. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/track-record.md +0 -0
  173. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/troubleshooting.md +0 -0
  174. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/docs/workflow-bundles.md +0 -0
  175. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/01_hello_world.py +0 -0
  176. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/02_ask_user.py +0 -0
  177. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/03_wait_until.py +0 -0
  178. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/04_multi_step.py +0 -0
  179. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/05_persistence.py +0 -0
  180. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/06_llm_integration.py +0 -0
  181. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/07_react_agent.py +0 -0
  182. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/examples/README.md +0 -0
  183. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/mkdocs.yml +0 -0
  184. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/pytest.ini +0 -0
  185. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/scripts/backfill_diary_edges.py +0 -0
  186. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/scripts/changelog.py +0 -0
  187. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/scripts/generate_llms_full.py +0 -0
  188. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/scripts/regen_replay_conformance.py +0 -0
  189. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/skills/abstractruntime/SKILL.md +0 -0
  190. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/__init__.py +0 -0
  191. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automation_queries.py +0 -0
  192. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/__init__.py +0 -0
  193. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/adapters.py +0 -0
  194. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/attention.py +0 -0
  195. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/bundle.py +0 -0
  196. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/bundles/automation-controller/flows/controller.json +0 -0
  197. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/bundles/automation-controller/manifest.json +0 -0
  198. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/commands.py +0 -0
  199. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/consumers.py +0 -0
  200. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/controller.py +0 -0
  201. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/ledger.py +0 -0
  202. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/models.py +0 -0
  203. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/samples.py +0 -0
  204. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/service.py +0 -0
  205. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/automations/wakes.py +0 -0
  206. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/conversation_search.py +0 -0
  207. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/__init__.py +0 -0
  208. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/config.py +0 -0
  209. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/effect_cancellation.py +0 -0
  210. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/event_keys.py +0 -0
  211. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/health.py +0 -0
  212. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/live_deltas.py +0 -0
  213. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/models.py +0 -0
  214. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/policy.py +0 -0
  215. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/progress_channel.py +0 -0
  216. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/publish.py +0 -0
  217. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/questions.py +0 -0
  218. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/run_attribution.py +0 -0
  219. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/run_identity.py +0 -0
  220. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/run_lifecycle.py +0 -0
  221. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/run_origin.py +0 -0
  222. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/runtime.py +0 -0
  223. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/spec.py +0 -0
  224. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/step_context.py +0 -0
  225. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/tool_scope.py +0 -0
  226. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/core/vars.py +0 -0
  227. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/documents/__init__.py +0 -0
  228. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/documents/charts.py +0 -0
  229. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/documents/docx.py +0 -0
  230. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/documents/pdf.py +0 -0
  231. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/__init__.py +0 -0
  232. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/actions.py +0 -0
  233. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/automations.py +0 -0
  234. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/binding.py +0 -0
  235. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/feeder.py +0 -0
  236. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/frame.py +0 -0
  237. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/email/inbox.py +0 -0
  238. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/evidence/__init__.py +0 -0
  239. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/evidence/recorder.py +0 -0
  240. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/history_bundle.py +0 -0
  241. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/__init__.py +0 -0
  242. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/acquaintances.py +0 -0
  243. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/act_only.py +0 -0
  244. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/chat.py +0 -0
  245. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/communities.py +0 -0
  246. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/diary.py +0 -0
  247. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/digest.py +0 -0
  248. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/digital_identity.py +0 -0
  249. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/entity_runtime.py +0 -0
  250. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/fingerprint.py +0 -0
  251. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/lease.py +0 -0
  252. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/life.py +0 -0
  253. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/memory_reader.py +0 -0
  254. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/night_voice.py +0 -0
  255. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/phase_graph.py +0 -0
  256. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/phase_spec.py +0 -0
  257. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/prelude.py +0 -0
  258. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/prompt_overlay.py +0 -0
  259. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/reflection.py +0 -0
  260. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
  261. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/substrate.py +0 -0
  262. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/tool_effects.py +0 -0
  263. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/tool_policy.py +0 -0
  264. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/tools.py +0 -0
  265. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/track_record.py +0 -0
  266. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/identity/visit_workflow.py +0 -0
  267. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/__init__.py +0 -0
  268. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
  269. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
  270. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/command_sandbox_host.py +0 -0
  271. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
  272. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/config_facade.py +0 -0
  273. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
  274. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
  275. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
  276. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
  277. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +0 -0
  278. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/email_facade.py +0 -0
  279. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
  280. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
  281. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/llm_client.py +0 -0
  282. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
  283. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
  284. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/mcp_facade.py +0 -0
  285. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
  286. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
  287. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
  288. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
  289. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
  290. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/server_facade.py +0 -0
  291. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
  292. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/structured_facade.py +0 -0
  293. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/structured_output.py +0 -0
  294. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
  295. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
  296. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/tool_effects.py +0 -0
  297. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
  298. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
  299. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/voice_facade.py +0 -0
  300. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/voice_library.py +0 -0
  301. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
  302. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
  303. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
  304. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
  305. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
  306. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/memory_facade.py +0 -0
  307. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
  308. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/mail_verbs.py +0 -0
  309. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/__init__.py +0 -0
  310. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/active_context.py +0 -0
  311. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/active_memory.py +0 -0
  312. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/compaction.py +0 -0
  313. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/kg_packets.py +0 -0
  314. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/memact_composer.py +0 -0
  315. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/recall_levels.py +0 -0
  316. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/memory/token_budget.py +0 -0
  317. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/rendering/__init__.py +0 -0
  318. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
  319. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/rendering/json_stringify.py +0 -0
  320. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/__init__.py +0 -0
  321. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/__init__.py +0 -0
  322. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/expected_view.json +0 -0
  323. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/manifest.json +0 -0
  324. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/records.json +0 -0
  325. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a2_delegated_approval_completed/runs.json +0 -0
  326. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a_delegated_child_approval/expected_view.json +0 -0
  327. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a_delegated_child_approval/manifest.json +0 -0
  328. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a_delegated_child_approval/records.json +0 -0
  329. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/a_delegated_child_approval/runs.json +0 -0
  330. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/b_timer_without_resume/expected_view.json +0 -0
  331. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/b_timer_without_resume/manifest.json +0 -0
  332. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/b_timer_without_resume/records.json +0 -0
  333. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/b_timer_without_resume/runs.json +0 -0
  334. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/expected_view.json +0 -0
  335. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/manifest.json +0 -0
  336. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/records.json +0 -0
  337. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/c_parallel_tool_batch/runs.json +0 -0
  338. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/d_cancellation/expected_view.json +0 -0
  339. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/d_cancellation/manifest.json +0 -0
  340. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/d_cancellation/records.json +0 -0
  341. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/d_cancellation/runs.json +0 -0
  342. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/expected_view.json +0 -0
  343. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/manifest.json +0 -0
  344. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/records.json +0 -0
  345. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e2_structured_repeated_node/runs.json +0 -0
  346. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e_structured_output_agents/expected_view.json +0 -0
  347. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e_structured_output_agents/manifest.json +0 -0
  348. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e_structured_output_agents/records.json +0 -0
  349. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/e_structured_output_agents/runs.json +0 -0
  350. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/f_windowed_slim/expected_view.json +0 -0
  351. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/f_windowed_slim/manifest.json +0 -0
  352. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/f_windowed_slim/records.json +0 -0
  353. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/f_windowed_slim/runs.json +0 -0
  354. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/g_ask_user/expected_view.json +0 -0
  355. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/g_ask_user/manifest.json +0 -0
  356. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/g_ask_user/records.json +0 -0
  357. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/g_ask_user/runs.json +0 -0
  358. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/h_denied_approval/expected_view.json +0 -0
  359. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/h_denied_approval/manifest.json +0 -0
  360. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/h_denied_approval/records.json +0 -0
  361. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/h_denied_approval/runs.json +0 -0
  362. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/i_wait_kinds/expected_view.json +0 -0
  363. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/i_wait_kinds/manifest.json +0 -0
  364. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/i_wait_kinds/records.json +0 -0
  365. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/i_wait_kinds/runs.json +0 -0
  366. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/expected_view.json +0 -0
  367. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/manifest.json +0 -0
  368. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/records.json +0 -0
  369. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/j_event_answered_then_pause/runs.json +0 -0
  370. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/k_nested_delegation/expected_view.json +0 -0
  371. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/k_nested_delegation/manifest.json +0 -0
  372. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/k_nested_delegation/records.json +0 -0
  373. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/k_nested_delegation/runs.json +0 -0
  374. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/l_answer_then_completion/expected_view.json +0 -0
  375. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/l_answer_then_completion/manifest.json +0 -0
  376. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/l_answer_then_completion/records.json +0 -0
  377. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/l_answer_then_completion/runs.json +0 -0
  378. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/m_session_tool_policy/expected_view.json +0 -0
  379. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/m_session_tool_policy/manifest.json +0 -0
  380. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/m_session_tool_policy/records.json +0 -0
  381. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/conformance/m_session_tool_policy/runs.json +0 -0
  382. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/delta.py +0 -0
  383. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/executions.py +0 -0
  384. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/replay/view.py +0 -0
  385. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/scheduler/__init__.py +0 -0
  386. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/scheduler/convenience.py +0 -0
  387. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/scheduler/multi_store.py +0 -0
  388. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/scheduler/registry.py +0 -0
  389. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/scheduler/scheduler.py +0 -0
  390. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/session_history.py +0 -0
  391. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/session_turns.py +0 -0
  392. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/__init__.py +0 -0
  393. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/artifacts.py +0 -0
  394. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/base.py +0 -0
  395. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/change_ring.py +0 -0
  396. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/commands.py +0 -0
  397. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/in_memory.py +0 -0
  398. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/json_files.py +0 -0
  399. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/lease.py +0 -0
  400. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/ledger_chain.py +0 -0
  401. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/ledger_slim.py +0 -0
  402. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/observable.py +0 -0
  403. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/offloading.py +0 -0
  404. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/serialize.py +0 -0
  405. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/session_tool_policy.py +0 -0
  406. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/snapshots.py +0 -0
  407. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/sqlite.py +0 -0
  408. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/storage/steer_sidecar.py +0 -0
  409. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/__init__.py +0 -0
  410. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/cloudevents.py +0 -0
  411. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/connection_events.py +0 -0
  412. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/connections.py +0 -0
  413. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/email_received.py +0 -0
  414. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/event_frame.py +0 -0
  415. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/feed.py +0 -0
  416. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/manual.py +0 -0
  417. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/protocol.py +0 -0
  418. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/registry.py +0 -0
  419. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/schedule.py +0 -0
  420. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/triggers/webhook.py +0 -0
  421. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/turn_grounding.py +0 -0
  422. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/utils/__init__.py +0 -0
  423. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/utils/atomic_files.py +0 -0
  424. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/utils/file_filters.py +0 -0
  425. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/utils/workspace_paths.py +0 -0
  426. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
  427. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
  428. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
  429. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
  430. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
  431. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
  432. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
  433. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
  434. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
  435. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
  436. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
  437. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
  438. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
  439. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
  440. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
  441. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
  442. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
  443. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
  444. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
  445. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
  446. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/loop_back_check.py +0 -0
  447. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/loop_limit_lowering.py +0 -0
  448. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
  449. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
  450. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
  451. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/visualflow_compiler/visual/reroute_lowering.py +0 -0
  452. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
  453. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/workflow_bundle/models.py +0 -0
  454. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/workflow_bundle/packer.py +0 -0
  455. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/workflow_bundle/reader.py +0 -0
  456. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/src/abstractruntime/workflow_bundle/registry.py +0 -0
  457. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/README.md +0 -0
  458. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/automation_harness.py +0 -0
  459. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/conftest.py +0 -0
  460. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/email_wp2_support.py +0 -0
  461. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/feeds/atom.xml +0 -0
  462. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/feeds/rdf-not-a-feed.xml +0 -0
  463. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/feeds/rss1-malformed.xml +0 -0
  464. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/feeds/rss1.xml +0 -0
  465. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/feeds/rss2.xml +0 -0
  466. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/schedule_v1_corpus.json +0 -0
  467. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/visualflow/compare_text_operands.json +0 -0
  468. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/visualflow/typed_literals_flow.json +0 -0
  469. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/fixtures/visualflow/typed_literals_flow.legacy.json +0 -0
  470. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/live_email/conftest.py +0 -0
  471. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/live_email/live_email_support.py +0 -0
  472. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/live_email/test_email_live_runtime.py +0 -0
  473. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/media_endpoint_profile_probe.py +0 -0
  474. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_comms_facade.py +0 -0
  475. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_discovery_facade.py +0 -0
  476. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_host_facade.py +0 -0
  477. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_run_facade.py +0 -0
  478. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_server_facade.py +0 -0
  479. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_structured_facade.py +0 -0
  480. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_abstractcore_telegram_facade.py +0 -0
  481. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_active_consumers_index.py +0 -0
  482. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_active_context_policy.py +0 -0
  483. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_active_index.py +0 -0
  484. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_active_memory.py +0 -0
  485. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_agora_agent_alias_identity.py +0 -0
  486. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_agora_tools_http.py +0 -0
  487. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_analyze_media_addressing_and_walling.py +0 -0
  488. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_answer_user_effect.py +0 -0
  489. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_artifact_session_candidates.py +0 -0
  490. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_artifacts.py +0 -0
  491. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_calendar_schedule.py +0 -0
  492. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_commands.py +0 -0
  493. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_controller.py +0 -0
  494. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_controller_recovery.py +0 -0
  495. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_definition.py +0 -0
  496. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_discussion_isolation.py +0 -0
  497. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_email_results.py +0 -0
  498. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_growing_context.py +0 -0
  499. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_index.py +0 -0
  500. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_list_reads.py +0 -0
  501. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_named_policy_compiler.py +0 -0
  502. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_next_fire.py +0 -0
  503. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_occurrence_error.py +0 -0
  504. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_occurrence_input_resolver.py +0 -0
  505. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_occurrence_recovery.py +0 -0
  506. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_replay_read_only.py +0 -0
  507. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_retry.py +0 -0
  508. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_session_turns.py +0 -0
  509. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_status.py +0 -0
  510. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_automation_tool_approval.py +0 -0
  511. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_browser_probe_target_walling.py +0 -0
  512. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_budget_law_no_unrequested_caps.py +0 -0
  513. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_capability_default_reasoning.py +0 -0
  514. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_changelog_fragments.py +0 -0
  515. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_chat_summarizer_integration.py +0 -0
  516. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_code_node_imports.py +0 -0
  517. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_code_node_restricted_python.py +0 -0
  518. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_command_sandbox_host_facade.py +0 -0
  519. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_command_store.py +0 -0
  520. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_compaction_helpers.py +0 -0
  521. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_compaction_summarizer_route.py +0 -0
  522. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_config_facade_model_contexts.py +0 -0
  523. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_config_facade_models_engines.py +0 -0
  524. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_config_facade_voice_input_hint.py +0 -0
  525. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_control_adapter_while.py +0 -0
  526. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_controller_bundle_packaged.py +0 -0
  527. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_conversation_search.py +0 -0
  528. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_conversational_questions.py +0 -0
  529. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_crash_ordering_inversions.py +0 -0
  530. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_create_if_absent.py +0 -0
  531. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_data_registry_facade.py +0 -0
  532. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_decision_facade_and_node.py +0 -0
  533. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_decision_output.py +0 -0
  534. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_model_warmup_switch.py +0 -0
  535. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_camera_gating.py +0 -0
  536. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_comms_gating.py +0 -0
  537. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_include_skim_files.py +0 -0
  538. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_include_skim_folders.py +0 -0
  539. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_include_skim_web.py +0 -0
  540. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_default_tools_search_files_executor.py +0 -0
  541. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_diary_capture.py +0 -0
  542. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_diary_write_rescue.py +0 -0
  543. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_digital_identity.py +0 -0
  544. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_directory_lease.py +0 -0
  545. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_disabled_toolsets_seam.py +0 -0
  546. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_discovery_facade_model_errors.py +0 -0
  547. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_discovery_survives_unbuildable_default.py +0 -0
  548. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_discovery_voice_openai_api_key.py +0 -0
  549. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_discussion_session_anchor.py +0 -0
  550. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_document_markdown_tables.py +0 -0
  551. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_document_renderers_hr_quote.py +0 -0
  552. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_duck_typed_store_session_attribution.py +0 -0
  553. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_durable_toolsets.py +0 -0
  554. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_durable_write_discipline.py +0 -0
  555. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
  556. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_effect_cancellation.py +0 -0
  557. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_effect_interrupted.py +0 -0
  558. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_effect_issuance_idempotency.py +0 -0
  559. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_effect_payload_stays_json_serializable.py +0 -0
  560. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_election_consequence_teaching.py +0 -0
  561. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_binding_and_refiner.py +0 -0
  562. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_feeder_batched.py +0 -0
  563. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_feeder_flags.py +0 -0
  564. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_gate_fixes.py +0 -0
  565. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_inbox_and_trigger.py +0 -0
  566. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_received_mailbox_id.py +0 -0
  567. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_regate_fixes.py +0 -0
  568. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_review_fixes.py +0 -0
  569. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_self_trigger_loop.py +0 -0
  570. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_stream_consumers.py +0 -0
  571. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_email_toolset_and_walls.py +0 -0
  572. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_emergence_experiment.py +0 -0
  573. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_emit_event_uses_wait_index.py +0 -0
  574. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_emit_event_without_workflow_registry.py +0 -0
  575. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_endpoint_profile_media_end_to_end.py +0 -0
  576. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_endpoint_profile_media_in_process.py +0 -0
  577. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_endpoint_profile_media_specs_keep_provider.py +0 -0
  578. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_endpoint_profile_route_context.py +0 -0
  579. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_awake_memory_fixes.py +0 -0
  580. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_brain_effects.py +0 -0
  581. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_chat_driver.py +0 -0
  582. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_chat_tools_reflection.py +0 -0
  583. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_diary.py +0 -0
  584. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_execute_tool.py +0 -0
  585. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_fetch_url_tool.py +0 -0
  586. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_history_window.py +0 -0
  587. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_life_loop.py +0 -0
  588. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_memory_richness.py +0 -0
  589. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_phase_graph_conformance.py +0 -0
  590. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_react_visit_window.py +0 -0
  591. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_recent_memories.py +0 -0
  592. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_runtime.py +0 -0
  593. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_search_memory.py +0 -0
  594. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
  595. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_substrate_resolution.py +0 -0
  596. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_visit_honesty.py +0 -0
  597. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_workspace_cap.py +0 -0
  598. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_entity_workspace_tools.py +0 -0
  599. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_event_index_cross_process.py +0 -0
  600. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_event_wait_index.py +0 -0
  601. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
  602. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_evidence_recorder.py +0 -0
  603. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
  604. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_execute_command_output_offload.py +0 -0
  605. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_execution_capability_discovery.py +0 -0
  606. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_explicit_eject_other_clients.py +0 -0
  607. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_factory_default_retry_policy.py +0 -0
  608. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
  609. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_format_repair_nudge.py +0 -0
  610. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_fresh_install_no_provider.py +0 -0
  611. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_gateway_facades_c4899.py +0 -0
  612. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_git_read_only_refiner.py +0 -0
  613. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_hf_process_residency_merge.py +0 -0
  614. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_history_window_multimodal.py +0 -0
  615. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_hot_path_store_reads.py +0 -0
  616. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_identity_acquaintances.py +0 -0
  617. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_identity_track_record.py +0 -0
  618. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_indexed_idempotency_lookup.py +0 -0
  619. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_integration_abstractcore.py +0 -0
  620. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_integrations_abstractcore.py +0 -0
  621. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_json_file_run_store_change_token_after_build.py +0 -0
  622. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_json_file_run_store_children_index.py +0 -0
  623. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_json_file_run_store_index_build_race.py +0 -0
  624. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_json_run_cache_bound.py +0 -0
  625. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_json_store_scan_memo.py +0 -0
  626. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_jsonl_ledger_recovery.py +0 -0
  627. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_jsonl_ledger_seq_cross_process.py +0 -0
  628. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_jsonl_row_index.py +0 -0
  629. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_kg_learn_and_recall_contract.py +0 -0
  630. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_ledger_chain.py +0 -0
  631. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_ledger_cursor_invariants.py +0 -0
  632. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_ledger_get_record.py +0 -0
  633. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_ledger_record_slimming.py +0 -0
  634. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_ledger_subscription.py +0 -0
  635. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_live_token_deltas.py +0 -0
  636. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_media_artifact_refs.py +0 -0
  637. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
  638. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
  639. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_payload_shape_refusal.py +0 -0
  640. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_prefix_stability_contract.py +0 -0
  641. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_requires_prompt.py +0 -0
  642. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_response_schema_normalization.py +0 -0
  643. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_structured_output_fallback.py +0 -0
  644. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_text_phase_progress.py +0 -0
  645. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_truncation_retry_contract.py +0 -0
  646. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_use_context_appends_turn.py +0 -0
  647. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
  648. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_client_grounding_tail.py +0 -0
  649. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_client_media_artifacts.py +0 -0
  650. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_client_system_context.py +0 -0
  651. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_client_tool_call_parsing.py +0 -0
  652. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_retry_classification.py +0 -0
  653. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_llm_streaming_on_token.py +0 -0
  654. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_local_helper_tool_exposure.py +0 -0
  655. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_local_residency_host_sweep.py +0 -0
  656. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
  657. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mail_verbs.py +0 -0
  658. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mailbox_index.py +0 -0
  659. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_max_iterations_ceiling.py +0 -0
  660. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mcp_remote_tool_executor.py +0 -0
  661. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mcp_runs_untrusted_and_facade.py +0 -0
  662. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mcp_worker_logging.py +0 -0
  663. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mcp_worker_security.py +0 -0
  664. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mcp_worker_stdio.py +0 -0
  665. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_media_artifact_resolution.py +0 -0
  666. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_media_capability_default_routing.py +0 -0
  667. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_media_host_endpoint_resolver.py +0 -0
  668. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_media_only_requests_skip_text_client.py +0 -0
  669. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_media_subprocess.py +0 -0
  670. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memact_composer_from_kg_result.py +0 -0
  671. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_appraise_handler.py +0 -0
  672. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_communities.py +0 -0
  673. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_facade.py +0 -0
  674. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
  675. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_packets.py +0 -0
  676. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_predicate_aliasing.py +0 -0
  677. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_query_packetization_restart.py +0 -0
  678. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
  679. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
  680. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_note_effect.py +0 -0
  681. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_query_effect.py +0 -0
  682. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_query_rich_filters.py +0 -0
  683. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_revise.py +0 -0
  684. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
  685. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_seam_handlers.py +0 -0
  686. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_seam_sqlite_durability.py +0 -0
  687. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_step_provenance.py +0 -0
  688. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_memory_tag_effect.py +0 -0
  689. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mlx_generation_serialization.py +0 -0
  690. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_mlx_process_residency_merge.py +0 -0
  691. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_eject_cancel.py +0 -0
  692. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_idle_unload_relay.py +0 -0
  693. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_residency_clean_switch.py +0 -0
  694. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_residency_control_plane.py +0 -0
  695. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
  696. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_residency_lock_set.py +0 -0
  697. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_model_residency_release_and_readable_holders.py +0 -0
  698. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_multi_store_scheduler.py +0 -0
  699. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_multimodal_abstractcore_integration.py +0 -0
  700. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_native_mlx_application_wiring.py +0 -0
  701. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_native_mlx_execution_controls_live.py +0 -0
  702. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_native_tool_channel.py +0 -0
  703. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_night_voice.py +0 -0
  704. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_no_default_provider_refusal_ux.py +0 -0
  705. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_occurrence_named_inputs.py +0 -0
  706. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_occurrence_samples.py +0 -0
  707. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_offload_answer_chain_c4978.py +0 -0
  708. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
  709. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_offloading.py +0 -0
  710. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_packaging_extras.py +0 -0
  711. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_parallel_readonly_tool_execution.py +0 -0
  712. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_pause_resume.py +0 -0
  713. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_pdf_unicode_rendering.py +0 -0
  714. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_personal_cycle.py +0 -0
  715. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_phantom_attachment_index.py +0 -0
  716. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_phase_graph_artifact_control.py +0 -0
  717. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_phase_graph_obedience.py +0 -0
  718. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_phase_vocabulary_migration.py +0 -0
  719. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
  720. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_cache_export_import.py +0 -0
  721. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
  722. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_cache_modules.py +0 -0
  723. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_cache_posture_inheritance.py +0 -0
  724. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
  725. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_prompt_overlay.py +0 -0
  726. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_provider_endpoint_profile_resolution.py +0 -0
  727. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_provider_pin_routing_isolation.py +0 -0
  728. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_public_action_approval_context.py +0 -0
  729. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_publish_event.py +0 -0
  730. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_queryable_run_store.py +0 -0
  731. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_r12_workspace_sandbox.py +0 -0
  732. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
  733. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_read_idle_threading.py +0 -0
  734. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_readoption_experiment.py +0 -0
  735. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_real_integration.py +0 -0
  736. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_realize_election.py +0 -0
  737. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_recall_levels_policy.py +0 -0
  738. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_remote_client_cancel.py +0 -0
  739. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_remote_llm_client.py +0 -0
  740. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_remote_speculation_defaults.py +0 -0
  741. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_rendering_agent_trace_report.py +0 -0
  742. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_rendering_json_stringify.py +0 -0
  743. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_conformance.py +0 -0
  744. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_conformance_package.py +0 -0
  745. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_cursor_token.py +0 -0
  746. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_delta_cost.py +0 -0
  747. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_invariants.py +0 -0
  748. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_public_update_identity_ref.py +0 -0
  749. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_public_updates.py +0 -0
  750. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_review_findings.py +0 -0
  751. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_replay_tool_policy.py +0 -0
  752. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_report_branding.py +0 -0
  753. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_residency_fit_refusal_broadcast.py +0 -0
  754. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_resident_media_generation.py +0 -0
  755. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_resume_concurrent_same_wait.py +0 -0
  756. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_retry_idempotency.py +0 -0
  757. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_history_bundle.py +0 -0
  758. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_index_workspace_root.py +0 -0
  759. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_mutation_lock.py +0 -0
  760. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_origin.py +0 -0
  761. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_scoped_tool_policy.py +0 -0
  762. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_store_change_token.py +0 -0
  763. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_run_tool_scope_ceiling.py +0 -0
  764. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_browser_session_boundary.py +0 -0
  765. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
  766. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_default_provider_model_refresh.py +0 -0
  767. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_effect_invocation_trace.py +0 -0
  768. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_health_and_bounded_vars.py +0 -0
  769. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_install_boundary.py +0 -0
  770. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
  771. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_node_traces.py +0 -0
  772. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_start_seeds_tool_support.py +0 -0
  773. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_runtime_tick_step_gate.py +0 -0
  774. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_schedule_run.py +0 -0
  775. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_schedule_v1_corpus.py +0 -0
  776. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_schedule_v2_calendar.py +0 -0
  777. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_scheduler.py +0 -0
  778. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_send_email_refiner.py +0 -0
  779. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_send_email_self_default_policy.py +0 -0
  780. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
  781. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_history.py +0 -0
  782. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_prompt_cache_attribution.py +0 -0
  783. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_prompt_cache_visibility.py +0 -0
  784. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_route_stamp.py +0 -0
  785. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_start_cost.py +0 -0
  786. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_session_tool_policy.py +0 -0
  787. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_shell_tool_exposure.py +0 -0
  788. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_snapshots.py +0 -0
  789. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_speculation_inheritance.py +0 -0
  790. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_speculation_reaches_provider_construction.py +0 -0
  791. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_sqlite_ledger_store.py +0 -0
  792. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_start_subworkflow_async_wait.py +0 -0
  793. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
  794. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
  795. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_steer_sidecar.py +0 -0
  796. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_step_context.py +0 -0
  797. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_storage_deletion.py +0 -0
  798. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_streamed_voice_namespace.py +0 -0
  799. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_structured_output_schema_enum.py +0 -0
  800. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_structured_schema_execution_client.py +0 -0
  801. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_subworkflow.py +0 -0
  802. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_terminal_effect_completion.py +0 -0
  803. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
  804. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_thinking_inheritance.py +0 -0
  805. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
  806. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_approval_executor.py +0 -0
  807. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_approval_resume_executes.py +0 -0
  808. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_approval_wait_key_identity.py +0 -0
  809. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_calls_idempotency_keys.py +0 -0
  810. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_catalog.py +0 -0
  811. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_descriptor_registry.py +0 -0
  812. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_argument_sanitization.py +0 -0
  813. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_error_output_detection.py +0 -0
  814. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_filename_alias.py +0 -0
  815. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
  816. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_read_file_aliases.py +0 -0
  817. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_executor_timeout.py +0 -0
  818. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_inventory_facade.py +0 -0
  819. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_invoke_effect.py +0 -0
  820. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_policy_and_mounts.py +0 -0
  821. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_tool_wait_allowlist_safety.py +0 -0
  822. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_topic_election_world_model.py +0 -0
  823. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trace_context_propagation.py +0 -0
  824. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_cloudevents.py +0 -0
  825. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_connection_listening.py +0 -0
  826. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_connections.py +0 -0
  827. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_feed.py +0 -0
  828. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_registry.py +0 -0
  829. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_schedule_math.py +0 -0
  830. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trigger_webhook.py +0 -0
  831. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_trusted_run_index.py +0 -0
  832. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_turn_grounding_byte_stability.py +0 -0
  833. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_turn_grounding_carriers_a3.py +0 -0
  834. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_vars_query_effect.py +0 -0
  835. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visit_ab_fixture.py +0 -0
  836. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visit_live_guidance.py +0 -0
  837. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visit_midturn_elections.py +0 -0
  838. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visit_midturn_resume.py +0 -0
  839. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visit_workflow.py +0 -0
  840. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
  841. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
  842. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
  843. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
  844. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
  845. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
  846. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_compare_typed_values.py +0 -0
  847. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_entity_memory_nodes.py +0 -0
  848. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
  849. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_llm_call_partial_override.py +0 -0
  850. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
  851. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_loop_back_out_of_body.py +0 -0
  852. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_loop_limit_and_list_nodes.py +0 -0
  853. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_loop_limit_on_wire.py +0 -0
  854. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_memact_compose_node.py +0 -0
  855. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
  856. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
  857. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
  858. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_reroute_lowering.py +0 -0
  859. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_set_vars_pins.py +0 -0
  860. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_unknown_node_type_refuses.py +0 -0
  861. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
  862. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_add_message_builtin.py +0 -0
  863. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
  864. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_agora_react_agent.py +0 -0
  865. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_call_tool_node.py +0 -0
  866. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
  867. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_compiler_basic.py +0 -0
  868. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
  869. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_continue_on_error.py +0 -0
  870. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_edit_json_schema_node.py +0 -0
  871. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
  872. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_file_nodes_workspace.py +0 -0
  873. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_function_library.py +0 -0
  874. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_get_element_node.py +0 -0
  875. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_get_random_element_node.py +0 -0
  876. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_get_var_node.py +0 -0
  877. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_has_tools_builtin.py +0 -0
  878. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
  879. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
  880. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_make_object_node.py +0 -0
  881. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_media_nodes.py +0 -0
  882. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_memory_effect_nodes.py +0 -0
  883. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_memory_source_pins.py +0 -0
  884. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_pin_expressions.py +0 -0
  885. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_prompt_only.py +0 -0
  886. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_random_nodes.py +0 -0
  887. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_schema_enum_switch.py +0 -0
  888. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_string_contains_replace.py +0 -0
  889. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_visualflow_tool_parameters_node.py +0 -0
  890. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_voice_library_facade.py +0 -0
  891. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_voice_openai_api_key_path.py +0 -0
  892. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_voice_projection_contract.py +0 -0
  893. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_voice_stream_is_not_a_wait.py +0 -0
  894. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_w4_feelings_lens.py +0 -0
  895. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_wait_event_deadline.py +0 -0
  896. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_wait_event_prompt_metadata.py +0 -0
  897. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_wait_until_streak.py +0 -0
  898. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_wait_until_utc_normalization.py +0 -0
  899. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workflow_bundle_registry.py +0 -0
  900. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_builtin_deny.py +0 -0
  901. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_context_allowed_workspaces.py +0 -0
  902. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
  903. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_policy_allowlist_mode.py +0 -0
  904. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
  905. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
  906. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_prompt_context.py +0 -0
  907. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_read_only.py +0 -0
  908. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/tests/test_workspace_writable_paths.py +0 -0
  909. {abstractruntime-0.18.1 → abstractruntime-0.18.3}/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.3] - 2026-11-07
14
+
15
+ ### Fixed
16
+
17
+ - **A voice engine that cannot run says why in plain words** (`integrations/abstractcore/discovery_queries.py`,
18
+ framework backlog 0968). When the engine raised while `local_list_tts_models` was building the listing, the
19
+ listing's `error` was the bare exception text (for example "No module named 'kokoro'"). It is now AbstractVoice's
20
+ own `unavailable_reason`: from the catalog already returned, or else from the engine-free providers-only catalog.
21
+ Only when neither gives one is the exception kept, worded for a person: "the text-to-speech engine could not list
22
+ its models: ...".
23
+
24
+ ## [0.18.2] - 2026-11-07
25
+
26
+ ### Fixed
27
+
28
+ - Embedding imports preserve their original error and use the public AbstractCore module path.
29
+
30
+
13
31
  ## [0.18.1] - 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.1
3
+ Version: 0.18.3
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.3:** A voice engine that cannot run says why in plain words when its models are listed. 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.1 • **Python:** 3.10+
60
+ **Version:** 0.18.3 • **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.3
65
+
66
+ Listing text-to-speech models when the voice engine cannot run now gives AbstractVoice's own reason in
67
+ plain words (for example that the engine is not installed or no API key is set) instead of a bare Python error.
68
+
69
+ ## What's new in 0.18.2
70
+
71
+ An embedding import failure now reports its real cause (for example a missing dependency) instead of a
72
+ secondary error from a fallback import path.
73
+
62
74
  ## What's new in 0.18.1
63
75
 
64
76
  - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
@@ -1,13 +1,25 @@
1
1
  # AbstractRuntime
2
2
 
3
+ **Release 0.18.3:** A voice engine that cannot run says why in plain words when its models are listed. 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.1 • **Python:** 3.10+
9
+ **Version:** 0.18.3 • **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.3
14
+
15
+ Listing text-to-speech models when the voice engine cannot run now gives AbstractVoice's own reason in
16
+ plain words (for example that the engine is not installed or no API key is set) instead of a bare Python error.
17
+
18
+ ## What's new in 0.18.2
19
+
20
+ An embedding import failure now reports its real cause (for example a missing dependency) instead of a
21
+ secondary error from a fallback import path.
22
+
11
23
  ## What's new in 0.18.1
12
24
 
13
25
  - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
@@ -53,14 +53,26 @@ See llms.txt for the linked index.
53
53
 
54
54
  # AbstractRuntime
55
55
 
56
+ **Release 0.18.3:** A voice engine that cannot run says why in plain words when its models are listed. 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.1 • **Python:** 3.10+
62
+ **Version:** 0.18.3 • **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.3
67
+
68
+ Listing text-to-speech models when the voice engine cannot run now gives AbstractVoice's own reason in
69
+ plain words (for example that the engine is not installed or no API key is set) instead of a bare Python error.
70
+
71
+ ## What's new in 0.18.2
72
+
73
+ An embedding import failure now reports its real cause (for example a missing dependency) instead of a
74
+ secondary error from a fallback import path.
75
+
64
76
  ## What's new in 0.18.1
65
77
 
66
78
  - **A public update names the identity its run started with**: the replay view copies the run's `identity_ref` onto
@@ -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.1
6
+ - Version: 0.18.3
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 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "AbstractRuntime"
7
- version = "0.18.1"
7
+ version = "0.18.3"
8
8
  description = "AbstractRuntime: a durable graph runner designed to pair with AbstractCore."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -0,0 +1,8 @@
1
+ ### Fixed
2
+
3
+ - **A voice engine that cannot run says why in plain words** (`integrations/abstractcore/discovery_queries.py`,
4
+ framework backlog 0968). When the engine raised while `local_list_tts_models` was building the listing, the
5
+ listing's `error` was the bare exception text (for example "No module named 'kokoro'"). It is now AbstractVoice's
6
+ own `unavailable_reason`: from the catalog already returned, or else from the engine-free providers-only catalog.
7
+ Only when neither gives one is the exception kept, worded for a person: "the text-to-speech engine could not list
8
+ its models: ...".
@@ -1156,6 +1156,32 @@ def local_get_voice_catalog(
1156
1156
  return _filter_voice_catalog_response(payload, provider=provider, model=model, providers_only=providers_only)
1157
1157
 
1158
1158
 
1159
+ def _catalog_unavailable_reason(catalog: Any) -> Optional[str]:
1160
+ reason = catalog.get("unavailable_reason") if isinstance(catalog, dict) else None
1161
+ return reason.strip() if isinstance(reason, str) and reason.strip() else None
1162
+
1163
+
1164
+ def _tts_listing_failure_reason(voice: Any, catalog: Any, *, provider: Optional[str], exc: Exception) -> str:
1165
+ """The `error` of a TTS listing whose engine raised: AbstractVoice's own reason first (0968).
1166
+
1167
+ A voice engine that cannot run often raises while it is being built, before any
1168
+ catalog comes back, so the bare exception text ("No module named ...") used to be
1169
+ the whole answer. The catalog it already returned, or else the engine-free
1170
+ providers-only catalog, says why in plain words (`unavailable_reason`); the
1171
+ exception is kept, worded for a person, only when neither does.
1172
+ """
1173
+ reason = _catalog_unavailable_reason(catalog)
1174
+ if reason is None and voice is not None and hasattr(voice, "voice_catalog"):
1175
+ try:
1176
+ reason = _catalog_unavailable_reason(voice.voice_catalog(provider=provider, providers_only=True))
1177
+ except Exception:
1178
+ reason = None
1179
+ if reason is not None:
1180
+ return reason
1181
+ detail = str(exc).strip() or type(exc).__name__
1182
+ return f"the text-to-speech engine could not list its models: {detail}"
1183
+
1184
+
1159
1185
  def local_list_tts_models(
1160
1186
  *,
1161
1187
  base_url: Optional[str] = None,
@@ -1163,6 +1189,8 @@ def local_list_tts_models(
1163
1189
  voice_openai_api_key: Optional[str] = None,
1164
1190
  provider: Optional[str] = None,
1165
1191
  ) -> Dict[str, Any]:
1192
+ voice: Any = None
1193
+ catalog: Any = {}
1166
1194
  try:
1167
1195
  voice = _runtime_capability_registry(
1168
1196
  voice_base_url=base_url,
@@ -1186,7 +1214,7 @@ def local_list_tts_models(
1186
1214
  },
1187
1215
  source="abstractvoice.local",
1188
1216
  available=False,
1189
- error=str(exc),
1217
+ error=_tts_listing_failure_reason(voice, catalog, provider=provider, exc=exc),
1190
1218
  ),
1191
1219
  provider=provider,
1192
1220
  model_keys=("models_by_provider", "tts_models_by_provider"),
@@ -28,15 +28,10 @@ class AbstractCoreEmbeddingsClient:
28
28
  model: str,
29
29
  manager_kwargs: dict[str, Any] | None = None,
30
30
  ) -> None:
31
- # Monorepo import hygiene:
32
- # When running from the repo root, `abstractcore/` (project folder) can be imported as a
33
- # namespace package and shadow the real python package at `abstractcore/abstractcore/`.
34
- # In that situation, `abstractcore.embeddings.manager` may not resolve even though the
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()
@@ -0,0 +1,108 @@
1
+ """An unavailable TTS listing says WHY (voice tag gate follow-up).
2
+
3
+ `local_list_tts_models` answered `available: false, error: null` for a provider
4
+ that cannot run (OpenAI without a key, an unknown provider id): the reason
5
+ AbstractVoice (>= 0.13) puts in the catalog's `unavailable_reason` was dropped.
6
+ It is now the listing's `error`.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from types import SimpleNamespace
12
+
13
+ import pytest
14
+
15
+ from abstractruntime.integrations.abstractcore import discovery_queries as dq
16
+
17
+ # AbstractVoice is a declared dependency (through AbstractCore's light install):
18
+ # the first two tests run the real catalog, engine-free, with no key configured.
19
+
20
+
21
+ @pytest.fixture()
22
+ def no_voice_keys(monkeypatch: pytest.MonkeyPatch, tmp_path) -> None:
23
+ for name in ("OPENAI_API_KEY", "ABSTRACTVOICE_OPENAI_API_KEY", "OPENAI_BASE_URL"):
24
+ monkeypatch.delenv(name, raising=False)
25
+ monkeypatch.setenv("HOME", str(tmp_path))
26
+
27
+
28
+ def test_openai_without_a_key_names_the_missing_key(no_voice_keys) -> None:
29
+ out = dq.local_list_tts_models(provider="openai")
30
+ assert out["available"] is False and out["models"] == []
31
+ assert out["error"] and "OpenAI API key" in out["error"]
32
+
33
+
34
+ def test_unknown_provider_says_it_is_unknown(no_voice_keys) -> None:
35
+ out = dq.local_list_tts_models(provider="no-such-engine")
36
+ assert out["available"] is False
37
+ assert out["error"] and "not a known text-to-speech provider" in out["error"]
38
+
39
+
40
+ def test_the_error_is_the_catalogs_unavailable_reason(monkeypatch: pytest.MonkeyPatch) -> None:
41
+ voice = SimpleNamespace(
42
+ voice_catalog=lambda provider=None: {"tts_providers": [], "unavailable_reason": "engine X is not installed"},
43
+ list_tts_models=lambda provider=None: [],
44
+ )
45
+ monkeypatch.setattr(dq, "_runtime_capability_registry", lambda **_: SimpleNamespace(voice=voice))
46
+ assert dq.local_list_tts_models(provider="x")["error"] == "engine X is not installed"
47
+ # An available listing never carries it.
48
+ voice.voice_catalog = lambda provider=None: {"tts_providers": ["x"], "tts_models_by_provider": {"x": ["m"]},
49
+ "unavailable_reason": None}
50
+ voice.list_tts_models = lambda provider=None: ["m"]
51
+ ok = dq.local_list_tts_models(provider="x")
52
+ assert ok["available"] is True and ok["error"] is None
53
+
54
+
55
+ # 0968: an engine that RAISES while the listing is built (it cannot run, so building it
56
+ # fails) used to answer with the bare exception text. The reason AbstractVoice gives
57
+ # in plain words wins; the exception is kept, worded for a person, only as a fallback.
58
+
59
+
60
+ def _raising_voice(full_catalog_error: Exception, light_catalog: object) -> SimpleNamespace:
61
+ def voice_catalog(provider=None, providers_only=False):
62
+ if providers_only:
63
+ if isinstance(light_catalog, Exception):
64
+ raise light_catalog
65
+ return light_catalog
66
+ raise full_catalog_error
67
+
68
+ return SimpleNamespace(voice_catalog=voice_catalog, list_tts_models=lambda provider=None: [])
69
+
70
+
71
+ def test_a_raising_engine_answers_with_the_engine_free_catalogs_reason(monkeypatch: pytest.MonkeyPatch) -> None:
72
+ voice = _raising_voice(
73
+ ModuleNotFoundError("No module named 'kokoro'"),
74
+ {"tts_providers": [], "unavailable_reason": "Kokoro is not installed; install abstractvoice[kokoro]"},
75
+ )
76
+ monkeypatch.setattr(dq, "_runtime_capability_registry", lambda **_: SimpleNamespace(voice=voice))
77
+ out = dq.local_list_tts_models(provider="kokoro")
78
+ assert out["available"] is False and out["models"] == []
79
+ assert out["error"] == "Kokoro is not installed; install abstractvoice[kokoro]"
80
+
81
+
82
+ def test_a_listing_that_raises_after_the_catalog_keeps_the_catalogs_reason(monkeypatch: pytest.MonkeyPatch) -> None:
83
+ def list_tts_models(provider=None):
84
+ raise RuntimeError("engine build failed")
85
+
86
+ voice = SimpleNamespace(
87
+ voice_catalog=lambda provider=None, providers_only=False: {"unavailable_reason": "no OpenAI API key is configured"},
88
+ list_tts_models=list_tts_models,
89
+ )
90
+ monkeypatch.setattr(dq, "_runtime_capability_registry", lambda **_: SimpleNamespace(voice=voice))
91
+ assert dq.local_list_tts_models(provider="openai")["error"] == "no OpenAI API key is configured"
92
+
93
+
94
+ def test_with_no_reason_the_exception_is_worded_for_a_person(monkeypatch: pytest.MonkeyPatch) -> None:
95
+ for light in ({"tts_providers": ["piper"], "unavailable_reason": None}, RuntimeError("light failed too")):
96
+ voice = _raising_voice(RuntimeError("weights are corrupt"), light)
97
+ monkeypatch.setattr(dq, "_runtime_capability_registry", lambda **_: SimpleNamespace(voice=voice))
98
+ out = dq.local_list_tts_models(provider="piper")
99
+ assert out["available"] is False
100
+ assert out["error"] == "the text-to-speech engine could not list its models: weights are corrupt"
101
+
102
+
103
+ def test_an_empty_exception_still_names_what_went_wrong(monkeypatch: pytest.MonkeyPatch) -> None:
104
+ def broken_registry(**_):
105
+ raise ImportError()
106
+
107
+ monkeypatch.setattr(dq, "_runtime_capability_registry", broken_registry)
108
+ assert dq.local_list_tts_models()["error"] == "the text-to-speech engine could not list its models: ImportError"
@@ -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"]
@@ -1,8 +0,0 @@
1
- ### Added
2
-
3
- - **A public update names the identity its run started with** (`replay/view.py`, ADR 0052, framework backlog 1119).
4
- The replay view copies the run's `vars._runtime.identity_ref` (`{"of", "rev"}`, stamped by the gateway on visit,
5
- summon, meet and session runs) onto each of that run's `public_update` messages as `identity_ref`, so a host serves
6
- cached views with the ref already in place. A run without a ref, or with a malformed one, gives no field, never an
7
- invented one; a snapshot read after the updates were folded stamps them then; the ref is part of the snapshot
8
- digest, so the cursor token (an ETag) changes with it, and a run without a ref keeps the token it had.
@@ -1,52 +0,0 @@
1
- """An unavailable TTS listing says WHY (voice tag gate follow-up).
2
-
3
- `local_list_tts_models` answered `available: false, error: null` for a provider
4
- that cannot run (OpenAI without a key, an unknown provider id): the reason
5
- AbstractVoice (>= 0.13) puts in the catalog's `unavailable_reason` was dropped.
6
- It is now the listing's `error`.
7
- """
8
-
9
- from __future__ import annotations
10
-
11
- from types import SimpleNamespace
12
-
13
- import pytest
14
-
15
- from abstractruntime.integrations.abstractcore import discovery_queries as dq
16
-
17
- # AbstractVoice is a declared dependency (through AbstractCore's light install):
18
- # the first two tests run the real catalog, engine-free, with no key configured.
19
-
20
-
21
- @pytest.fixture()
22
- def no_voice_keys(monkeypatch: pytest.MonkeyPatch, tmp_path) -> None:
23
- for name in ("OPENAI_API_KEY", "ABSTRACTVOICE_OPENAI_API_KEY", "OPENAI_BASE_URL"):
24
- monkeypatch.delenv(name, raising=False)
25
- monkeypatch.setenv("HOME", str(tmp_path))
26
-
27
-
28
- def test_openai_without_a_key_names_the_missing_key(no_voice_keys) -> None:
29
- out = dq.local_list_tts_models(provider="openai")
30
- assert out["available"] is False and out["models"] == []
31
- assert out["error"] and "OpenAI API key" in out["error"]
32
-
33
-
34
- def test_unknown_provider_says_it_is_unknown(no_voice_keys) -> None:
35
- out = dq.local_list_tts_models(provider="no-such-engine")
36
- assert out["available"] is False
37
- assert out["error"] and "not a known text-to-speech provider" in out["error"]
38
-
39
-
40
- def test_the_error_is_the_catalogs_unavailable_reason(monkeypatch: pytest.MonkeyPatch) -> None:
41
- voice = SimpleNamespace(
42
- voice_catalog=lambda provider=None: {"tts_providers": [], "unavailable_reason": "engine X is not installed"},
43
- list_tts_models=lambda provider=None: [],
44
- )
45
- monkeypatch.setattr(dq, "_runtime_capability_registry", lambda **_: SimpleNamespace(voice=voice))
46
- assert dq.local_list_tts_models(provider="x")["error"] == "engine X is not installed"
47
- # An available listing never carries it.
48
- voice.voice_catalog = lambda provider=None: {"tts_providers": ["x"], "tts_models_by_provider": {"x": ["m"]},
49
- "unavailable_reason": None}
50
- voice.list_tts_models = lambda provider=None: ["m"]
51
- ok = dq.local_list_tts_models(provider="x")
52
- assert ok["available"] is True and ok["error"] is None