AbstractRuntime 0.4.12__tar.gz → 0.4.13__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 (298) hide show
  1. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/CHANGELOG.md +6 -0
  2. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/PKG-INFO +12 -2
  3. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/pyproject.toml +12 -2
  4. abstractruntime-0.4.13/release-notes.md +3 -0
  5. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_media_artifact_refs.py +7 -2
  6. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_media_artifact_refs_persist_across_restart.py +7 -3
  7. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_media_uses_source_path_label.py +6 -1
  8. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_packaging_extras.py +14 -7
  9. abstractruntime-0.4.12/release-notes.md +0 -6
  10. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/.github/workflows/ci.yml +0 -0
  11. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/.github/workflows/release.yml +0 -0
  12. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/.gitignore +0 -0
  13. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/ACKNOWLEDGMENTS.md +0 -0
  14. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/CONTRIBUTING.md +0 -0
  15. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/LICENSE +0 -0
  16. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/README.md +0 -0
  17. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/ROADMAP.md +0 -0
  18. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/SECURITY.md +0 -0
  19. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/README.md +0 -0
  20. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/adr/0001_layered_coupling_with_abstractcore.md +0 -0
  21. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/adr/0002_execution_modes_local_remote_hybrid.md +0 -0
  22. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/adr/0003_provenance_tamper_evident_hash_chain.md +0 -0
  23. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/adr/README.md +0 -0
  24. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/api.md +0 -0
  25. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/architecture.md +0 -0
  26. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/README.md +0 -0
  27. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/001_runtime_kernel.md +0 -0
  28. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/002_persistence_and_ledger.md +0 -0
  29. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/003_wait_primitives.md +0 -0
  30. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/004_scheduler_driver.md +0 -0
  31. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/005_abstractcore_integration.md +0 -0
  32. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/006_snapshots_bookmarks.md +0 -0
  33. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/007_provenance_hash_chain.md +0 -0
  34. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/009_artifact_store.md +0 -0
  35. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/010_examples_and_composition.md +0 -0
  36. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/011_subworkflow_support.md +0 -0
  37. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/012_run_store_query_and_scheduler_support.md +0 -0
  38. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/013_effect_retries_and_idempotency.md +0 -0
  39. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/completed/016_runtime_aware_parameters.md +0 -0
  40. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/001_integrations_abstractcore.md +0 -0
  41. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/001_runtime_kernel.md +0 -0
  42. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/002_persistence_and_ledger.md +0 -0
  43. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/002_snapshots_bookmarks.md +0 -0
  44. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/003_provenance_ledger_chain.md +0 -0
  45. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/003_wait_resume_and_scheduler.md +0 -0
  46. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/004_effect_handlers_and_integrations.md +0 -0
  47. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/004_tests.md +0 -0
  48. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/005_docs_updates.md +0 -0
  49. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/005_examples_and_composition.md +0 -0
  50. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/006_ai_fingerprint_and_provenance.md +0 -0
  51. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/DEPRECATED_README.md +0 -0
  52. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/README.md +0 -0
  53. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/deprecated/abstractruntime_docs_final_02a7373b.plan.md +0 -0
  54. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/planned/008_signatures_and_keys.md +0 -0
  55. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/planned/014_remote_tool_worker_executor.md +0 -0
  56. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/planned/015_agent_integration_improvements.md +0 -0
  57. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/planned/017_limit_warnings_and_observability.md +0 -0
  58. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/planned/018_workspace_access_policy_for_media_and_tools.md +0 -0
  59. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/proposed/2026-05-08_runtime_gateway_env_namespace_cleanup.md +0 -0
  60. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/proposed/2026-05-08_runtime_gateway_install_boundary.md +0 -0
  61. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/backlog/proposed/2026-05-09_runtime_retention_and_purge_contract.md +0 -0
  62. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/evidence.md +0 -0
  63. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/faq.md +0 -0
  64. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/getting-started.md +0 -0
  65. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/integrations/abstractcore.md +0 -0
  66. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/limits.md +0 -0
  67. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/manual_testing.md +0 -0
  68. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/mcp-worker.md +0 -0
  69. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/proposal.md +0 -0
  70. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/provenance.md +0 -0
  71. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/snapshots.md +0 -0
  72. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/tools-comms.md +0 -0
  73. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/docs/workflow-bundles.md +0 -0
  74. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/emails.config.example.yaml +0 -0
  75. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/01_hello_world.py +0 -0
  76. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/02_ask_user.py +0 -0
  77. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/03_wait_until.py +0 -0
  78. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/04_multi_step.py +0 -0
  79. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/05_persistence.py +0 -0
  80. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/06_llm_integration.py +0 -0
  81. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/07_react_agent.py +0 -0
  82. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/examples/README.md +0 -0
  83. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/llms-full.txt +0 -0
  84. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/llms.txt +0 -0
  85. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/mkdocs.yml +0 -0
  86. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/pytest.ini +0 -0
  87. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/__init__.py +0 -0
  88. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/__init__.py +0 -0
  89. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/config.py +0 -0
  90. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/event_keys.py +0 -0
  91. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/models.py +0 -0
  92. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/policy.py +0 -0
  93. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/runtime.py +0 -0
  94. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/spec.py +0 -0
  95. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/core/vars.py +0 -0
  96. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/evidence/__init__.py +0 -0
  97. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/evidence/recorder.py +0 -0
  98. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/history_bundle.py +0 -0
  99. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/identity/__init__.py +0 -0
  100. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/identity/fingerprint.py +0 -0
  101. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/__init__.py +0 -0
  102. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/__init__.py +0 -0
  103. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/constants.py +0 -0
  104. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/default_tools.py +0 -0
  105. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/effect_handlers.py +0 -0
  106. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/embeddings_client.py +0 -0
  107. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/factory.py +0 -0
  108. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/llm_client.py +0 -0
  109. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/logging.py +0 -0
  110. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/mcp_worker.py +0 -0
  111. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/observability.py +0 -0
  112. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/output_specs.py +0 -0
  113. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/session_attachments.py +0 -0
  114. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/summarizer.py +0 -0
  115. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/tool_executor.py +0 -0
  116. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractcore/workspace_scoped_tools.py +0 -0
  117. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractmemory/__init__.py +0 -0
  118. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/integrations/abstractmemory/effect_handlers.py +0 -0
  119. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/__init__.py +0 -0
  120. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/active_context.py +0 -0
  121. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/active_memory.py +0 -0
  122. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/compaction.py +0 -0
  123. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/kg_packets.py +0 -0
  124. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/memact_composer.py +0 -0
  125. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/recall_levels.py +0 -0
  126. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/memory/token_budget.py +0 -0
  127. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/rendering/__init__.py +0 -0
  128. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/rendering/agent_trace_report.py +0 -0
  129. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/rendering/json_stringify.py +0 -0
  130. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/scheduler/__init__.py +0 -0
  131. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/scheduler/convenience.py +0 -0
  132. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/scheduler/registry.py +0 -0
  133. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/scheduler/scheduler.py +0 -0
  134. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/__init__.py +0 -0
  135. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/artifacts.py +0 -0
  136. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/base.py +0 -0
  137. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/commands.py +0 -0
  138. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/in_memory.py +0 -0
  139. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/json_files.py +0 -0
  140. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/ledger_chain.py +0 -0
  141. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/observable.py +0 -0
  142. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/offloading.py +0 -0
  143. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/snapshots.py +0 -0
  144. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/storage/sqlite.py +0 -0
  145. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/__init__.py +0 -0
  146. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/__init__.py +0 -0
  147. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/agent_adapter.py +0 -0
  148. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/context_adapter.py +0 -0
  149. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/control_adapter.py +0 -0
  150. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/effect_adapter.py +0 -0
  151. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/event_adapter.py +0 -0
  152. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/function_adapter.py +0 -0
  153. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/memact_adapter.py +0 -0
  154. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/subflow_adapter.py +0 -0
  155. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/adapters/variable_adapter.py +0 -0
  156. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/compiler.py +0 -0
  157. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/flow.py +0 -0
  158. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/__init__.py +0 -0
  159. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/agent_ids.py +0 -0
  160. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/builtins.py +0 -0
  161. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/code_executor.py +0 -0
  162. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/executor.py +0 -0
  163. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/models.py +0 -0
  164. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/visualflow_compiler/visual/multi_entry_lowering.py +0 -0
  165. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/workflow_bundle/__init__.py +0 -0
  166. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/workflow_bundle/models.py +0 -0
  167. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/workflow_bundle/packer.py +0 -0
  168. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/workflow_bundle/reader.py +0 -0
  169. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/src/abstractruntime/workflow_bundle/registry.py +0 -0
  170. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/README.md +0 -0
  171. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/conftest.py +0 -0
  172. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_active_context_policy.py +0 -0
  173. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_active_memory.py +0 -0
  174. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_answer_user_effect.py +0 -0
  175. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_artifacts.py +0 -0
  176. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_chat_summarizer_integration.py +0 -0
  177. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_command_store.py +0 -0
  178. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_compaction_helpers.py +0 -0
  179. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_control_adapter_while.py +0 -0
  180. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_default_tools_comms_gating.py +0 -0
  181. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_default_tools_include_skim_files.py +0 -0
  182. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_default_tools_include_skim_folders.py +0 -0
  183. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_default_tools_search_files_executor.py +0 -0
  184. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_durable_toolsets.py +0 -0
  185. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_e2e_tool_calls_idempotency_lmstudio.py +0 -0
  186. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_emit_event_without_workflow_registry.py +0 -0
  187. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_evidence_recorder.py +0 -0
  188. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_factory_timeouts_default_to_abstractcore_config.py +0 -0
  189. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_integration_abstractcore.py +0 -0
  190. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_integrations_abstractcore.py +0 -0
  191. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_json_file_run_store_children_index.py +0 -0
  192. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_jsonl_ledger_recovery.py +0 -0
  193. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_kg_learn_and_recall_contract.py +0 -0
  194. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_ledger_chain.py +0 -0
  195. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_ledger_subscription.py +0 -0
  196. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_requires_prompt.py +0 -0
  197. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_response_schema_normalization.py +0 -0
  198. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_structured_output_fallback.py +0 -0
  199. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_truncation_retry_contract.py +0 -0
  200. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_use_context_appends_turn.py +0 -0
  201. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_call_verbatim_payload_capture.py +0 -0
  202. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_client_media_artifacts.py +0 -0
  203. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_client_system_context.py +0 -0
  204. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_llm_client_tool_call_parsing.py +0 -0
  205. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_local_runtime_timeout_kwarg_policy.py +0 -0
  206. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_mcp_remote_tool_executor.py +0 -0
  207. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_mcp_worker_logging.py +0 -0
  208. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_mcp_worker_security.py +0 -0
  209. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_mcp_worker_stdio.py +0 -0
  210. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_media_artifact_resolution.py +0 -0
  211. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memact_composer_from_kg_result.py +0 -0
  212. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_assert_attributes_defaults.py +0 -0
  213. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_packets.py +0 -0
  214. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_predicate_aliasing.py +0 -0
  215. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_query_packetization_restart.py +0 -0
  216. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_query_recall_level_policy.py +0 -0
  217. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_kg_semantic_query_ranking.py +0 -0
  218. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_note_effect.py +0 -0
  219. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_query_effect.py +0 -0
  220. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_query_rich_filters.py +0 -0
  221. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_scope_and_rehydrate_effect.py +0 -0
  222. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_memory_tag_effect.py +0 -0
  223. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_mlx_generation_serialization.py +0 -0
  224. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_multimodal_abstractcore_integration.py +0 -0
  225. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_offloading.py +0 -0
  226. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_pause_resume.py +0 -0
  227. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_prompt_cache_modules.py +0 -0
  228. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_queryable_run_store.py +0 -0
  229. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_read_file_fallback_to_session_attachments.py +0 -0
  230. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_real_integration.py +0 -0
  231. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_recall_levels_policy.py +0 -0
  232. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_remote_llm_client.py +0 -0
  233. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_rendering_agent_trace_report.py +0 -0
  234. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_rendering_json_stringify.py +0 -0
  235. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_retry_idempotency.py +0 -0
  236. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_run_history_bundle.py +0 -0
  237. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_runtime_config_max_output_tokens_fallback.py +0 -0
  238. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_runtime_install_boundary.py +0 -0
  239. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_runtime_llm_call_grounding_in_ledger.py +0 -0
  240. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_runtime_node_traces.py +0 -0
  241. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_runtime_start_seeds_tool_support.py +0 -0
  242. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_scheduler.py +0 -0
  243. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_session_attachments_registry_and_open_tool.py +0 -0
  244. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_snapshots.py +0 -0
  245. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_sqlite_ledger_store.py +0 -0
  246. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_start_subworkflow_async_wait.py +0 -0
  247. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_start_subworkflow_inherit_context_merges_messages.py +0 -0
  248. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_start_subworkflow_workspace_inheritance.py +0 -0
  249. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_structured_output_schema_enum.py +0 -0
  250. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_subworkflow.py +0 -0
  251. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_terminal_effect_completion.py +0 -0
  252. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_terminal_resume_appends_ledger_completion.py +0 -0
  253. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tick_completion_includes_output_in_ledger.py +0 -0
  254. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_approval_executor.py +0 -0
  255. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_approval_resume_executes.py +0 -0
  256. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_calls_idempotency_keys.py +0 -0
  257. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_argument_sanitization.py +0 -0
  258. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_error_output_detection.py +0 -0
  259. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_filename_alias.py +0 -0
  260. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_kwarg_canonicalization.py +0 -0
  261. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_read_file_aliases.py +0 -0
  262. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_executor_timeout.py +0 -0
  263. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_tool_wait_allowlist_safety.py +0 -0
  264. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_trace_context_propagation.py +0 -0
  265. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_vars_query_effect.py +0 -0
  266. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_agent_output_context_includes_messages.py +0 -0
  267. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_agent_tool_observations_persist_across_restart.py +0 -0
  268. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_agent_use_context_inherits_attachments.py +0 -0
  269. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_agent_use_context_persists_tool_observations.py +0 -0
  270. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_agent_use_context_persists_turn.py +0 -0
  271. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_llm_call_schema_ref_resolution.py +0 -0
  272. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_memact_compose_node.py +0 -0
  273. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_memory_kg_query_outputs_propagate.py +0 -0
  274. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_memory_kg_resolve_outputs_propagate.py +0 -0
  275. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visual_multi_entry_loop_overrides.py +0 -0
  276. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_add_message_builtin.py +0 -0
  277. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_add_message_node_appends_to_active_context.py +0 -0
  278. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_call_tool_node.py +0 -0
  279. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_compiler_basic.py +0 -0
  280. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_context_and_builder_nodes.py +0 -0
  281. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_get_element_node.py +0 -0
  282. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_get_random_element_node.py +0 -0
  283. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_has_tools_builtin.py +0 -0
  284. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_llm_call_context_attachments_map_to_media.py +0 -0
  285. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_llm_call_multimodal_output.py +0 -0
  286. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_make_object_node.py +0 -0
  287. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_media_nodes.py +0 -0
  288. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_memory_effect_nodes.py +0 -0
  289. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_memory_source_pins.py +0 -0
  290. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_prompt_only.py +0 -0
  291. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_random_nodes.py +0 -0
  292. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_string_contains_replace.py +0 -0
  293. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_visualflow_tool_parameters_node.py +0 -0
  294. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_wait_event_prompt_metadata.py +0 -0
  295. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_workflow_bundle_registry.py +0 -0
  296. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_workspace_policy_allowlist_mode.py +0 -0
  297. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_workspace_policy_mount_virtual_paths.py +0 -0
  298. {abstractruntime-0.4.12 → abstractruntime-0.4.13}/tests/test_workspace_policy_tool_calls_persist_across_restart.py +0 -0
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.4.13] - 2026-05-19
11
+
12
+ ### Fixed
13
+ - The `multimodal` extra now uses AbstractCore's current remote/vision/voice/audio abstraction extras and declares the media document dependencies directly, avoiding Core's older narrow media constraints when combined with `[all-apple]` or `[all-gpu]`.
14
+ - Apple/GPU Runtime profile extras now bound setuptools to a modern version compatible with Torch's `<82` constraint, preventing resolver backtracking into broken legacy setuptools releases.
15
+
10
16
  ## [0.4.12] - 2026-05-19
