abstractframework 0.8.0__tar.gz → 0.9.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 (198) hide show
  1. {abstractframework-0.8.0 → abstractframework-0.9.0}/CHANGELOG.md +8 -0
  2. {abstractframework-0.8.0/abstractframework.egg-info → abstractframework-0.9.0}/PKG-INFO +22 -22
  3. {abstractframework-0.8.0 → abstractframework-0.9.0}/README.md +13 -13
  4. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework/__init__.py +11 -11
  5. {abstractframework-0.8.0 → abstractframework-0.9.0/abstractframework.egg-info}/PKG-INFO +22 -22
  6. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework.egg-info/requires.txt +8 -8
  7. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/api.md +2 -2
  8. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/install.md +7 -7
  9. {abstractframework-0.8.0 → abstractframework-0.9.0}/llms-full.txt +42 -42
  10. {abstractframework-0.8.0 → abstractframework-0.9.0}/pyproject.toml +9 -9
  11. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/gateway-local.sh +1 -1
  12. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/gateway.sh +1 -1
  13. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/install.sh +5 -5
  14. {abstractframework-0.8.0 → abstractframework-0.9.0}/LICENSE +0 -0
  15. {abstractframework-0.8.0 → abstractframework-0.9.0}/MANIFEST.in +0 -0
  16. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework/__main__.py +0 -0
  17. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework/cli.py +0 -0
  18. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework/install_manifest.py +0 -0
  19. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework/py.typed +0 -0
  20. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework.egg-info/SOURCES.txt +0 -0
  21. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework.egg-info/dependency_links.txt +0 -0
  22. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework.egg-info/entry_points.txt +0 -0
  23. {abstractframework-0.8.0 → abstractframework-0.9.0}/abstractframework.egg-info/top_level.txt +0 -0
  24. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/README.md +0 -0
  25. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0001-layered-architecture.md +0 -0
  26. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0002-effect-system-design.md +0 -0
  27. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0003-tool-system-architecture.md +0 -0
  28. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0004-observability-strategy.md +0 -0
  29. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0005-memory-architecture.md +0 -0
  30. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0006-durable-tool-execution.md +0 -0
  31. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  32. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0008-token-terminology.md +0 -0
  33. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  34. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  35. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  36. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
  37. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  38. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  39. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  40. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  41. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  42. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  43. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  44. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  45. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  46. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  47. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  48. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  49. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  50. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  51. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  52. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  53. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  54. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  55. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  56. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  57. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  58. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  59. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
  60. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  61. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  62. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  63. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/README.md +0 -0
  64. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/memory-recall-levels.md +0 -0
  65. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  66. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  67. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  68. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  69. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  70. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  71. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  72. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  73. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/agent-sessions.md +0 -0
  74. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/architecture.md +0 -0
  75. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/automations.md +0 -0
  76. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/claude/README.md +0 -0
  77. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/claude/abstractframework-fit.md +0 -0
  78. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/claude/claude-skills-overview.md +0 -0
  79. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/claude/claude-skills-sources.md +0 -0
  80. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/claude/claude-skills-top-20.md +0 -0
  81. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/comparisons/README.md +0 -0
  82. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/configuration.md +0 -0
  83. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/faq.md +0 -0
  84. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/getting-started.md +0 -0
  85. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/glossary.md +0 -0
  86. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/LANDING.md +0 -0
  87. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/README.md +0 -0
  88. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/agent-skills.md +0 -0
  89. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/agent-vs-llm.md +0 -0
  90. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/agora-workflow-agent.md +0 -0
  91. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/apple-local-gateway-flow.md +0 -0
  92. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/capability-plugins.md +0 -0
  93. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/capability-routing-defaults.md +0 -0
  94. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/deployment-iphone.md +0 -0
  95. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/deployment-topologies.md +0 -0
  96. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/deployment-web.md +0 -0
  97. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/email-integration.md +0 -0
  98. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/event-inbox-agent.md +0 -0
  99. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/flow-and-kg-memory.md +0 -0
  100. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/gateway-security.md +0 -0
  101. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/headless-swarm.md +0 -0
  102. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/process-manager-env-vars.md +0 -0
  103. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/prompt-caching.md +0 -0
  104. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/runtime-artifacts.md +0 -0
  105. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/runtime-scope.md +0 -0
  106. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/scheduled-workflows.md +0 -0
  107. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/summoned-entities.md +0 -0
  108. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/telegram-integration.md +0 -0
  109. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/guide/workflow-bundles.md +0 -0
  110. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/README.md +0 -0
  111. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/components.md +0 -0
  112. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/implementation-plan.md +0 -0
  113. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/operations-and-support.md +0 -0
  114. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/release-and-manifest.md +0 -0
  115. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/security-and-os-blocks.md +0 -0
  116. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/strategy.md +0 -0
  117. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/installers/user-journeys.md +0 -0
  118. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/prompts/agora-collaboration.md +0 -0
  119. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/README.md +0 -0
  120. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/email-inbox-agent.md +0 -0
  121. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
  122. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/offline-coding-assistant.md +0 -0
  123. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/phone-thin-client.md +0 -0
  124. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/specialized-agent-flow.md +0 -0
  125. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
  126. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  127. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/README.md +0 -0
  128. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  129. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  130. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  131. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  132. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/claude-agent-skills-overview.md +0 -0
  133. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/claude-agent-skills-sources.md +0 -0
  134. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
  135. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/troubleshooting.md +0 -0
  136. {abstractframework-0.8.0 → abstractframework-0.9.0}/docs/workspace-scripts.md +0 -0
  137. {abstractframework-0.8.0 → abstractframework-0.9.0}/llms.txt +0 -0
  138. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/af-local.sh +0 -0
  139. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/af.sh +0 -0
  140. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/agora_react_flow_smoke.py +0 -0
  141. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/assistant-local.sh +0 -0
  142. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/assistant.sh +0 -0
  143. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/build.sh +0 -0
  144. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/cache_probe_local_backends.py +0 -0
  145. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/cache_steer_repl.py +0 -0
  146. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/check_identity_sync.py +0 -0
  147. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/clone.sh +0 -0
  148. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/code-local.sh +0 -0
  149. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/code.sh +0 -0
  150. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/commit.sh +0 -0
  151. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/console-local.sh +0 -0
  152. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/console.sh +0 -0
  153. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/core_operator_drive.py +0 -0
  154. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/deps.sh +0 -0
  155. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/entity-local.sh +0 -0
  156. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/entity.sh +0 -0
  157. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/event_inbox_flow_smoke.py +0 -0
  158. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/flow-local.sh +0 -0
  159. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/flow.sh +0 -0
  160. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/gateway-flow-local.sh +0 -0
  161. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/gateway-flow.sh +0 -0
  162. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/gen_llms_full.py +0 -0
  163. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/headless_fleet_bridge.py +0 -0
  164. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/headless_fleet_demo.py +0 -0
  165. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/headless_steer_repl.py +0 -0
  166. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/af_inventory.py +0 -0
  167. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/af_stack.sh +0 -0
  168. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/af_supervisor.sh +0 -0
  169. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/apps_common.sh +0 -0
  170. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/build_macos_installer.sh +0 -0
  171. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/gateway_user_tokens.py +0 -0
  172. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/lib/repo_groups.sh +0 -0
  173. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/meet_castor.sh +0 -0
  174. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/observer-local.sh +0 -0
  175. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/observer.sh +0 -0
  176. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/plan_walkthrough.py +0 -0
  177. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/pull.sh +0 -0
  178. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/push.sh +0 -0
  179. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/spawn_demo_agent.sh +0 -0
  180. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/start-local.sh +0 -0
  181. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/start.sh +0 -0
  182. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/status.sh +0 -0
  183. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/steer_repl.py +0 -0
  184. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/tests/test_af_supervisor.sh +0 -0
  185. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/tests/test_install_user_path.sh +0 -0
  186. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/tests/test_inventory.sh +0 -0
  187. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/tests/test_repo_scripts.sh +0 -0
  188. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/uninstall.sh +0 -0
  189. {abstractframework-0.8.0 → abstractframework-0.9.0}/scripts/visit_resume_cache_probe.py +0 -0
  190. {abstractframework-0.8.0 → abstractframework-0.9.0}/setup.cfg +0 -0
  191. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_index_lag.py +0 -0
  192. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_profiles.py +0 -0
  193. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_ps1_gpu_stack.py +0 -0
  194. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_ps1_own_gateway.py +0 -0
  195. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_sh_gpu_stack.py +0 -0
  196. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_install_sh_gpu_twin.py +0 -0
  197. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_llms_full.py +0 -0
  198. {abstractframework-0.8.0 → abstractframework-0.9.0}/tests/test_uv_tool_install_atomicity.py +0 -0
