AbstractRuntime 0.4.34__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.34 → abstractruntime-0.5.0}/ACKNOWLEDGMENTS.md +6 -5
  2. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/CHANGELOG.md +139 -7
  3. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/CONTRIBUTING.md +9 -0
  4. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/PKG-INFO +18 -11
  5. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/README.md +14 -7
  6. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/ROADMAP.md +3 -17
  7. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/README.md +3 -4
  8. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/api.md +7 -1
  9. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/architecture.md +96 -5
  10. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/faq.md +3 -1
  11. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/getting-started.md +1 -1
  12. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/integrations/abstractcore.md +102 -10
  13. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/troubleshooting.md +49 -1
  14. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/llms-full.txt +2767 -3203
  15. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/llms.txt +11 -4
  16. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/mkdocs.yml +3 -0
  17. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/pyproject.toml +4 -4
  18. abstractruntime-0.5.0/release-notes.md +106 -0
  19. abstractruntime-0.5.0/scripts/generate_llms_full.py +104 -0
  20. abstractruntime-0.5.0/src/abstractruntime/core/live_deltas.py +311 -0
  21. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/progress_channel.py +57 -0
  22. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/runtime.py +227 -62
  23. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/config_facade.py +3 -3
  24. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +82 -5
  25. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +16 -0
  26. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/factory.py +18 -1
  27. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/llm_client.py +1493 -73
  28. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/summarizer.py +45 -9
  29. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +50 -8
  30. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/utils/workspace_paths.py +65 -0
  31. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/compiler.py +2 -2
  32. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/executor.py +9 -0
  33. abstractruntime-0.5.0/tests/test_compaction_summarizer_route.py +72 -0
  34. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_config_facade_models_engines.py +4 -4
  35. abstractruntime-0.5.0/tests/test_explicit_eject_other_clients.py +113 -0
  36. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_factory_default_retry_policy.py +1 -1
  37. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_factory_timeouts_default_to_abstractcore_config.py +4 -4
  38. abstractruntime-0.5.0/tests/test_hf_process_residency_merge.py +175 -0
  39. abstractruntime-0.5.0/tests/test_live_token_deltas.py +1554 -0
  40. abstractruntime-0.5.0/tests/test_mlx_process_residency_merge.py +130 -0
  41. abstractruntime-0.5.0/tests/test_model_residency_clean_switch.py +462 -0
  42. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_packaging_extras.py +3 -3
  43. abstractruntime-0.5.0/tests/test_workspace_builtin_deny.py +318 -0
  44. abstractruntime-0.4.34/release-notes.md +0 -7
  45. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/.github/workflows/ci.yml +0 -0
  46. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/.github/workflows/release.yml +0 -0
  47. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/.gitignore +0 -0
  48. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/CODE_OF_CONDUCT.md +0 -0
  49. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/LICENSE +0 -0
  50. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/SECURITY.md +0 -0
  51. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
  52. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
  53. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
  54. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0004_runtime_owns_run_scoped_media_execution_truth.md +0 -0
  55. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0005_runtime_owns_abstractcore_host_discovery_queries.md +0 -0
  56. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0006_runtime_owns_durable_abstractcore_bloc_prompt_cache.md +0 -0
  57. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/0007_runtime_relays_core_owned_model_residency_truth.md +0 -0
  58. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/adr/README.md +0 -0
  59. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/artifacts.md +0 -0
  60. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/README.md +0 -0
  61. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/001_runtime_kernel.md +0 -0
  62. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
  63. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0030_runtime_host_facades_for_comms_telegram_and_tool_specs.md +0 -0
  64. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0032_runtime_durable_outbound_comms_truth.md +0 -0
  65. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0033_runtime_host_local_prompt_cache_export_import_surface.md +0 -0
  66. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0035_model_residency_provider_truth_for_local_http_clients.md +0 -0
  67. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0037_visualflow_generate_music_node_compiler_parity.md +0 -0
  68. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0039_runtime_music_structure_prompt_bool_contract.md +0 -0
  69. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/003_wait_primitives.md +0 -0
  70. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0040_task_agnostic_local_residency_listing.md +0 -0
  71. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0041_runtime_hardware_extras_avoid_nonpermissive_document_stacks.md +0 -0
  72. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0042_core_vision_upscale_and_parameter_surface.md +0 -0
  73. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0043_runtime_vision_adapter_and_batch_surface.md +0 -0
  74. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/004_scheduler_driver.md +0 -0
  75. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
  76. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
  77. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
  78. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/009_artifact_store.md +0 -0
  79. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/010_examples_and_composition.md +0 -0
  80. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/011_subworkflow_support.md +0 -0
  81. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
  82. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
  83. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
  84. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/019_runtime_host_facade_for_core_operator_surfaces.md +0 -0
  85. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/020_runtime_gateway_install_boundary.md +0 -0
  86. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/021_runtime_gateway_env_namespace_cleanup.md +0 -0
  87. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/022_model_residency_control_plane.md +0 -0
  88. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/023_truthful_local_media_residency_boundaries.md +0 -0
  89. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/024_runtime_owned_run_scoped_media_execution.md +0 -0
  90. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/026_runtime_host_discovery_facade_for_core_catalogs.md +0 -0
  91. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/027_runtime_durable_bloc_prompt_cache_facade.md +0 -0
  92. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/028_runtime_bloc_kv_lifecycle_and_pruning.md +0 -0
  93. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/029_runtime_music_generation_and_discovery_via_abstractcore.md +0 -0
  94. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/completed/0846_mlx_instance_scheduling_and_execution_controls.md +0 -0
  95. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
  96. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
  97. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
  98. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
  99. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/0034_agent_runtime_convenience_constructor.md +0 -0
  100. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
  101. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
  102. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
  103. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/004_tests.md +0 -0
  104. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/005_docs_updates.md +0 -0
  105. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
  106. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
  107. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
  108. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/README.md +0 -0
  109. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
  110. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/0070_standalone_wui_browser_session_security_contract.md +0 -0
  111. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
  112. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
  113. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
  114. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
  115. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/0233_real_run_cancellation.md +0 -0
  116. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/025_runtime_retention_and_purge_contract.md +0 -0
  117. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/026_context_checkpoint_self_compression.md +0 -0
  118. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/027_quote_provenance_discipline.md +0 -0
  119. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/028_selective_artifact_rehydration.md +0 -0
  120. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/0845_session_prompt_cache_resume_and_purge_contract.md +0 -0
  121. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/0065_portable_process_and_lock_layer.md +0 -0
  122. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/0066_portable_io_and_media_reader.md +0 -0
  123. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_portability/README.md +0 -0
  124. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0044_meta_analysis_record.md +0 -0
  125. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0045_crash_replay_harness_and_ordering_invariant.md +0 -0
  126. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0046_per_run_driver_exclusion.md +0 -0
  127. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0047_indexed_idempotency_lookup.md +0 -0
  128. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0048_durable_io_unification.md +0 -0
  129. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0049_llm_client_mechanical_split.md +0 -0
  130. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0050_control_sidecar_all_writers.md +0 -0
  131. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0051_runtime_owned_durable_event_mailbox.md +0 -0
  132. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0052_sync_store_event_loop_tripwire.md +0 -0
  133. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0053_bounded_run_vars_growth.md +0 -0
  134. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0054_runtime_health_counters.md +0 -0
  135. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0055_jsonl_store_honesty.md +0 -0
  136. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0064_prompt_cache_fingerprint_stability.md +0 -0
  137. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0067_durable_write_discipline.md +0 -0
  138. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/0068_hot_path_store_reads.md +0 -0
  139. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/planned/runtime_systemic_reliability/README.md +0 -0
  140. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/0031_runtime_tool_spec_adapters_for_gateway_and_mcp.md +0 -0
  141. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/0036_local_media_residency_bridge_to_core_residency.md +0 -0
  142. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/0038_core_server_pool_residency_affinity.md +0 -0
  143. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/0069_document_renderer_professional_figures.md +0 -0
  144. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0056_schema_version_and_quarantine_loading.md +0 -0
  145. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0057_trust_boundary_stamp_registry.md +0 -0
  146. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0058_terminal_run_archival_helper.md +0 -0
  147. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0059_memory_span_handler_extraction.md +0 -0
  148. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0060_visualflow_compiler_decomposition.md +0 -0
  149. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0061_root_api_deprecation_machinery.md +0 -0
  150. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0062_dependency_honesty_extras.md +0 -0
  151. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/0063_b3_envelope_lane_unification.md +0 -0
  152. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/backlog/proposed/runtime_systemic_reliability/README.md +0 -0
  153. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/entity-runtime.md +0 -0
  154. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/evidence.md +0 -0
  155. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/limits.md +0 -0
  156. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/manual_testing.md +0 -0
  157. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/mcp-worker.md +0 -0
  158. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/proposal.md +0 -0
  159. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/provenance.md +0 -0
  160. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/snapshots.md +0 -0
  161. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/tool-approval.md +0 -0
  162. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/tools-comms.md +0 -0
  163. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/docs/workflow-bundles.md +0 -0
  164. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/emails.config.example.yaml +0 -0
  165. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/01_hello_world.py +0 -0
  166. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/02_ask_user.py +0 -0
  167. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/03_wait_until.py +0 -0
  168. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/04_multi_step.py +0 -0
  169. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/05_persistence.py +0 -0
  170. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/06_llm_integration.py +0 -0
  171. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/07_react_agent.py +0 -0
  172. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/examples/README.md +0 -0
  173. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/pytest.ini +0 -0
  174. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/scripts/backfill_diary_edges.py +0 -0
  175. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/__init__.py +0 -0
  176. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/__init__.py +0 -0
  177. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/config.py +0 -0
  178. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/effect_cancellation.py +0 -0
  179. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/event_keys.py +0 -0
  180. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/health.py +0 -0
  181. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/models.py +0 -0
  182. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/policy.py +0 -0
  183. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/run_lifecycle.py +0 -0
  184. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/spec.py +0 -0
  185. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/tool_scope.py +0 -0
  186. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/core/vars.py +0 -0
  187. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/documents/__init__.py +0 -0
  188. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/documents/charts.py +0 -0
  189. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/documents/docx.py +0 -0
  190. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/documents/pdf.py +0 -0
  191. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/evidence/__init__.py +0 -0
  192. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/evidence/recorder.py +0 -0
  193. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/history_bundle.py +0 -0
  194. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/__init__.py +0 -0
  195. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/act_only.py +0 -0
  196. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/chat.py +0 -0
  197. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/communities.py +0 -0
  198. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/diary.py +0 -0
  199. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/digest.py +0 -0
  200. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/entity_runtime.py +0 -0
  201. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/fingerprint.py +0 -0
  202. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/lease.py +0 -0
  203. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/life.py +0 -0
  204. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/memory_reader.py +0 -0
  205. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/night_voice.py +0 -0
  206. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/phase_graph.py +0 -0
  207. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/phase_spec.py +0 -0
  208. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/prelude.py +0 -0
  209. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/prompt_overlay.py +0 -0
  210. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/reflection.py +0 -0
  211. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/spec/entity_phases.vendored.json +0 -0
  212. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/substrate.py +0 -0
  213. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/tool_effects.py +0 -0
  214. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/tool_policy.py +0 -0
  215. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/tools.py +0 -0
  216. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/identity/visit_workflow.py +0 -0
  217. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/__init__.py +0 -0
  218. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
  219. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/agora_tools.py +0 -0
  220. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/comms_facade.py +0 -0
  221. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
  222. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/data_registry_facade.py +0 -0
  223. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
  224. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/discovery_facade.py +0 -0
  225. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/discovery_queries.py +0 -0
  226. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/host_facade.py +0 -0
  227. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/local_helper_tools.py +0 -0
  228. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
  229. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
  230. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/media_subprocess.py +0 -0
  231. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
  232. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
  233. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/run_facade.py +0 -0
  234. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
  235. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/telegram_facade.py +0 -0
  236. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
  237. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractcore/tool_inventory_facade.py +0 -0
  238. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
  239. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/brain_handlers.py +0 -0
  240. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
  241. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/identity_support.py +0 -0
  242. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/integrations/abstractmemory/seam_handlers.py +0 -0
  243. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/__init__.py +0 -0
  244. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/active_context.py +0 -0
  245. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/active_memory.py +0 -0
  246. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/compaction.py +0 -0
  247. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/kg_packets.py +0 -0
  248. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/memact_composer.py +0 -0
  249. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/recall_levels.py +0 -0
  250. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/memory/token_budget.py +0 -0
  251. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/rendering/__init__.py +0 -0
  252. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
  253. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/rendering/json_stringify.py +0 -0
  254. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/__init__.py +0 -0
  255. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/convenience.py +0 -0
  256. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/multi_store.py +0 -0
  257. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/registry.py +0 -0
  258. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/scheduler/scheduler.py +0 -0
  259. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/session_history.py +0 -0
  260. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/__init__.py +0 -0
  261. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/artifacts.py +0 -0
  262. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/base.py +0 -0
  263. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/commands.py +0 -0
  264. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/in_memory.py +0 -0
  265. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/json_files.py +0 -0
  266. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/lease.py +0 -0
  267. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/ledger_chain.py +0 -0
  268. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/ledger_slim.py +0 -0
  269. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/observable.py +0 -0
  270. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/offloading.py +0 -0
  271. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/serialize.py +0 -0
  272. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/snapshots.py +0 -0
  273. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/sqlite.py +0 -0
  274. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/storage/steer_sidecar.py +0 -0
  275. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/turn_grounding.py +0 -0
  276. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/utils/__init__.py +0 -0
  277. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/utils/atomic_files.py +0 -0
  278. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/utils/file_filters.py +0 -0
  279. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
  280. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
  281. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
  282. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
  283. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
  284. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
  285. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
  286. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
  287. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
  288. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
  289. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
  290. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
  291. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
  292. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
  293. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
  294. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
  295. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/execution_metrics.py +0 -0
  296. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/function_library.py +0 -0
  297. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
  298. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
  299. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/visualflow_compiler/visual/pin_expressions.py +0 -0
  300. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
  301. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/models.py +0 -0
  302. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/packer.py +0 -0
  303. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/reader.py +0 -0
  304. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/src/abstractruntime/workflow_bundle/registry.py +0 -0
  305. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/README.md +0 -0
  306. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/conftest.py +0 -0
  307. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_abstractcore_comms_facade.py +0 -0
  308. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_abstractcore_discovery_facade.py +0 -0
  309. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_abstractcore_host_facade.py +0 -0
  310. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_abstractcore_run_facade.py +0 -0
  311. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_abstractcore_telegram_facade.py +0 -0
  312. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_active_context_policy.py +0 -0
  313. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_active_memory.py +0 -0
  314. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_agora_agent_alias_identity.py +0 -0
  315. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_agora_tools_http.py +0 -0
  316. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_analyze_media_addressing_and_walling.py +0 -0
  317. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_answer_user_effect.py +0 -0
  318. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_artifacts.py +0 -0
  319. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_browser_probe_target_walling.py +0 -0
  320. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_budget_law_no_unrequested_caps.py +0 -0
  321. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_capability_default_reasoning.py +0 -0
  322. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_chat_summarizer_integration.py +0 -0
  323. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_code_node_restricted_python.py +0 -0
  324. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_command_store.py +0 -0
  325. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_compaction_helpers.py +0 -0
  326. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_control_adapter_while.py +0 -0
  327. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_crash_ordering_inversions.py +0 -0
  328. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_data_registry_facade.py +0 -0
  329. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_camera_gating.py +0 -0
  330. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_comms_gating.py +0 -0
  331. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_files.py +0 -0
  332. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_folders.py +0 -0
  333. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_include_skim_web.py +0 -0
  334. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_default_tools_search_files_executor.py +0 -0
  335. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_diary_capture.py +0 -0
  336. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_diary_write_rescue.py +0 -0
  337. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_directory_lease.py +0 -0
  338. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_disabled_toolsets_seam.py +0 -0
  339. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_discovery_survives_unbuildable_default.py +0 -0
  340. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_document_markdown_tables.py +0 -0
  341. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_document_renderers_hr_quote.py +0 -0
  342. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_durable_toolsets.py +0 -0
  343. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_durable_write_discipline.py +0 -0
  344. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
  345. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_effect_cancellation.py +0 -0
  346. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_effect_issuance_idempotency.py +0 -0
  347. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_effect_payload_stays_json_serializable.py +0 -0
  348. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_election_consequence_teaching.py +0 -0
  349. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_emergence_experiment.py +0 -0
  350. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_emit_event_uses_wait_index.py +0 -0
  351. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_emit_event_without_workflow_registry.py +0 -0
  352. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_endpoint_profile_route_context.py +0 -0
  353. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_awake_memory_fixes.py +0 -0
  354. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_brain_effects.py +0 -0
  355. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_chat_driver.py +0 -0
  356. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_chat_tools_reflection.py +0 -0
  357. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_diary.py +0 -0
  358. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_execute_tool.py +0 -0
  359. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_fetch_url_tool.py +0 -0
  360. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_life_loop.py +0 -0
  361. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_memory_richness.py +0 -0
  362. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_phase_graph_conformance.py +0 -0
  363. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_recent_memories.py +0 -0
  364. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_runtime.py +0 -0
  365. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_search_memory.py +0 -0
  366. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_sleep_bound_and_yield_attribution.py +0 -0
  367. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_substrate_resolution.py +0 -0
  368. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_visit_honesty.py +0 -0
  369. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_workspace_cap.py +0 -0
  370. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_entity_workspace_tools.py +0 -0
  371. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_event_wait_index.py +0 -0
  372. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_every_path_bearing_tool_is_walled.py +0 -0
  373. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_evidence_recorder.py +0 -0
  374. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_evidence_recorder_post_policy_envelope.py +0 -0
  375. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_execute_command_output_offload.py +0 -0
  376. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_execution_capability_discovery.py +0 -0
  377. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_format_repair_nudge.py +0 -0
  378. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_fresh_install_no_provider.py +0 -0
  379. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_gateway_facades_c4899.py +0 -0
  380. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_git_read_only_refiner.py +0 -0
  381. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_hot_path_store_reads.py +0 -0
  382. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_indexed_idempotency_lookup.py +0 -0
  383. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_integration_abstractcore.py +0 -0
  384. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_integrations_abstractcore.py +0 -0
  385. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_json_file_run_store_children_index.py +0 -0
  386. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_json_run_cache_bound.py +0 -0
  387. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_json_store_scan_memo.py +0 -0
  388. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_jsonl_ledger_recovery.py +0 -0
  389. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_kg_learn_and_recall_contract.py +0 -0
  390. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_ledger_chain.py +0 -0
  391. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_ledger_record_slimming.py +0 -0
  392. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_ledger_subscription.py +0 -0
  393. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_media_artifact_refs.py +0 -0
  394. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +0 -0
  395. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_media_uses_source_path_label.py +0 -0
  396. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_payload_shape_refusal.py +0 -0
  397. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_requires_prompt.py +0 -0
  398. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_response_schema_normalization.py +0 -0
  399. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_structured_output_fallback.py +0 -0
  400. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_text_phase_progress.py +0 -0
  401. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_truncation_retry_contract.py +0 -0
  402. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_use_context_appends_turn.py +0 -0
  403. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
  404. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_client_grounding_tail.py +0 -0
  405. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_client_media_artifacts.py +0 -0
  406. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_client_system_context.py +0 -0
  407. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_client_tool_call_parsing.py +0 -0
  408. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_retry_classification.py +0 -0
  409. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_llm_streaming_on_token.py +0 -0
  410. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_local_helper_tool_exposure.py +0 -0
  411. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_local_residency_host_sweep.py +0 -0
  412. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
  413. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_max_iterations_ceiling.py +0 -0
  414. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_mcp_remote_tool_executor.py +0 -0
  415. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_mcp_worker_logging.py +0 -0
  416. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_mcp_worker_security.py +0 -0
  417. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_mcp_worker_stdio.py +0 -0
  418. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_media_artifact_resolution.py +0 -0
  419. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_media_capability_default_routing.py +0 -0
  420. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_media_subprocess.py +0 -0
  421. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memact_composer_from_kg_result.py +0 -0
  422. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_appraise_handler.py +0 -0
  423. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_communities.py +0 -0
  424. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
  425. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_packets.py +0 -0
  426. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_predicate_aliasing.py +0 -0
  427. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_query_packetization_restart.py +0 -0
  428. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
  429. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
  430. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_note_effect.py +0 -0
  431. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_query_effect.py +0 -0
  432. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_query_rich_filters.py +0 -0
  433. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
  434. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_seam_handlers.py +0 -0
  435. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_seam_sqlite_durability.py +0 -0
  436. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_memory_tag_effect.py +0 -0
  437. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_mlx_generation_serialization.py +0 -0
  438. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_model_eject_cancel.py +0 -0
  439. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_model_residency_control_plane.py +0 -0
  440. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_model_residency_lock_and_context_estimate.py +0 -0
  441. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_multi_store_scheduler.py +0 -0
  442. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_multimodal_abstractcore_integration.py +0 -0
  443. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_native_mlx_application_wiring.py +0 -0
  444. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_native_mlx_execution_controls_live.py +0 -0
  445. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_native_tool_channel.py +0 -0
  446. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_night_voice.py +0 -0
  447. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_no_default_provider_refusal_ux.py +0 -0
  448. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_offload_answer_chain_c4978.py +0 -0
  449. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_offloaded_node_traces_report_unknown_not_zero.py +0 -0
  450. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_offloading.py +0 -0
  451. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_parallel_readonly_tool_execution.py +0 -0
  452. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_pause_resume.py +0 -0
  453. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_pdf_unicode_rendering.py +0 -0
  454. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_personal_cycle.py +0 -0
  455. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_phantom_attachment_index.py +0 -0
  456. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_phase_graph_artifact_control.py +0 -0
  457. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_phase_graph_obedience.py +0 -0
  458. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_phase_vocabulary_migration.py +0 -0
  459. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_pooled_client_strips_construction_cache_key.py +0 -0
  460. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_cache_export_import.py +0 -0
  461. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_cache_fingerprint_stability.py +0 -0
  462. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_cache_modules.py +0 -0
  463. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_cache_posture_inheritance.py +0 -0
  464. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_cache_thinking_and_prompt_only.py +0 -0
  465. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_prompt_overlay.py +0 -0
  466. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_provider_endpoint_profile_resolution.py +0 -0
  467. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_provider_pin_routing_isolation.py +0 -0
  468. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_queryable_run_store.py +0 -0
  469. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
  470. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_read_idle_threading.py +0 -0
  471. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_readoption_experiment.py +0 -0
  472. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_real_integration.py +0 -0
  473. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_realize_election.py +0 -0
  474. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_recall_levels_policy.py +0 -0
  475. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_remote_client_cancel.py +0 -0
  476. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_remote_llm_client.py +0 -0
  477. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_remote_speculation_defaults.py +0 -0
  478. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_rendering_agent_trace_report.py +0 -0
  479. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_rendering_json_stringify.py +0 -0
  480. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_report_branding.py +0 -0
  481. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_retry_idempotency.py +0 -0
  482. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_run_history_bundle.py +0 -0
  483. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_run_scoped_tool_policy.py +0 -0
  484. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_run_tool_scope_ceiling.py +0 -0
  485. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_browser_session_boundary.py +0 -0
  486. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
  487. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_default_provider_model_refresh.py +0 -0
  488. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_effect_invocation_trace.py +0 -0
  489. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_health_and_bounded_vars.py +0 -0
  490. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_install_boundary.py +0 -0
  491. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
  492. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_node_traces.py +0 -0
  493. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_start_seeds_tool_support.py +0 -0
  494. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_runtime_tick_step_gate.py +0 -0
  495. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_scheduler.py +0 -0
  496. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_send_email_refiner.py +0 -0
  497. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
  498. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_session_history.py +0 -0
  499. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_session_prompt_cache_attribution.py +0 -0
  500. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_session_prompt_cache_visibility.py +0 -0
  501. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_session_route_stamp.py +0 -0
  502. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_shell_tool_exposure.py +0 -0
  503. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_snapshots.py +0 -0
  504. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_speculation_inheritance.py +0 -0
  505. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_speculation_reaches_provider_construction.py +0 -0
  506. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_sqlite_ledger_store.py +0 -0
  507. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_start_subworkflow_async_wait.py +0 -0
  508. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
  509. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
  510. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_steer_sidecar.py +0 -0
  511. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_storage_deletion.py +0 -0
  512. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_structured_output_schema_enum.py +0 -0
  513. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_subworkflow.py +0 -0
  514. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_terminal_effect_completion.py +0 -0
  515. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
  516. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_thinking_inheritance.py +0 -0
  517. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
  518. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_approval_executor.py +0 -0
  519. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_approval_resume_executes.py +0 -0
  520. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_approval_wait_key_identity.py +0 -0
  521. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_calls_idempotency_keys.py +0 -0
  522. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_catalog.py +0 -0
  523. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_descriptor_registry.py +0 -0
  524. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_argument_sanitization.py +0 -0
  525. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_error_output_detection.py +0 -0
  526. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_filename_alias.py +0 -0
  527. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
  528. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_read_file_aliases.py +0 -0
  529. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_executor_timeout.py +0 -0
  530. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_inventory_facade.py +0 -0
  531. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_invoke_effect.py +0 -0
  532. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_policy_and_mounts.py +0 -0
  533. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_tool_wait_allowlist_safety.py +0 -0
  534. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_topic_election_world_model.py +0 -0
  535. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_trace_context_propagation.py +0 -0
  536. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_turn_grounding_byte_stability.py +0 -0
  537. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_turn_grounding_carriers_a3.py +0 -0
  538. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_vars_query_effect.py +0 -0
  539. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visit_ab_fixture.py +0 -0
  540. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visit_history_replay_caps.py +0 -0
  541. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visit_midturn_elections.py +0 -0
  542. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visit_midturn_resume.py +0 -0
  543. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visit_workflow.py +0 -0
  544. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
  545. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_skills_block_passthrough.py +0 -0
  546. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
  547. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
  548. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
  549. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
  550. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_entity_memory_nodes.py +0 -0
  551. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_flow_end_effect_only_persistence.py +0 -0
  552. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_llm_call_partial_override.py +0 -0
  553. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
  554. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_memact_compose_node.py +0 -0
  555. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
  556. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
  557. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
  558. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_unknown_node_type_refuses.py +0 -0
  559. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visual_wait_event_deadline_passthrough.py +0 -0
  560. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_add_message_builtin.py +0 -0
  561. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
  562. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_agora_react_agent.py +0 -0
  563. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_call_tool_node.py +0 -0
  564. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_capability_routes_and_thinking.py +0 -0
  565. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_compiler_basic.py +0 -0
  566. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
  567. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_continue_on_error.py +0 -0
  568. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_edit_json_schema_node.py +0 -0
  569. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_event_inbox_react_agent.py +0 -0
  570. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_file_nodes_workspace.py +0 -0
  571. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_function_library.py +0 -0
  572. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_get_element_node.py +0 -0
  573. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_get_random_element_node.py +0 -0
  574. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_get_var_node.py +0 -0
  575. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_has_tools_builtin.py +0 -0
  576. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
  577. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
  578. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_make_object_node.py +0 -0
  579. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_media_nodes.py +0 -0
  580. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_memory_effect_nodes.py +0 -0
  581. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_memory_source_pins.py +0 -0
  582. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_pin_expressions.py +0 -0
  583. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_prompt_only.py +0 -0
  584. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_random_nodes.py +0 -0
  585. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_schema_enum_switch.py +0 -0
  586. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_string_contains_replace.py +0 -0
  587. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_visualflow_tool_parameters_node.py +0 -0
  588. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_w4_feelings_lens.py +0 -0
  589. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_wait_event_deadline.py +0 -0
  590. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_wait_event_prompt_metadata.py +0 -0
  591. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_wait_until_streak.py +0 -0
  592. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_wait_until_utc_normalization.py +0 -0
  593. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workflow_bundle_registry.py +0 -0
  594. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workspace_policy_absolute_reanchor.py +0 -0
  595. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workspace_policy_allowlist_mode.py +0 -0
  596. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
  597. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
  598. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_workspace_prompt_context.py +0 -0
  599. {abstractruntime-0.4.34 → abstractruntime-0.5.0}/tests/test_write_chart.py +0 -0
