AbstractRuntime 0.4.35__tar.gz → 0.5.0__tar.gz

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