@@ -4,6 +4,14 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ Nothing yet.
8
+
9
+ ## [0.9.0] - 2026-10-01
10
+
11
+ ### Changed
12
+
13
+ - Pins abstractgateway 0.11.0 (accounts: users + entities in one table, archive instead of delete, entity mailboxes, self token rotation; recipient rules with Allowed/Denied lists; workflows ownership, availability and Open; Skills & MCP with tools of enabled servers offered to agent runs; Providers and Engines merged; the Sandbox on the kit chat; apps behind an https proxy; a health check that never blocks the event loop; the entity door without environment variables), abstractcore 2.23.0 (recipient rules, mailbox discovery, MCP client handshake, console Email tab), AbstractRuntime 0.8.3 (MCP facade), abstractassistant 0.12.0 (executable workflows only); npm apps flow 0.7.0, code 0.10.0, observer 0.6.0, entity 0.6.0 (responsive polish, shared WorkflowPicker, Code sidebar panels, Observer run view, Entity settings on the kit pickers); crate abstractgateway-console 0.14.0; install matrices and the manifest regenerated.
14
+
7
15
  ## [0.8.0] - 2026-10-01
8
16
 
9
17
  The consoles' email and accounts screens are redesigned, the installer never installs less because
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,10 +23,10 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
- Requires-Dist: abstractgateway==0.10.0
27
- Requires-Dist: abstractassistant==0.11.0
28
- Requires-Dist: abstractcore==2.22.0
29
- Requires-Dist: AbstractRuntime==0.8.2
26
+ Requires-Dist: abstractgateway==0.11.0
27
+ Requires-Dist: abstractassistant==0.12.0
28
+ Requires-Dist: abstractcore==2.23.0
29
+ Requires-Dist: AbstractRuntime==0.8.3
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
@@ -36,11 +36,11 @@ Requires-Dist: abstractvision==0.3.33
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.10.0; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.11.0; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.11.0; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.12.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.10.0; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.11.0; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.11.0; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.12.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -369,7 +369,7 @@ pip install "abstractframework[gpu]"
369
369
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
370
370
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
371
371
 