@@ -7,14 +7,15 @@ The canonical dependency list lives in `pyproject.toml`.
7
7
 
8
8
  ## Runtime dependencies (core install)
9
9
 
10
- - **abstractsemantics** (`>=0.0.3`) — structured schema registry support (declared in `pyproject.toml`, used in `src/abstractruntime/integrations/abstractmemory/effect_handlers.py` and VisualFlow execution wiring).
11
- - **AbstractMemory** (`>=0.2.6`) — TripleStore models and store contract used by Runtime's `MEMORY_KG_*` effects. Durable/vector backend dependencies such as LanceDB remain selected by hosts.
10
+ - **abstractsemantics** (`>=0.0.5`) — structured schema registry support (declared in `pyproject.toml`, used in `src/abstractruntime/integrations/abstractmemory/effect_handlers.py` and VisualFlow execution wiring).
11
+ - **AbstractMemory** (`>=0.3.0`) — TripleStore models and store contract used by Runtime's `MEMORY_KG_*` effects. Durable/vector backend dependencies such as LanceDB remain selected by hosts.
12
12
 
13
13
  ## Runtime integrations
14
- - **abstractcore** (`>=2.13.31`) — LLM, tools, media, and capability integration used by the base `abstractruntime` install (declared in `pyproject.toml`, implementation under `src/abstractruntime/integrations/abstractcore/*`, docs: `docs/integrations/abstractcore.md`).
14
+ - **abstractcore** (`abstractcore[remote,tools,vision,voice,audio,music]>=2.15.1`) — LLM, tools, media, and capability integration used by the base `abstractruntime` install; the `apple` and `gpu` extras select `abstractcore[all-apple]` / `abstractcore[all-gpu]` at the same floor (declared in `pyproject.toml`, implementation under `src/abstractruntime/integrations/abstractcore/*`, docs: `docs/integrations/abstractcore.md`).
15
15
  - The AbstractCore integration uses **httpx** for remote mode (`src/abstractruntime/integrations/abstractcore/llm_client.py`) and **pydantic** for structured validation (`src/abstractruntime/integrations/abstractcore/effect_handlers.py`). These are provided by AbstractCore’s dependency set.