11
17
 
12
18
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: AbstractRuntime
3
- Version: 0.4.12
3
+ Version: 0.4.13
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
@@ -26,20 +26,30 @@ Provides-Extra: abstractcore
26
26
  Requires-Dist: abstractcore>=2.13.15; extra == 'abstractcore'
27
27
  Provides-Extra: all-apple
28
28
  Requires-Dist: abstractcore[all-apple]>=2.13.15; extra == 'all-apple'
29
+ Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-apple'
29
30
  Provides-Extra: all-gpu
30
31
  Requires-Dist: abstractcore[all-gpu]>=2.13.15; extra == 'all-gpu'
32
+ Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'all-gpu'
31
33
  Provides-Extra: apple
32
34
  Requires-Dist: abstractcore[apple]>=2.13.15; extra == 'apple'
35
+ Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'apple'
33
36
  Provides-Extra: docs
34
37
  Requires-Dist: mkdocs-material>=9.0.0; extra == 'docs'
35
38
  Requires-Dist: mkdocs>=1.6.0; extra == 'docs'
36
39
  Requires-Dist: pymdown-extensions>=10.0; extra == 'docs'
37
40
  Provides-Extra: gpu
38
41
  Requires-Dist: abstractcore[gpu]>=2.13.15; extra == 'gpu'
42
+ Requires-Dist: setuptools<82.0.0,>=80.10.2; extra == 'gpu'
39
43
  Provides-Extra: mcp-worker