372
- ### Release matrix (abstractframework 0.8.0)
372
+ ### Release matrix (abstractframework 0.9.0)
373
373
 
374
374
  `abstractframework` pins every Python package with `==`, so one version of the
375
375
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -378,10 +378,10 @@ and tested together.
378
378
 
379
379
  | Registry | Package | Version |
380
380
  |---|---|---|
381
- | PyPI | `abstractgateway` | 0.10.0 |
382
- | PyPI | `abstractassistant` | 0.11.0 |
383
- | PyPI | `abstractcore` | 2.22.0 |
384
- | PyPI | `AbstractRuntime` | 0.8.2 |
381
+ | PyPI | `abstractgateway` | 0.11.0 |
382
+ | PyPI | `abstractassistant` | 0.12.0 |
383
+ | PyPI | `abstractcore` | 2.23.0 |
384
+ | PyPI | `AbstractRuntime` | 0.8.3 |
385
385
  | PyPI | `abstractagent` | 0.3.17 |
386
386
  | PyPI | `abstractskill` | 0.3.0 |
387
387
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -390,17 +390,17 @@ and tested together.
390
390
  | PyPI | `abstractvision` | 0.3.33 |
391
391
  | PyPI | `abstractmusic` | 0.1.15 |
392
392
  | PyPI | `abstract3d` | 0.3.2 |
393
- | npm | `@abstractframework/flow` | 0.6.0 |
394
- | npm | `@abstractframework/code` | 0.9.0 |
395
- | npm | `@abstractframework/observer` | 0.5.0 |
393
+ | npm | `@abstractframework/flow` | 0.7.0 |
394
+ | npm | `@abstractframework/code` | 0.10.0 |
395
+ | npm | `@abstractframework/observer` | 0.6.0 |
396
396
  | npm | `@abstractframework/continuum` | 0.6.0 |
397
- | npm | `@abstractframework/entity` | 0.5.0 |
397
+ | npm | `@abstractframework/entity` | 0.6.0 |
398
398
  | crates.io | `abstractcode` | 0.8.0 |
399
- | crates.io | `abstractgateway-console` | 0.13.0 |
400
- | crates.io | `abstractcore-console` | 0.6.0 |
399
+ | crates.io | `abstractgateway-console` | 0.14.0 |
400
+ | crates.io | `abstractcore-console` | 0.7.0 |
401
401
  | crates.io | `abstracttui` | 0.6.0 |
402
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.10.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.22.0 |
402
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.11.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.23.0 |
404
404
 
405
405
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
406
406
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -324,7 +324,7 @@ pip install "abstractframework[gpu]"
324
324
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
325
325
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
326
326
 
327
- ### Release matrix (abstractframework 0.8.0)
327
+ ### Release matrix (abstractframework 0.9.0)
328
328
 
329
329
  `abstractframework` pins every Python package with `==`, so one version of the
330
330
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -333,10 +333,10 @@ and tested together.
333
333
 
334
334
  | Registry | Package | Version |
335
335
  |---|---|---|
336
- | PyPI | `abstractgateway` | 0.10.0 |
337
- | PyPI | `abstractassistant` | 0.11.0 |
338
- | PyPI | `abstractcore` | 2.22.0 |
339
- | PyPI | `AbstractRuntime` | 0.8.2 |
336
+ | PyPI | `abstractgateway` | 0.11.0 |
337
+ | PyPI | `abstractassistant` | 0.12.0 |
338
+ | PyPI | `abstractcore` | 2.23.0 |
339
+ | PyPI | `AbstractRuntime` | 0.8.3 |
340
340
  | PyPI | `abstractagent` | 0.3.17 |
341
341
  | PyPI | `abstractskill` | 0.3.0 |
342
342
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -345,17 +345,17 @@ and tested together.
345
345
  | PyPI | `abstractvision` | 0.3.33 |
346
346
  | PyPI | `abstractmusic` | 0.1.15 |
347
347
  | PyPI | `abstract3d` | 0.3.2 |
348
- | npm | `@abstractframework/flow` | 0.6.0 |
349
- | npm | `@abstractframework/code` | 0.9.0 |
350
- | npm | `@abstractframework/observer` | 0.5.0 |
348
+ | npm | `@abstractframework/flow` | 0.7.0 |
349
+ | npm | `@abstractframework/code` | 0.10.0 |
350
+ | npm | `@abstractframework/observer` | 0.6.0 |
351
351
  | npm | `@abstractframework/continuum` | 0.6.0 |
352
- | npm | `@abstractframework/entity` | 0.5.0 |
352
+ | npm | `@abstractframework/entity` | 0.6.0 |
353
353
  | crates.io | `abstractcode` | 0.8.0 |
354
- | crates.io | `abstractgateway-console` | 0.13.0 |
355
- | crates.io | `abstractcore-console` | 0.6.0 |
354
+ | crates.io | `abstractgateway-console` | 0.14.0 |
355
+ | crates.io | `abstractcore-console` | 0.7.0 |
356
356
  | crates.io | `abstracttui` | 0.6.0 |
357
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.10.0 (`gpu-latest` / `<version>-gpu` experimental) |
358
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.22.0 |
357
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.11.0 (`gpu-latest` / `<version>-gpu` experimental) |
358
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.23.0 |
359
359
 
360
360
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
361
361
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -10,15 +10,15 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.8.0"
13
+ __version__ = "0.9.0"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.22.0",
19
- "abstractruntime": "0.8.2",
18
+ "abstractcore": "2.23.0",
19
+ "abstractruntime": "0.8.3",
20
20
  "abstractagent": "0.3.17",