16
- - **abstractcore[tools]** (`>=2.13.31`) — toolchain extra used by the base Runtime and `abstractruntime-mcp-worker` entry point (declared in `pyproject.toml`) and intended to include HTML parsing dependencies (see comments in `pyproject.toml`).
17
- - **RestrictedPython** (optional) — used for sandboxed execution of VisualFlow “Code” nodes when available (`src/abstractruntime/visualflow_compiler/visual/code_executor.py`).
16
+ - The `tools` extra of AbstractCore backs the base Runtime toolset and the `abstractruntime-mcp-worker` entry point.
17
+ - **RestrictedPython** (`>=7.0`, core install) — sandbox for VisualFlow “Code” nodes and pin expressions (`src/abstractruntime/visualflow_compiler/visual/code_executor.py`).
18
+ - **pypdf** and **reportlab** — VisualFlow `Read PDF` / `Write PDF` nodes in the base install.
18
19
 
19
20
  ## Build & test tooling
20
21
 
@@ -5,17 +5,147 @@ 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.
116
+
117
+ ## [0.4.35] - 2026-09-25
118
+
119
+ ### Fixed
120
+
121
+ - `models_engines_support()` and the `AbstractCoreTooOld` error now name
122
+ AbstractCore 2.15.1 as the required version (they said 2.14.0), matching the
123
+ base-install floor. Who is affected: hosts such as AbstractGateway that read
124
+ `required` to decide whether the models and engines features are usable. They
125
+ could accept AbstractCore 2.14.x, where `host_job_cancel(by=..., user=...)`
126
+ fails. No action is needed if you install AbstractRuntime normally: the
127
+ AbstractCore floor is unchanged at 2.15.1.
128
+
129
+ ### Documentation
130
+
131
+ - `ROADMAP.md` no longer shows a stale "v0.4.2" status or a priority list; it
132
+ points to `CHANGELOG.md` and the AbstractFramework backlog.
9
133
 