40
44
  Requires-Dist: abstractcore[tools]>=2.13.15; extra == 'mcp-worker'
41
45
  Provides-Extra: multimodal
42
- Requires-Dist: abstractcore[audio,media,openai,vision,voice]>=2.13.15; extra == 'multimodal'
46
+ Requires-Dist: abstractcore[audio,remote,vision,voice]>=2.13.15; extra == 'multimodal'
47
+ Requires-Dist: pandas<3.0.0,>=1.0.0; extra == 'multimodal'
48
+ Requires-Dist: pillow<13.0.0,>=10.0.0; extra == 'multimodal'
49
+ Requires-Dist: pymupdf-layout<2.0.0,>=1.26.6; extra == 'multimodal'
50
+ Requires-Dist: pymupdf4llm<1.0.0,>=0.0.20; extra == 'multimodal'
51
+ Requires-Dist: python-pptx<2.0.0,>=1.0.2; extra == 'multimodal'
52
+ Requires-Dist: unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32; extra == 'multimodal'
43
53
  Provides-Extra: test
44
54
  Requires-Dist: pytest>=7.0.0; extra == 'test'
45
55
  Description-Content-Type: text/markdown
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "AbstractRuntime"
7
- version = "0.4.12"
7
+ version = "0.4.13"
8
8
  description = "AbstractRuntime: a durable graph runner designed to pair with AbstractCore."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -51,24 +51,34 @@ abstractcore = [
51
51
 
52
52
  apple = [
53
53
  "abstractcore[apple]>=2.13.15",
54
+ "setuptools<82.0.0,>=80.10.2",
54
55
  ]
55
56
 
56
57
  gpu = [
57
58
  "abstractcore[gpu]>=2.13.15",
59
+ "setuptools<82.0.0,>=80.10.2",
58
60
  ]
59
61
 
60
62
  all-apple = [
61
63
  "abstractcore[all-apple]>=2.13.15",
64
+ "setuptools<82.0.0,>=80.10.2",
62
65
  ]
63
66
 
64
67
  all-gpu = [
65
68
  "abstractcore[all-gpu]>=2.13.15",
69
+ "setuptools<82.0.0,>=80.10.2",
66
70
  ]
67
71
 
68
72
  # Enables AbstractCore multimodal generation helpers with common OpenAI-backed
69
73
  # image/voice capability packages.
70
74
  multimodal = [
71
- "abstractcore[media,openai,vision,voice,audio]>=2.13.15",
75
+ "abstractcore[remote,vision,voice,audio]>=2.13.15",
76
+ "Pillow<13.0.0,>=10.0.0",
77
+ "pymupdf4llm<1.0.0,>=0.0.20",
78
+ "pymupdf-layout<2.0.0,>=1.26.6",
79
+ "unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32",
80
+ "python-pptx<2.0.0,>=1.0.2",
81
+ "pandas<3.0.0,>=1.0.0",
72
82
  ]
73
83
 
74
84
  # Enables `abstractruntime-mcp-worker` with the default toolsets (includes bs4/lxml).
@@ -0,0 +1,3 @@
1
+ ### Fixed
2
+ - The `multimodal` extra now uses AbstractCore's current remote/vision/voice/audio abstraction extras and declares the media document dependencies directly, avoiding Core's older narrow media constraints when combined with `[all-apple]` or `[all-gpu]`.
3
+ - Apple/GPU Runtime profile extras now bound setuptools to a modern version compatible with Torch's `<82` constraint, preventing resolver backtracking into broken legacy setuptools releases.
@@ -38,8 +38,13 @@ def test_llm_call_media_resolves_artifact_refs_to_temp_files() -> None:
38
38
  assert isinstance(params, dict)
39
39
  assert params.get("glyph_compression") == "never"
40
40
  assert isinstance(media, list) and media, "Expected media to be passed"
41
- p = media[0]
42
- assert isinstance(p, str) and p, "Expected media item to be a temp file path"
41
+ item = media[0]
42
+ assert isinstance(item, dict), "Expected media item to preserve artifact metadata"
43
+ p = str(item.get("file_path") or "")
44
+ assert p, "Expected media item to include a temp file path"
45
+ assert item.get("$artifact") == meta.artifact_id
46
+ assert item.get("artifact_id") == meta.artifact_id
47
+ assert item.get("content_type") == "text/plain"
43
48
  with open(p, "rb") as f:
44
49
  assert f.read() == b"hello world"
45
50
  return {"content": "OK", "metadata": {}}
@@ -9,8 +9,13 @@ class _StubLLM:
9
9
  def generate(self, *, prompt, messages, system_prompt, media, tools, params):
10
10
  self.calls += 1
11
11
  assert isinstance(media, list) and media, "expected media list"
12
- p = media[0]
13
- assert isinstance(p, str) and p, "expected media to be a temp file path"
12
+ item = media[0]
13
+ assert isinstance(item, dict), "expected media to preserve artifact metadata"
14
+ p = str(item.get("file_path") or "")
15
+ assert p, "expected media to include a temp file path"
16
+ assert item.get("$artifact")
17
+ assert item.get("artifact_id")
18
+ assert item.get("content_type") == "text/plain"
14
19
  with open(p, "rb") as f:
15
20
  assert f.read() == b"hello world"
16
21
  return {"content": "OK", "metadata": {}}
@@ -109,4 +114,3 @@ def test_llm_call_media_artifact_refs_persist_across_restart():
109
114
  kwargs = obs.get("llm_generate_kwargs")
110
115
  assert isinstance(kwargs, dict)
111
116
  assert kwargs.get("media") == attachments
112
-
@@ -24,8 +24,13 @@ def test_llm_call_media_materializes_artifact_using_source_path_label(tmp_path:
24
24
  assert err is None
25
25
  assert isinstance(resolved, list) and len(resolved) == 1
26
26
 
27
- out_path = Path(str(resolved[0]))
27
+ item = resolved[0]
28
+ assert isinstance(item, dict)
29
+ out_path = Path(str(item.get("file_path") or ""))
28
30
  assert out_path.is_file()
29
31
  assert out_path.read_bytes() == b"hello\n"
30
32
  short = str(meta.artifact_id)[:8]
31
33
  assert out_path.name == f"Values__{short}.md"
34
+ assert item.get("$artifact") == str(meta.artifact_id)
35
+ assert item.get("artifact_id") == str(meta.artifact_id)
36
+ assert item.get("content_type") == "text/plain"
@@ -49,11 +49,14 @@ def test_runtime_exposes_abstractcore_and_worker_extras_with_gateway_aligned_flo
49
49
  assert "[project.optional-dependencies]" in text
50
50
  assert "abstractcore = [" in text
51
51
  assert "mcp-worker = [" in text
52
- assert '"abstractcore>=2.13.12"' in text
53
- assert '"abstractcore[media,openai,vision,voice,audio]>=2.13.12"' in text
52
+ assert '"abstractcore>=2.13.15"' in text
53
+ assert '"abstractcore[remote,vision,voice,audio]>=2.13.15"' in text
54
+ assert '"Pillow<13.0.0,>=10.0.0"' in text
55
+ assert '"unstructured[docx,odt,pptx,rtf,xlsx]<0.19.0,>=0.18.32"' in text
56
+ assert '"python-pptx<2.0.0,>=1.0.2"' in text
54
57
 
55
58
  worker_block = _extract_optional_dependency_block(text, key="mcp-worker")
56
- assert '"abstractcore[tools]>=2.13.12"' in worker_block
59
+ assert '"abstractcore[tools]>=2.13.15"' in worker_block
57
60
 
58
61
 
59
62
  def test_runtime_exposes_python_install_hardware_profile_cascades() -> None:
@@ -72,7 +75,11 @@ def test_runtime_exposes_python_install_hardware_profile_cascades() -> None:
72
75
  all_apple_block = _extract_optional_dependency_block(text, key="all-apple")
73
76
  all_gpu_block = _extract_optional_dependency_block(text, key="all-gpu")
74
77
 
75
- assert '"abstractcore[apple]>=2.13.12"' in apple_block
76
- assert '"abstractcore[gpu]>=2.13.12"' in gpu_block
77
- assert '"abstractcore[all-apple]>=2.13.12"' in all_apple_block
78
- assert '"abstractcore[all-gpu]>=2.13.12"' in all_gpu_block
78
+ assert '"abstractcore[apple]>=2.13.15"' in apple_block
79
+ assert '"abstractcore[gpu]>=2.13.15"' in gpu_block
80
+ assert '"abstractcore[all-apple]>=2.13.15"' in all_apple_block
81
+ assert '"abstractcore[all-gpu]>=2.13.15"' in all_gpu_block
82
+ assert '"setuptools<82.0.0,>=80.10.2"' in apple_block
83
+ assert '"setuptools<82.0.0,>=80.10.2"' in gpu_block
84
+ assert '"setuptools<82.0.0,>=80.10.2"' in all_apple_block
85
+ assert '"setuptools<82.0.0,>=80.10.2"' in all_gpu_block
@@ -1,6 +0,0 @@
1
- ### Fixed
2
- - Remote AbstractCore transcription now uses provider-scoped audio routes such as `/{provider}/v1/audio/transcriptions` when an STT provider is selected.
3
- - VisualFlow generated media nodes now keep LLM `provider`/`model` routing separate from image, TTS, and STT provider/model pins.
4
-
5
- ### Changed
6
- - Minimum AbstractCore optional dependency floor is now `abstractcore>=2.13.15`.