21
- "abstractgateway": "0.10.0",
21
+ "abstractgateway": "0.11.0",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
@@ -26,7 +26,7 @@ RELEASE_VERSIONS: dict[str, str] = {
26
26
  "abstractvision": "0.3.33",
27
27
  "abstractmusic": "0.1.15",
28
28
  "abstract3d": "0.3.2",
29
- "abstractassistant": "0.11.0",
29
+ "abstractassistant": "0.12.0",
30
30
  }
31
31
 
32
32
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -45,11 +45,11 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
45
45
  }
46
46
 
47
47
  NPM_RELEASE_VERSIONS: dict[str, str] = {
48
- "@abstractframework/flow": "0.6.0",
49
- "@abstractframework/code": "0.9.0",
50
- "@abstractframework/observer": "0.5.0",
48
+ "@abstractframework/flow": "0.7.0",
49
+ "@abstractframework/code": "0.10.0",
50
+ "@abstractframework/observer": "0.6.0",
51
51
  "@abstractframework/continuum": "0.6.0",
52
- "@abstractframework/entity": "0.5.0",
52
+ "@abstractframework/entity": "0.6.0",
53
53
  }
54
54
 
55
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
@@ -58,8 +58,8 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
58
58
  # `abstractcore serve`, and the gateway's terminal console already carries its Models and
59
59
  # Engines screens; it is listed here as a release version only.
60
60
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
61
- "abstractgateway-console": "0.13.0",
62
- "abstractcore-console": "0.6.0",
61
+ "abstractgateway-console": "0.14.0",
62
+ "abstractcore-console": "0.7.0",
63
63
  "abstractcode": "0.8.0",
64
64
  "abstracttui": "0.6.0",
65
65
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.8.0
3
+ Version: 0.9.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,10 +23,10 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
- Requires-Dist: abstractgateway==0.10.0
27
- Requires-Dist: abstractassistant==0.11.0
28
- Requires-Dist: abstractcore==2.22.0
29
- Requires-Dist: AbstractRuntime==0.8.2
26
+ Requires-Dist: abstractgateway==0.11.0
27
+ Requires-Dist: abstractassistant==0.12.0
28
+ Requires-Dist: abstractcore==2.23.0
29
+ Requires-Dist: AbstractRuntime==0.8.3
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
@@ -36,11 +36,11 @@ Requires-Dist: abstractvision==0.3.33
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.10.0; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.11.0; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.11.0; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.12.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.10.0; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.11.0; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.11.0; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.12.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -369,7 +369,7 @@ pip install "abstractframework[gpu]"
369
369
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
370
370
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
371
371
 
372
- ### Release matrix (abstractframework 0.8.0)
372
+ ### Release matrix (abstractframework 0.9.0)
373
373
 
374
374
  `abstractframework` pins every Python package with `==`, so one version of the
375
375
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -378,10 +378,10 @@ and tested together.
378
378
 
379
379
  | Registry | Package | Version |
380
380
  |---|---|---|
381
- | PyPI | `abstractgateway` | 0.10.0 |
382
- | PyPI | `abstractassistant` | 0.11.0 |
383
- | PyPI | `abstractcore` | 2.22.0 |
384
- | PyPI | `AbstractRuntime` | 0.8.2 |
381
+ | PyPI | `abstractgateway` | 0.11.0 |
382
+ | PyPI | `abstractassistant` | 0.12.0 |
383
+ | PyPI | `abstractcore` | 2.23.0 |
384
+ | PyPI | `AbstractRuntime` | 0.8.3 |
385
385
  | PyPI | `abstractagent` | 0.3.17 |
386
386
  | PyPI | `abstractskill` | 0.3.0 |
387
387
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -390,17 +390,17 @@ and tested together.
390
390
  | PyPI | `abstractvision` | 0.3.33 |
391
391
  | PyPI | `abstractmusic` | 0.1.15 |
392
392
  | PyPI | `abstract3d` | 0.3.2 |
393
- | npm | `@abstractframework/flow` | 0.6.0 |
394
- | npm | `@abstractframework/code` | 0.9.0 |
395
- | npm | `@abstractframework/observer` | 0.5.0 |
393
+ | npm | `@abstractframework/flow` | 0.7.0 |
394
+ | npm | `@abstractframework/code` | 0.10.0 |
395
+ | npm | `@abstractframework/observer` | 0.6.0 |
396
396
  | npm | `@abstractframework/continuum` | 0.6.0 |
397
- | npm | `@abstractframework/entity` | 0.5.0 |
397
+ | npm | `@abstractframework/entity` | 0.6.0 |
398
398
  | crates.io | `abstractcode` | 0.8.0 |
399
- | crates.io | `abstractgateway-console` | 0.13.0 |
400
- | crates.io | `abstractcore-console` | 0.6.0 |
399
+ | crates.io | `abstractgateway-console` | 0.14.0 |
400
+ | crates.io | `abstractcore-console` | 0.7.0 |
401
401
  | crates.io | `abstracttui` | 0.6.0 |
402
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.10.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.22.0 |
402
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.11.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.23.0 |
404
404
 
405
405
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
406
406
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -1,7 +1,7 @@
1
- abstractgateway==0.10.0
2
- abstractassistant==0.11.0
3
- abstractcore==2.22.0
4
- AbstractRuntime==0.8.2
1
+ abstractgateway==0.11.0
2
+ abstractassistant==0.12.0
3
+ abstractcore==2.23.0
4
+ AbstractRuntime==0.8.3
5
5
  abstractagent==0.3.17