10
134
  ## [0.4.34] - 2026-09-24
11
135
 
12
136
  ### Changed
13
137
 
14
- - `config_facade.host_job_cancel(job_id, *, by="api", user=None)` passes who asked for a cancel to
15
- AbstractCore (needs AbstractCore with `HostJobRegistry.cancel(by=, user=)`), so a cancelled
16
- download can say who cancelled it.
17
- - The AbstractCore floor is now 2.15.1 in the base install and in the `apple`
18
- and `gpu` extras (the release whose host-job cancel takes `by` and `user`).
138
+ - `config_facade.host_job_cancel(job_id, *, by="api", user=None)` records who
139
+ cancelled a host job (a model download, delete or engine install): `by`
140
+ (`api`, or `console` for a click in an embedded console) and the signed-in
141
+ `user` are stored on the job as `cancelled_by`, `cancelled_by_user` and
142
+ `ended_reason`. Existing calls without these arguments keep working and are
143
+ recorded as `by="api"`. Hosts such as AbstractGateway can pass the requesting
144
+ account to show who cancelled a job.
145
+ - Compatibility: AbstractRuntime 0.4.34 requires AbstractCore 2.15.1 or newer
146
+ (was 2.14.0) in the base install and in the `apple` and `gpu` extras.
147
+ Upgrading AbstractRuntime upgrades AbstractCore accordingly; if you pin
148
+ AbstractCore yourself, raise the pin to 2.15.1 as well.
19
149
 