6
6
  abstractskill==0.3.0
7
7
  AbstractMemory==0.3.0
@@ -12,11 +12,11 @@ abstractmusic==0.1.15
12
12
  abstract3d==0.3.2
13
13
 
14
14
  [apple]
15
- abstractgateway[apple]==0.10.0
15
+ abstractgateway[apple]==0.11.0
16
16
 
17
17
  [apple:platform_system == "Darwin"]
18
- abstractassistant[apple]==0.11.0
18
+ abstractassistant[apple]==0.12.0
19
19
 
20
20
  [gpu]
21
- abstractgateway[gpu]==0.10.0
22
- abstractassistant[gpu]==0.11.0
21
+ abstractgateway[gpu]==0.11.0
22
+ abstractassistant[gpu]==0.12.0
@@ -55,7 +55,7 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `__version__`
57
57
 
58
- The meta-package version (`0.8.0` for this release).
58
+ The meta-package version (`0.9.0` for this release).
59
59
 
60
60
  ### `RELEASE_VERSIONS`
61
61
 
@@ -79,7 +79,7 @@ The npm apps released with this version, each runnable with `npx <package>`:
79
79
  ### `CRATE_RELEASE_VERSIONS`
80
80
 
81
81
  The Rust terminal tools released with this version, installed with `cargo install <crate>`:
82
- `abstractgateway-console` 0.13.0, `abstractcore-console` 0.6.0, `abstractcode` 0.8.0 and the
82
+ `abstractgateway-console` 0.14.0, `abstractcore-console` 0.7.0, `abstractcode` 0.8.0 and the
83
83
  `abstracttui` engine 0.6.0. The bootstrap scripts build `abstractgateway-console` at this version by default
84
84
  (`--no-console` skips it) and `abstractcode` next to it (`--no-code-cli` skips it).
85
85
 
@@ -197,7 +197,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
197
197
  <latest>`, or `AbstractFramework <yours> found: already up to date` (every part is still checked,
198
198
  and repaired when needed). An install made by 0.6.1 or earlier recorded no release, so its first
199
199
  upgrade says `AbstractFramework found (abstractgateway 0.7.1; its release was not recorded):
200
- upgrading to AbstractFramework 0.8.0` (with the gateway version you have);
200
+ upgrading to AbstractFramework 0.9.0` (with the gateway version you have);
201
201
  - installs the gateway version that release pins, and every library the gateway uses