20
150
  ## [0.4.33] - 2026-09-23
21
151
 
@@ -865,7 +995,9 @@ AbstractRuntime is the durable execution substrate designed to pair with Abstrac
865
995
 
866
996
  Initial development version with basic proof-of-concept features.
867
997
 
868
- [Unreleased]: https://github.com/lpalbou/abstractruntime/compare/v0.4.34...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
1000
+ [0.4.35]: https://github.com/lpalbou/abstractruntime/compare/v0.4.34...v0.4.35
869
1001
  [0.4.34]: https://github.com/lpalbou/abstractruntime/compare/v0.4.33...v0.4.34
870
1002
  [0.4.33]: https://github.com/lpalbou/abstractruntime/compare/v0.4.32...v0.4.33
871
1003
  [0.4.32]: https://github.com/lpalbou/abstractruntime/compare/v0.4.29...v0.4.32
@@ -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.34
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.34 • **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.34)
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
@@ -189,12 +189,15 @@ Drivers + distribution:
189
189
 
190
190
  Runtime-owned integrations:
191
191
  - AbstractCore (LLM + tools, `MODEL_RESIDENCY` with residency locks and context estimates, public discovery/host/run facades, cached sessions with per-session prompt-cache listing/clearing, host memory snapshots, local-only prompt-cache export/import admin, durable bloc prompt-cache controls, bindings, lifecycle operations, generated image/video/voice/music outputs with progress events, host email helpers, Telegram host wrappers, and tool approval waits): `docs/integrations/abstractcore.md`