202
202
  (AbstractCore, AbstractRuntime, AbstractAgent, AbstractSkill, AbstractMemory, AbstractSemantics
203
203
  and the voice, vision, music and 3D packages) at the exact version released and tested with it ([Check your versions](#check-your-versions) shows
@@ -245,7 +245,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
245
245
 
246
246
  Installs made by AbstractFramework 0.6.1 or earlier recorded neither their release nor your install
247
247
  options. The first re-run says `AbstractFramework found (abstractgateway <version>; its release was
248
- not recorded): upgrading to AbstractFramework 0.8.0`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
248
+ not recorded): upgrading to AbstractFramework 0.9.0`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
249
249
  there, whether the gateway has the tray extra and the AbstractCore commands, whether the compiled
250
250
  extras were built (`--full`), and a custom data directory through the gateway pointer. It prints
251
251
  what it found (`read from disk: …`) and records it for later runs. An option the installer did not
@@ -448,7 +448,7 @@ The Mac package, the `.command` files and the one line all run the same script,
448
448
  login** switch counts), a first install leaves it off.
449
449
  3. Installs [uv](https://docs.astral.sh/uv/) when it is missing, then Python 3.12 through uv.
450
450
  4. Installs the gateway as an isolated uv tool, pinned to this release:
451
- `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.10.0"`, from prebuilt wheels
451
+ `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.11.0"`, from prebuilt wheels
452
452
  only (see [No compiler needed](#no-compiler-needed)), and checks that the command starts
453
453
  (reinstalling it in place when it does not). Every profile also gets local voice,
454
454
  `--with "abstractvoice[supertonic,stt]==0.13.2"` (the release's AbstractVoice): Supertonic
@@ -793,7 +793,7 @@ instead of starting a browser.
793
793
  ```bash
794
794
  curl -LsSf https://astral.sh/uv/install.sh | sh # Windows: irm https://astral.sh/uv/install.ps1 | iex
795
795
  uv python install 3.12
796
- uv tool install --python 3.12 "abstractgateway[tray]==0.10.0" # [apple,tray] or [gpu,tray] for local engines
796
+ uv tool install --python 3.12 "abstractgateway[tray]==0.11.0" # [apple,tray] or [gpu,tray] for local engines
797
797
  # (add --with and --overrides as shown by `install.sh --print` to avoid compiling)
798
798
  uv tool update-shell # puts ~/.local/bin on PATH; open a new terminal
799
799
  abstractgateway service install --port 8080 # or: abstractgateway serve
@@ -920,8 +920,8 @@ Python 3.11 to 3.13), but it gets PyPI's CPU-only PyTorch and no llama.cpp: use
920
920
  installer, which adds PyTorch's CUDA build and llama.cpp's prebuilt GPU build
921
921
  ([GPU on Windows](#gpu-on-windows-nvidia)).
922
922
 
923
- `abstractframework` 0.8.0 pins `abstractgateway==0.10.0`, `abstractassistant==0.11.0`,
924
- `abstractcore==2.22.0`, `AbstractRuntime==0.8.2`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
923
+ `abstractframework` 0.9.0 pins `abstractgateway==0.11.0`, `abstractassistant==0.12.0`,
924
+ `abstractcore==2.23.0`, `AbstractRuntime==0.8.3`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
925
925
  `AbstractMemory==0.3.0`, `abstractsemantics==0.0.5`, `abstractvoice==0.13.2`,
926
926
  `abstractvision==0.3.33`, `abstractmusic==0.1.15` and `abstract3d==0.3.2`. The `apple` and `gpu` extras select
927
927
  `abstractgateway[apple|gpu]` and `abstractassistant[apple|gpu]` at the same versions
@@ -1014,7 +1014,7 @@ Run or install them next to the Python stack:
1014
1014
  | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.10.0 |
1015
1015
  | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.22.0 |
1016
1016
  | Core terminal console | `cargo install abstractcore-console` (Rust 1.87+), then `abstractcore-console` (uses the `abstractcore` command). The installers do not build it: it is the console of a standalone `abstractcore serve`, and the gateway's terminal console already has its Models and Engines screens | 0.6.0 |
1017
- | Gateway terminal console | built by the installer (`--no-console` skips it), or `cargo install abstractgateway-console` (Rust 1.87+); then `abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token>` | 0.13.0 |
1017
+ | Gateway terminal console | built by the installer (`--no-console` skips it), or `cargo install abstractgateway-console` (Rust 1.87+); then `abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token>` | 0.14.0 |
1018
1018
  | Flow Editor | the console's **Apps** page (opens at `/apps/flow/`), or on its own: `npx @abstractframework/flow --gateway-url <url>` | 0.6.0 |
1019
1019
  | Code Web UI | the console's **Apps** page (`/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` | 0.9.0 |
1020
1020
  | Observer | the console's **Apps** page (`/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` | 0.5.0 |
@@ -328,7 +328,7 @@ pip install "abstractframework[gpu]"
328
328
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
329
329
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
330
330
 
331
- ### Release matrix (abstractframework 0.8.0)
331
+ ### Release matrix (abstractframework 0.9.0)
332
332
 
333
333
  `abstractframework` pins every Python package with `==`, so one version of the
334
334
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -337,10 +337,10 @@ and tested together.
337
337
 
338
338
  | Registry | Package | Version |
339
339
  |---|---|---|
340
- | PyPI | `abstractgateway` | 0.10.0 |
341
- | PyPI | `abstractassistant` | 0.11.0 |
342
- | PyPI | `abstractcore` | 2.22.0 |
343
- | PyPI | `AbstractRuntime` | 0.8.2 |
340
+ | PyPI | `abstractgateway` | 0.11.0 |
341
+ | PyPI | `abstractassistant` | 0.12.0 |
342
+ | PyPI | `abstractcore` | 2.23.0 |
343
+ | PyPI | `AbstractRuntime` | 0.8.3 |
344
344
  | PyPI | `abstractagent` | 0.3.17 |
345
345
  | PyPI | `abstractskill` | 0.3.0 |
346
346
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -349,17 +349,17 @@ and tested together.
349
349
  | PyPI | `abstractvision` | 0.3.33 |
350
350
  | PyPI | `abstractmusic` | 0.1.15 |
351
351
  | PyPI | `abstract3d` | 0.3.2 |
352
- | npm | `@abstractframework/flow` | 0.6.0 |
353
- | npm | `@abstractframework/code` | 0.9.0 |
354
- | npm | `@abstractframework/observer` | 0.5.0 |
352
+ | npm | `@abstractframework/flow` | 0.7.0 |
353
+ | npm | `@abstractframework/code` | 0.10.0 |
354
+ | npm | `@abstractframework/observer` | 0.6.0 |
355
355
  | npm | `@abstractframework/continuum` | 0.6.0 |
356
- | npm | `@abstractframework/entity` | 0.5.0 |
356
+ | npm | `@abstractframework/entity` | 0.6.0 |
357
357
  | crates.io | `abstractcode` | 0.8.0 |
358
- | crates.io | `abstractgateway-console` | 0.13.0 |
359
- | crates.io | `abstractcore-console` | 0.6.0 |
358
+ | crates.io | `abstractgateway-console` | 0.14.0 |
359
+ | crates.io | `abstractcore-console` | 0.7.0 |
360
360
  | crates.io | `abstracttui` | 0.6.0 |
361
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.10.0 (`gpu-latest` / `<version>-gpu` experimental) |
362
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.22.0 |
361
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.11.0 (`gpu-latest` / `<version>-gpu` experimental) |
362
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.23.0 |
363
363
 
364
364
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
365
365
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -640,7 +640,7 @@ build-backend = "setuptools.build_meta"
640
640
 
641
641
  [project]
642
642
  name = "abstractframework"
643
- version = "0.8.0"
643
+ version = "0.9.0"
644
644
  description = "Unified installer and documentation hub for the AbstractFramework ecosystem"
645
645
  readme = "README.md"
646
646
  license = {text = "MIT"}
@@ -684,14 +684,14 @@ requires-python = ">=3.10"
684
684
  # - Keep the meta-package aligned with the real per-package profiles (especially `abstractgateway`).
685
685
  dependencies = [
686
686
  # Durable Gateway control plane (remote-light by default).
687
- "abstractgateway==0.10.0",
687
+ "abstractgateway==0.11.0",
688
688
 
689
689
  # Workflow authoring UI is distributed through npm as @abstractframework/flow.
690
- "abstractassistant==0.11.0",
690
+ "abstractassistant==0.12.0",
691
691
 
692
692
  # Pin the core Python stack for release determinism (also pulled transitively).
693
- "abstractcore==2.22.0",
694
- "AbstractRuntime==0.8.2",
693
+ "abstractcore==2.23.0",
694
+ "AbstractRuntime==0.8.3",
695
695
  "abstractagent==0.3.17",
696
696
  "abstractskill==0.3.0",
697
697
  "AbstractMemory==0.3.0",
@@ -718,13 +718,13 @@ dependencies = [
718
718
  # the stack by selecting the hardware-local dependency aggregates (owned by Gateway),
719
719
  # then adds user-facing apps.
720
720
  apple = [
721
- "abstractgateway[apple]==0.10.0",
722
- "abstractassistant[apple]==0.11.0; platform_system == \"Darwin\"",
721
+ "abstractgateway[apple]==0.11.0",
722
+ "abstractassistant[apple]==0.12.0; platform_system == \"Darwin\"",
723
723
  ]
724
724
 
725
725
  gpu = [
726
- "abstractgateway[gpu]==0.10.0",
727
- "abstractassistant[gpu]==0.11.0",
726
+ "abstractgateway[gpu]==0.11.0",
727
+ "abstractassistant[gpu]==0.12.0",
728
728
  ]
729
729
 
730
730
  [project.urls]
@@ -774,15 +774,15 @@ Most implementation functionality still lives in component projects.
774
774
 
775
775
  from __future__ import annotations
776
776
 
777
- __version__ = "0.8.0"
777
+ __version__ = "0.9.0"
778
778
  __author__ = "Laurent-Philippe Albou"
779
779
  __license__ = "MIT"
780
780
 
781
781
  RELEASE_VERSIONS: dict[str, str] = {
782
- "abstractcore": "2.22.0",
783
- "abstractruntime": "0.8.2",
782
+ "abstractcore": "2.23.0",
783
+ "abstractruntime": "0.8.3",
784
784
  "abstractagent": "0.3.17",
785
- "abstractgateway": "0.10.0",
785
+ "abstractgateway": "0.11.0",
786
786
  "abstractskill": "0.3.0",
787
787
  "abstractmemory": "0.3.0",
788
788
  "abstractsemantics": "0.0.5",
@@ -790,7 +790,7 @@ RELEASE_VERSIONS: dict[str, str] = {
790
790
  "abstractvision": "0.3.33",
791
791
  "abstractmusic": "0.1.15",
792
792
  "abstract3d": "0.3.2",
793
- "abstractassistant": "0.11.0",
793
+ "abstractassistant": "0.12.0",
794
794
  }
795
795
 
796
796
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -809,11 +809,11 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
809
809
  }
810
810
 
811
811
  NPM_RELEASE_VERSIONS: dict[str, str] = {
812
- "@abstractframework/flow": "0.6.0",
813
- "@abstractframework/code": "0.9.0",
814
- "@abstractframework/observer": "0.5.0",
812
+ "@abstractframework/flow": "0.7.0",
813
+ "@abstractframework/code": "0.10.0",
814
+ "@abstractframework/observer": "0.6.0",
815
815
  "@abstractframework/continuum": "0.6.0",
816
- "@abstractframework/entity": "0.5.0",
816
+ "@abstractframework/entity": "0.6.0",
817
817
  }
818
818
 
819
819
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
@@ -822,8 +822,8 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
822
822
  # `abstractcore serve`, and the gateway's terminal console already carries its Models and
823
823
  # Engines screens; it is listed here as a release version only.
824
824
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
825
- "abstractgateway-console": "0.13.0",
826
- "abstractcore-console": "0.6.0",
825
+ "abstractgateway-console": "0.14.0",
826
+ "abstractcore-console": "0.7.0",
827
827
  "abstractcode": "0.8.0",
828
828
  "abstracttui": "0.6.0",
829
829
  }
@@ -3935,7 +3935,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
3935
3935
  <latest>`, or `AbstractFramework <yours> found: already up to date` (every part is still checked,
3936
3936
  and repaired when needed). An install made by 0.6.1 or earlier recorded no release, so its first
3937
3937
  upgrade says `AbstractFramework found (abstractgateway 0.7.1; its release was not recorded):
3938
- upgrading to AbstractFramework 0.8.0` (with the gateway version you have);
3938
+ upgrading to AbstractFramework 0.9.0` (with the gateway version you have);
3939
3939
  - installs the gateway version that release pins, and every library the gateway uses
3940
3940
  (AbstractCore, AbstractRuntime, AbstractAgent, AbstractSkill, AbstractMemory, AbstractSemantics
3941
3941
  and the voice, vision, music and 3D packages) at the exact version released and tested with it ([Check your versions](#check-your-versions) shows
@@ -3983,7 +3983,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
3983
3983
 
3984
3984
  Installs made by AbstractFramework 0.6.1 or earlier recorded neither their release nor your install
3985
3985
  options. The first re-run says `AbstractFramework found (abstractgateway <version>; its release was
3986
- not recorded): upgrading to AbstractFramework 0.8.0`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
3986
+ not recorded): upgrading to AbstractFramework 0.9.0`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
3987
3987
  there, whether the gateway has the tray extra and the AbstractCore commands, whether the compiled
3988
3988
  extras were built (`--full`), and a custom data directory through the gateway pointer. It prints
3989
3989
  what it found (`read from disk: …`) and records it for later runs. An option the installer did not
@@ -4186,7 +4186,7 @@ The Mac package, the `.command` files and the one line all run the same script,
4186
4186
  login** switch counts), a first install leaves it off.
4187
4187
  3. Installs [uv](https://docs.astral.sh/uv/) when it is missing, then Python 3.12 through uv.
4188
4188
  4. Installs the gateway as an isolated uv tool, pinned to this release:
4189
- `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.10.0"`, from prebuilt wheels
4189
+ `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.11.0"`, from prebuilt wheels
4190
4190
  only (see [No compiler needed](#no-compiler-needed)), and checks that the command starts
4191
4191
  (reinstalling it in place when it does not). Every profile also gets local voice,
4192
4192
  `--with "abstractvoice[supertonic,stt]==0.13.2"` (the release's AbstractVoice): Supertonic
@@ -4531,7 +4531,7 @@ instead of starting a browser.
4531
4531
  ```bash
4532
4532
  curl -LsSf https://astral.sh/uv/install.sh | sh # Windows: irm https://astral.sh/uv/install.ps1 | iex
4533
4533
  uv python install 3.12
4534
- uv tool install --python 3.12 "abstractgateway[tray]==0.10.0" # [apple,tray] or [gpu,tray] for local engines
4534
+ uv tool install --python 3.12 "abstractgateway[tray]==0.11.0" # [apple,tray] or [gpu,tray] for local engines
4535
4535
  # (add --with and --overrides as shown by `install.sh --print` to avoid compiling)
4536
4536
  uv tool update-shell # puts ~/.local/bin on PATH; open a new terminal
4537
4537
  abstractgateway service install --port 8080 # or: abstractgateway serve
@@ -4658,8 +4658,8 @@ Python 3.11 to 3.13), but it gets PyPI's CPU-only PyTorch and no llama.cpp: use
4658
4658
  installer, which adds PyTorch's CUDA build and llama.cpp's prebuilt GPU build
4659
4659
  ([GPU on Windows](#gpu-on-windows-nvidia)).
4660
4660
 
4661
- `abstractframework` 0.8.0 pins `abstractgateway==0.10.0`, `abstractassistant==0.11.0`,
4662
- `abstractcore==2.22.0`, `AbstractRuntime==0.8.2`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
4661
+ `abstractframework` 0.9.0 pins `abstractgateway==0.11.0`, `abstractassistant==0.12.0`,
4662
+ `abstractcore==2.23.0`, `AbstractRuntime==0.8.3`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
4663
4663
  `AbstractMemory==0.3.0`, `abstractsemantics==0.0.5`, `abstractvoice==0.13.2`,
4664
4664
  `abstractvision==0.3.33`, `abstractmusic==0.1.15` and `abstract3d==0.3.2`. The `apple` and `gpu` extras select
4665
4665
  `abstractgateway[apple|gpu]` and `abstractassistant[apple|gpu]` at the same versions
@@ -4752,7 +4752,7 @@ Run or install them next to the Python stack:
4752
4752
  | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.10.0 |
4753
4753
  | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.22.0 |
4754
4754
  | Core terminal console | `cargo install abstractcore-console` (Rust 1.87+), then `abstractcore-console` (uses the `abstractcore` command). The installers do not build it: it is the console of a standalone `abstractcore serve`, and the gateway's terminal console already has its Models and Engines screens | 0.6.0 |
4755
- | Gateway terminal console | built by the installer (`--no-console` skips it), or `cargo install abstractgateway-console` (Rust 1.87+); then `abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token>` | 0.13.0 |
4755
+ | Gateway terminal console | built by the installer (`--no-console` skips it), or `cargo install abstractgateway-console` (Rust 1.87+); then `abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token>` | 0.14.0 |
4756
4756
  | Flow Editor | the console's **Apps** page (opens at `/apps/flow/`), or on its own: `npx @abstractframework/flow --gateway-url <url>` | 0.6.0 |
4757
4757
  | Code Web UI | the console's **Apps** page (`/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` | 0.9.0 |
4758
4758
  | Observer | the console's **Apps** page (`/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` | 0.5.0 |
@@ -6749,7 +6749,7 @@ The response type returned by `llm.generate(...)`.
6749
6749
 
6750
6750
  ### `__version__`
6751
6751
 
6752
- The meta-package version (`0.8.0` for this release).
6752
+ The meta-package version (`0.9.0` for this release).
6753
6753
 
6754
6754
  ### `RELEASE_VERSIONS`
6755
6755
 
@@ -6773,7 +6773,7 @@ The npm apps released with this version, each runnable with `npx <package>`:
6773
6773
  ### `CRATE_RELEASE_VERSIONS`
6774
6774
 
6775
6775
  The Rust terminal tools released with this version, installed with `cargo install <crate>`:
6776
- `abstractgateway-console` 0.13.0, `abstractcore-console` 0.6.0, `abstractcode` 0.8.0 and the
6776
+ `abstractgateway-console` 0.14.0, `abstractcore-console` 0.7.0, `abstractcode` 0.8.0 and the
6777
6777
  `abstracttui` engine 0.6.0. The bootstrap scripts build `abstractgateway-console` at this version by default
6778
6778
  (`--no-console` skips it) and `abstractcode` next to it (`--no-code-cli` skips it).
6779
6779