192
- - AbstractCore models and engines for hosts (AbstractCore 2.14.0+): `config_facade` passes through the host profile, local-engine status and installs, the model catalog with fit verdicts, installed models, deletes, host jobs and the embeddable console screens: `docs/integrations/abstractcore.md#models-engines-and-host-jobs-config-facade`
192
+ - AbstractCore models and engines for hosts: `config_facade` passes through the host profile, local-engine status and installs, the model catalog with fit verdicts, installed models, deletes, host jobs (with who-cancelled attribution) and the embeddable console screens: `docs/integrations/abstractcore.md#models-engines-and-host-jobs-config-facade`
193
193
  - For outbound comms, use the durable run facade when the send belongs to a run: `get_abstractcore_run_facade(...).send_email(...)` / `send_telegram_message(...)`. If that child run pauses for approval or passthrough execution, resume it through `resume_tool_calls(...)`. Direct host-facade send helpers and the standalone email comms facade remain host-local and nondurable.
194
194
  - AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
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
 
@@ -232,7 +235,11 @@ sr = create_scheduled_runtime(
232
235
  | [Troubleshooting](docs/troubleshooting.md) | Symptom-oriented setup, runtime, and integration fixes |
233
236
  | [Architecture](docs/architecture.md) | Component map + diagrams |
234
237
  | [Overview](docs/proposal.md) | Design goals, core concepts, and scope |
235
- | [Integrations](docs/integrations/) | Integration guides (AbstractCore) |
238
+ | [AbstractCore Integration](docs/integrations/abstractcore.md) | `LLM_CALL` / `TOOL_CALLS`, host facades, models/engines/host jobs |
239
+ | [Artifacts](docs/artifacts.md) | Artifact identity, descriptors, catalog search and access stats |
240
+ | [Tool Approval](docs/tool-approval.md) | Tool risk tiers, run-policy ceiling, per-call refiners |
241
+ | [Comms Toolset](docs/tools-comms.md) | Opt-in email/WhatsApp/Telegram tools |
242
+ | [Entity Runtime](docs/entity-runtime.md) | Per-entity runtimes, homes, leases, visit waits |
236
243
  | [Snapshots](docs/snapshots.md) | Named checkpoints for run state |
237
244
  | [Provenance](docs/provenance.md) | Tamper-evident ledger documentation |
238
245
  | [Evidence](docs/evidence.md) | Artifact-backed evidence capture for web/command tools |
@@ -244,7 +251,7 @@ sr = create_scheduled_runtime(
244
251
  | [Code of Conduct](CODE_OF_CONDUCT.md) | Contributor conduct expectations |
245
252
  | [Security](SECURITY.md) | Responsible vulnerability reporting |
246
253
  | [Acknowledgments](ACKNOWLEDGMENTS.md) | Credits |
247
- | [ROADMAP](ROADMAP.md) | Prioritized next steps |
254
+ | [ROADMAP](ROADMAP.md) | Current status and longer-term direction |
248
255
 
249
256
  ## Development
250
257
 
@@ -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.34 • **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.34)
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
@@ -139,12 +139,15 @@ Drivers + distribution:
139
139
 
140
140
  Runtime-owned integrations:
141
141
  - AbstractCore (LLM + tools, `MODEL_RESIDENCY` with residency locks and context estimates, public discovery/host/run facades, cached sessions with per-session prompt-cache listing/clearing, host memory snapshots, local-only prompt-cache export/import admin, durable bloc prompt-cache controls, bindings, lifecycle operations, generated image/video/voice/music outputs with progress events, host email helpers, Telegram host wrappers, and tool approval waits): `docs/integrations/abstractcore.md`
142
- - AbstractCore models and engines for hosts (AbstractCore 2.14.0+): `config_facade` passes through the host profile, local-engine status and installs, the model catalog with fit verdicts, installed models, deletes, host jobs and the embeddable console screens: `docs/integrations/abstractcore.md#models-engines-and-host-jobs-config-facade`
142
+ - AbstractCore models and engines for hosts: `config_facade` passes through the host profile, local-engine status and installs, the model catalog with fit verdicts, installed models, deletes, host jobs (with who-cancelled attribution) and the embeddable console screens: `docs/integrations/abstractcore.md#models-engines-and-host-jobs-config-facade`
143
143
  - For outbound comms, use the durable run facade when the send belongs to a run: `get_abstractcore_run_facade(...).send_email(...)` / `send_telegram_message(...)`. If that child run pauses for approval or passthrough execution, resume it through `resume_tool_calls(...)`. Direct host-facade send helpers and the standalone email comms facade remain host-local and nondurable.
144
144
  - AbstractMemory TripleStore integration for `MEMORY_KG_*` effects. Runtime
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
 
@@ -182,7 +185,11 @@ sr = create_scheduled_runtime(
182
185
  | [Troubleshooting](docs/troubleshooting.md) | Symptom-oriented setup, runtime, and integration fixes |
183
186
  | [Architecture](docs/architecture.md) | Component map + diagrams |
184
187
  | [Overview](docs/proposal.md) | Design goals, core concepts, and scope |
185
- | [Integrations](docs/integrations/) | Integration guides (AbstractCore) |
188
+ | [AbstractCore Integration](docs/integrations/abstractcore.md) | `LLM_CALL` / `TOOL_CALLS`, host facades, models/engines/host jobs |
189
+ | [Artifacts](docs/artifacts.md) | Artifact identity, descriptors, catalog search and access stats |
190
+ | [Tool Approval](docs/tool-approval.md) | Tool risk tiers, run-policy ceiling, per-call refiners |
191
+ | [Comms Toolset](docs/tools-comms.md) | Opt-in email/WhatsApp/Telegram tools |
192
+ | [Entity Runtime](docs/entity-runtime.md) | Per-entity runtimes, homes, leases, visit waits |
186
193
  | [Snapshots](docs/snapshots.md) | Named checkpoints for run state |
187
194
  | [Provenance](docs/provenance.md) | Tamper-evident ledger documentation |
188
195
  | [Evidence](docs/evidence.md) | Artifact-backed evidence capture for web/command tools |
@@ -194,7 +201,7 @@ sr = create_scheduled_runtime(
194
201
  | [Code of Conduct](CODE_OF_CONDUCT.md) | Contributor conduct expectations |
195
202
  | [Security](SECURITY.md) | Responsible vulnerability reporting |
196
203
  | [Acknowledgments](ACKNOWLEDGMENTS.md) | Credits |
197
- | [ROADMAP](ROADMAP.md) | Prioritized next steps |
204
+ | [ROADMAP](ROADMAP.md) | Current status and longer-term direction |
198
205
 
199
206
  ## Development
200
207
 
@@ -1,6 +1,8 @@
1
1
  # AbstractRuntime Roadmap
2
2
 
3
- ## Current status (v0.4.2)
3
+ ## Current status
4
+
5
+ What changed in each release is in [CHANGELOG.md](CHANGELOG.md); planned work is tracked in the [AbstractFramework backlog](https://github.com/lpalbou/abstractframework/tree/main/docs/backlog).
4
6
 
5
7
  AbstractRuntime provides a durable workflow kernel plus optional integrations:
6
8
  - durable execution: `Runtime.start/tick/resume`, explicit `WaitState` (`src/abstractruntime/core/runtime.py`)
@@ -13,22 +15,6 @@ AbstractRuntime provides a durable workflow kernel plus optional integrations:
13
15
  - VisualFlow compiler + WorkflowBundles (`src/abstractruntime/visualflow_compiler/*`, `src/abstractruntime/workflow_bundle/*`)
14
16
  - AbstractCore integration for `LLM_CALL` / `TOOL_CALLS` (`docs/integrations/abstractcore.md`)
15
17
 
16
- ## Near-term priorities
17
-
18
- These are tracked in `docs/backlog/planned/`:
19
-
20
- 1. **Signatures and keys** — non-forgeable provenance (beyond tamper-evidence)
21
- `docs/backlog/planned/008_signatures_and_keys.md`
22
-
23
- 2. **Remote tool worker executor** — first-class worker boundary for tool execution
24
- `docs/backlog/planned/014_remote_tool_worker_executor.md`
25
-
26
- 3. **Limit warnings + observability events** — surface `_limits` warnings durably/streaming
27
- `docs/backlog/planned/017_limit_warnings_and_observability.md`
28
-
29
- 4. **Agent integration improvements** — reduce friction for external agent loops building on runtime
30
- `docs/backlog/planned/015_agent_integration_improvements.md`
31
-
32
18
  ## Longer-term (not scheduled)
33
19
 
34
20
  - distributed scheduling primitives (beyond in-process polling)
@@ -24,14 +24,13 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
24
24
  ## Guides
25
25
 
26
26
  - `faq.md` — common questions (recommended)
27
- - `troubleshooting.md` — symptom-oriented setup, runtime, and integration fixes
28
27
  - `manual_testing.md` — manual smoke tests and how to run the test suite
29
28
  - `artifacts.md` — Runtime artifact identity, descriptors, provenance, catalog search, and access stats
30
- - `integrations/abstractcore.md` — wiring `LLM_CALL` / `TOOL_CALLS`, 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
31
- - run history bundle replay now also exports `resolved_actions` summaries for cross-client capability replay; see `api.md` and `integrations/abstractcore.md`
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
32
30
  - `tools-comms.md` — enabling the optional comms toolset (email/WhatsApp/Telegram)
33
31
  - `tool-approval.md` — tool risk tiers, the run-policy rank ceiling, and per-call refiners (the `send_email` self-recipient rule)
34
32
  - `api.md#workflowbundles-flow-and-visualflow-distribution` — VisualFlow compiler APIs, media nodes, and document nodes (`read_pdf` / `write_pdf` / `write_docx`)
33
+ - `api.md#run-history-bundle-export-portable-replay-artifact` — run history bundles, including `resolved_actions` summaries for cross-client capability replay
35
34
 
36
35
  ## Features (reference)
37
36
 
@@ -50,6 +49,6 @@ In this repo, the AbstractCore wiring lives under `src/abstractruntime/integrati
50
49
  - `../CONTRIBUTING.md` — how to build/test and submit changes
51
50
  - `../SECURITY.md` — responsible vulnerability reporting
52
51
  - `../ACKNOWLEDGMENTS.md` — credits
53
- - `../ROADMAP.md` — prioritized next steps
52
+ - `../ROADMAP.md` — current status and longer-term direction
54
53
  - `adr/README.md` — architectural decisions (why)
55
54
  - `backlog/README.md` — implemented and planned work items (what/how)
@@ -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