abstractframework 0.7.1__tar.gz → 0.7.2__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 (197) hide show
  1. {abstractframework-0.7.1 → abstractframework-0.7.2}/CHANGELOG.md +42 -0
  2. {abstractframework-0.7.1/abstractframework.egg-info → abstractframework-0.7.2}/PKG-INFO +16 -16
  3. {abstractframework-0.7.1 → abstractframework-0.7.2}/README.md +11 -11
  4. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework/__init__.py +8 -8
  5. {abstractframework-0.7.1 → abstractframework-0.7.2/abstractframework.egg-info}/PKG-INFO +16 -16
  6. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework.egg-info/SOURCES.txt +1 -0
  7. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework.egg-info/requires.txt +4 -4
  8. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/api.md +6 -6
  9. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/faq.md +1 -1
  10. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/install.md +55 -22
  11. {abstractframework-0.7.1 → abstractframework-0.7.2}/llms-full.txt +88 -55
  12. {abstractframework-0.7.1 → abstractframework-0.7.2}/llms.txt +2 -2
  13. {abstractframework-0.7.1 → abstractframework-0.7.2}/pyproject.toml +5 -5
  14. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/install.sh +133 -16
  15. abstractframework-0.7.2/tests/test_install_index_lag.py +412 -0
  16. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_install_profiles.py +12 -5
  17. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_install_ps1_gpu_stack.py +1 -1
  18. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_install_sh_gpu_stack.py +1 -1
  19. {abstractframework-0.7.1 → abstractframework-0.7.2}/LICENSE +0 -0
  20. {abstractframework-0.7.1 → abstractframework-0.7.2}/MANIFEST.in +0 -0
  21. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework/__main__.py +0 -0
  22. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework/cli.py +0 -0
  23. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework/install_manifest.py +0 -0
  24. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework/py.typed +0 -0
  25. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework.egg-info/dependency_links.txt +0 -0
  26. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework.egg-info/entry_points.txt +0 -0
  27. {abstractframework-0.7.1 → abstractframework-0.7.2}/abstractframework.egg-info/top_level.txt +0 -0
  28. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/README.md +0 -0
  29. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0001-layered-architecture.md +0 -0
  30. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0002-effect-system-design.md +0 -0
  31. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0003-tool-system-architecture.md +0 -0
  32. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0004-observability-strategy.md +0 -0
  33. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0005-memory-architecture.md +0 -0
  34. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0006-durable-tool-execution.md +0 -0
  35. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  36. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0008-token-terminology.md +0 -0
  37. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  38. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  39. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  40. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0012-portable-workflowartifact.md +0 -0
  41. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  42. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  43. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  44. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  45. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  46. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  47. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  48. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  49. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  50. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  51. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  52. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  53. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  54. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  55. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  56. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  57. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  58. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  59. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  60. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  61. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  62. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  63. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0035-capability-routing-defaults.md +0 -0
  64. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  65. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  66. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  67. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/README.md +0 -0
  68. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/memory-recall-levels.md +0 -0
  69. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  70. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  71. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  72. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  73. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  74. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  75. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  76. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  77. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/agent-sessions.md +0 -0
  78. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/architecture.md +0 -0
  79. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/automations.md +0 -0
  80. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/claude/README.md +0 -0
  81. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/claude/abstractframework-fit.md +0 -0
  82. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/claude/claude-skills-overview.md +0 -0
  83. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/claude/claude-skills-sources.md +0 -0
  84. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/claude/claude-skills-top-20.md +0 -0
  85. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/comparisons/README.md +0 -0
  86. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/configuration.md +0 -0
  87. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/getting-started.md +0 -0
  88. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/glossary.md +0 -0
  89. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/LANDING.md +0 -0
  90. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/README.md +0 -0
  91. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/agent-skills.md +0 -0
  92. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/agent-vs-llm.md +0 -0
  93. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/agora-workflow-agent.md +0 -0
  94. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/apple-local-gateway-flow.md +0 -0
  95. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/capability-plugins.md +0 -0
  96. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/capability-routing-defaults.md +0 -0
  97. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/deployment-iphone.md +0 -0
  98. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/deployment-topologies.md +0 -0
  99. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/deployment-web.md +0 -0
  100. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/email-integration.md +0 -0
  101. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/event-inbox-agent.md +0 -0
  102. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/flow-and-kg-memory.md +0 -0
  103. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/gateway-security.md +0 -0
  104. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/headless-swarm.md +0 -0
  105. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/process-manager-env-vars.md +0 -0
  106. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/prompt-caching.md +0 -0
  107. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/runtime-artifacts.md +0 -0
  108. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/runtime-scope.md +0 -0
  109. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/scheduled-workflows.md +0 -0
  110. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/summoned-entities.md +0 -0
  111. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/telegram-integration.md +0 -0
  112. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/guide/workflow-bundles.md +0 -0
  113. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/README.md +0 -0
  114. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/components.md +0 -0
  115. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/implementation-plan.md +0 -0
  116. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/operations-and-support.md +0 -0
  117. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/release-and-manifest.md +0 -0
  118. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/security-and-os-blocks.md +0 -0
  119. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/strategy.md +0 -0
  120. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/installers/user-journeys.md +0 -0
  121. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/prompts/agora-collaboration.md +0 -0
  122. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/README.md +0 -0
  123. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/email-inbox-agent.md +0 -0
  124. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/gateway-first-local-dev.md +0 -0
  125. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/offline-coding-assistant.md +0 -0
  126. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/phone-thin-client.md +0 -0
  127. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/specialized-agent-flow.md +0 -0
  128. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/telegram-permanent-contact.md +0 -0
  129. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  130. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/README.md +0 -0
  131. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  132. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  133. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  134. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  135. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/claude-agent-skills-overview.md +0 -0
  136. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/claude-agent-skills-sources.md +0 -0
  137. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/skills/claude-agent-skills-top-20.md +0 -0
  138. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/troubleshooting.md +0 -0
  139. {abstractframework-0.7.1 → abstractframework-0.7.2}/docs/workspace-scripts.md +0 -0
  140. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/af-local.sh +0 -0
  141. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/af.sh +0 -0
  142. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/agora_react_flow_smoke.py +0 -0
  143. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/assistant-local.sh +0 -0
  144. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/assistant.sh +0 -0
  145. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/build.sh +0 -0
  146. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/cache_probe_local_backends.py +0 -0
  147. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/cache_steer_repl.py +0 -0
  148. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/check_identity_sync.py +0 -0
  149. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/clone.sh +0 -0
  150. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/code-local.sh +0 -0
  151. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/code.sh +0 -0
  152. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/commit.sh +0 -0
  153. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/console-local.sh +0 -0
  154. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/console.sh +0 -0
  155. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/core_operator_drive.py +0 -0
  156. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/deps.sh +0 -0
  157. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/entity-local.sh +0 -0
  158. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/entity.sh +0 -0
  159. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/event_inbox_flow_smoke.py +0 -0
  160. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/flow-local.sh +0 -0
  161. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/flow.sh +0 -0
  162. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/gateway-flow-local.sh +0 -0
  163. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/gateway-flow.sh +0 -0
  164. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/gateway-local.sh +0 -0
  165. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/gateway.sh +0 -0
  166. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/gen_llms_full.py +0 -0
  167. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/headless_fleet_bridge.py +0 -0
  168. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/headless_fleet_demo.py +0 -0
  169. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/headless_steer_repl.py +0 -0
  170. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/af_inventory.py +0 -0
  171. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/af_stack.sh +0 -0
  172. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/af_supervisor.sh +0 -0
  173. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/apps_common.sh +0 -0
  174. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/build_macos_installer.sh +0 -0
  175. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/gateway_user_tokens.py +0 -0
  176. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/lib/repo_groups.sh +0 -0
  177. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/meet_castor.sh +0 -0
  178. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/observer-local.sh +0 -0
  179. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/observer.sh +0 -0
  180. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/plan_walkthrough.py +0 -0
  181. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/pull.sh +0 -0
  182. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/push.sh +0 -0
  183. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/spawn_demo_agent.sh +0 -0
  184. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/start-local.sh +0 -0
  185. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/start.sh +0 -0
  186. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/status.sh +0 -0
  187. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/steer_repl.py +0 -0
  188. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/tests/test_af_supervisor.sh +0 -0
  189. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/tests/test_install_user_path.sh +0 -0
  190. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/tests/test_inventory.sh +0 -0
  191. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/tests/test_repo_scripts.sh +0 -0
  192. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/uninstall.sh +0 -0
  193. {abstractframework-0.7.1 → abstractframework-0.7.2}/scripts/visit_resume_cache_probe.py +0 -0
  194. {abstractframework-0.7.1 → abstractframework-0.7.2}/setup.cfg +0 -0
  195. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_install_ps1_own_gateway.py +0 -0
  196. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_install_sh_gpu_twin.py +0 -0
  197. {abstractframework-0.7.1 → abstractframework-0.7.2}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,48 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.7.2] - 2026-09-30
8
+
9
+ Every screen works on phones, tablets and any window size. Pins: AbstractGateway 0.9.0 and
10
+ AbstractCore 2.21.0 (responsive web consoles); the browser apps Flow 0.5.0, Code 0.8.0, Observer
11
+ 0.4.0, Continuum 0.5.0 and Entity 0.4.0 (responsive layouts, on `@abstractframework/ui-kit` 0.3.2
12
+ and `panel-chat` 0.2.1). Every other version is unchanged from 0.7.1.
13
+
14
+ ### Changed
15
+
16
+ - **Responsive everywhere.** The gateway and AbstractCore web consoles and the five browser apps
17
+ follow one responsive system: the framework breakpoints (480, 768, 1024 and 1440 px wide, plus
18
+ 500 px tall for phone landscape), sidebars that become drawers below 1024 px, dialogs that open
19
+ as bottom sheets on small screens, 44 px touch targets and 16 px form fields on touch screens, and
20
+ pages that respect the notch and home-indicator areas. See each app's changelog for details.
21
+
22
+ ### Fixed
23
+
24
+ - **A new email automation reacts to the mail you send to test it.** Mail sent right after
25
+ creating a "When an email arrives" automation could be missed: the mail watcher, which reads
26
+ nothing until an email automation exists, marked where new mail starts up to a minute later and
27
+ treated that minute's mail as already there. Creating an email automation now wakes it and the
28
+ mark is taken within seconds.
29
+ - **A new or resumed email automation no longer runs on old mail.** After a time with no email
30
+ automation active, the next one received everything that had arrived meanwhile as new mail. That
31
+ mail is now treated as already there (mail that arrives while the gateway itself is down is
32
+ still read when it is back).
33
+ - **An upgrade right after a release no longer installs less.** When one of PyPI's mirrors had not
34
+ yet listed a version the release pins, uv answered `there is no version of
35
+ abstractgateway[gpu]==0.8.1`, and the installer took that for a system without the voice
36
+ wheels: the 0.7.1 upgrade of a Linux machine went through without local voice (a second run was
37
+ clean). install.sh and install.ps1 (and so the consoles' **Update** action, which runs install.sh) now recognise that
38
+ case from uv's exit code 1, its resolution failure, and its exact-pin wording for a package the
39
+ installer itself pinned (or from a download of that pinned version's own file that answers 404:
40
+ the list shows it, the file is not served yet), and run the same install again, with every feature, after 15 s, 30 s,
41
+ 60 s and 120 s waits (8 attempts, about 10 minutes), printing `PyPI hasn't published
42
+ abstractgateway 0.8.1 to every mirror yet; retrying in 30 s (attempt 3/8)`. After that they stop
43
+ with the cause and what to do, never with a smaller install. The fallbacks for systems without
44
+ the voice or llama.cpp wheels are unchanged. The voice requirement now carries the release's
45
+ AbstractVoice version (`abstractvoice[supertonic,stt]==0.13.2`), which the release matrix already
46
+ enforced, so uv names a missing AbstractVoice in the same exact-pin form. See
47
+ [Right after a release](docs/install.md#right-after-a-release).
48
+
7
49
  ## [0.7.1] - 2026-09-30
8
50
 
9
51
  A patch release. Pins: AbstractCore 2.20.2, AbstractRuntime 0.8.1 and AbstractGateway 0.8.1; every
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.7.1
3
+ Version: 0.7.2
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,9 +23,9 @@ 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.8.1
26
+ Requires-Dist: abstractgateway==0.9.0
27
27
  Requires-Dist: abstractassistant==0.10.0
28
- Requires-Dist: abstractcore==2.20.2
28
+ Requires-Dist: abstractcore==2.21.0
29
29
  Requires-Dist: AbstractRuntime==0.8.1
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
@@ -36,10 +36,10 @@ 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.8.1; extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.9.0; extra == "apple"
40
40
  Requires-Dist: abstractassistant[apple]==0.10.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.8.1; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.9.0; extra == "gpu"
43
43
  Requires-Dist: abstractassistant[gpu]==0.10.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
@@ -217,7 +217,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
217
217
  ```
218
218
 
219
219
  Container images are published for the gateway and the AbstractCore server:
220
- `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
220
+ `ghcr.io/lpalbou/abstractgateway:0.9.0` and `ghcr.io/lpalbou/abstractcore-server:2.21.0`.
221
221
 
222
222
  For artifact and runtime-resource investigation, see
223
223
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -363,7 +363,7 @@ pip install "abstractframework[gpu]"
363
363
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
364
364
  | 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+) |
365
365
 
366
- ### Release matrix (abstractframework 0.7.1)
366
+ ### Release matrix (abstractframework 0.7.2)
367
367
 
368
368
  `abstractframework` pins every Python package with `==`, so one version of the
369
369
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -372,9 +372,9 @@ and tested together.
372
372
 
373
373
  | Registry | Package | Version |
374
374
  |---|---|---|
375
- | PyPI | `abstractgateway` | 0.8.1 |
375
+ | PyPI | `abstractgateway` | 0.9.0 |
376
376
  | PyPI | `abstractassistant` | 0.10.0 |
377
- | PyPI | `abstractcore` | 2.20.2 |
377
+ | PyPI | `abstractcore` | 2.21.0 |
378
378
  | PyPI | `AbstractRuntime` | 0.8.1 |
379
379
  | PyPI | `abstractagent` | 0.3.17 |
380
380
  | PyPI | `abstractskill` | 0.3.0 |
@@ -384,17 +384,17 @@ and tested together.
384
384
  | PyPI | `abstractvision` | 0.3.33 |
385
385
  | PyPI | `abstractmusic` | 0.1.15 |
386
386
  | PyPI | `abstract3d` | 0.3.2 |
387
- | npm | `@abstractframework/flow` | 0.4.0 |
388
- | npm | `@abstractframework/code` | 0.7.0 |
389
- | npm | `@abstractframework/observer` | 0.3.0 |
390
- | npm | `@abstractframework/continuum` | 0.4.0 |
391
- | npm | `@abstractframework/entity` | 0.3.0 |
387
+ | npm | `@abstractframework/flow` | 0.5.0 |
388
+ | npm | `@abstractframework/code` | 0.8.0 |
389
+ | npm | `@abstractframework/observer` | 0.4.0 |
390
+ | npm | `@abstractframework/continuum` | 0.5.0 |
391
+ | npm | `@abstractframework/entity` | 0.4.0 |
392
392
  | crates.io | `abstractcode` | 0.7.1 |
393
393
  | crates.io | `abstractgateway-console` | 0.12.0 |
394
394
  | crates.io | `abstractcore-console` | 0.5.0 |
395
395
  | crates.io | `abstracttui` | 0.6.0 |
396
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
397
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
396
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.9.0 (`gpu-latest` / `<version>-gpu` experimental) |
397
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.21.0 |
398
398
 
399
399
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
400
400
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -172,7 +172,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
172
172
  ```
173
173
 
174
174
  Container images are published for the gateway and the AbstractCore server:
175
- `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
175
+ `ghcr.io/lpalbou/abstractgateway:0.9.0` and `ghcr.io/lpalbou/abstractcore-server:2.21.0`.
176
176
 
177
177
  For artifact and runtime-resource investigation, see
178
178
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -318,7 +318,7 @@ pip install "abstractframework[gpu]"
318
318
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
319
319
  | 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+) |
320
320
 
321
- ### Release matrix (abstractframework 0.7.1)
321
+ ### Release matrix (abstractframework 0.7.2)
322
322
 
323
323
  `abstractframework` pins every Python package with `==`, so one version of the
324
324
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -327,9 +327,9 @@ and tested together.
327
327
 
328
328
  | Registry | Package | Version |
329
329
  |---|---|---|
330
- | PyPI | `abstractgateway` | 0.8.1 |
330
+ | PyPI | `abstractgateway` | 0.9.0 |
331
331
  | PyPI | `abstractassistant` | 0.10.0 |
332
- | PyPI | `abstractcore` | 2.20.2 |
332
+ | PyPI | `abstractcore` | 2.21.0 |
333
333
  | PyPI | `AbstractRuntime` | 0.8.1 |
334
334
  | PyPI | `abstractagent` | 0.3.17 |
335
335
  | PyPI | `abstractskill` | 0.3.0 |
@@ -339,17 +339,17 @@ and tested together.
339
339
  | PyPI | `abstractvision` | 0.3.33 |
340
340
  | PyPI | `abstractmusic` | 0.1.15 |
341
341
  | PyPI | `abstract3d` | 0.3.2 |
342
- | npm | `@abstractframework/flow` | 0.4.0 |
343
- | npm | `@abstractframework/code` | 0.7.0 |
344
- | npm | `@abstractframework/observer` | 0.3.0 |
345
- | npm | `@abstractframework/continuum` | 0.4.0 |
346
- | npm | `@abstractframework/entity` | 0.3.0 |
342
+ | npm | `@abstractframework/flow` | 0.5.0 |
343
+ | npm | `@abstractframework/code` | 0.8.0 |
344
+ | npm | `@abstractframework/observer` | 0.4.0 |
345
+ | npm | `@abstractframework/continuum` | 0.5.0 |
346
+ | npm | `@abstractframework/entity` | 0.4.0 |
347
347
  | crates.io | `abstractcode` | 0.7.1 |
348
348
  | crates.io | `abstractgateway-console` | 0.12.0 |
349
349
  | crates.io | `abstractcore-console` | 0.5.0 |
350
350
  | crates.io | `abstracttui` | 0.6.0 |
351
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
352
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
351
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.9.0 (`gpu-latest` / `<version>-gpu` experimental) |
352
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.21.0 |
353
353
 
354
354
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
355
355
  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.7.1"
13
+ __version__ = "0.7.2"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.20.2",
18
+ "abstractcore": "2.21.0",
19
19
  "abstractruntime": "0.8.1",
20
20
  "abstractagent": "0.3.17",
21
- "abstractgateway": "0.8.1",
21
+ "abstractgateway": "0.9.0",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
@@ -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.4.0",
49
- "@abstractframework/code": "0.7.0",
50
- "@abstractframework/observer": "0.3.0",
51
- "@abstractframework/continuum": "0.4.0",
52
- "@abstractframework/entity": "0.3.0",
48
+ "@abstractframework/flow": "0.5.0",
49
+ "@abstractframework/code": "0.8.0",
50
+ "@abstractframework/observer": "0.4.0",
51
+ "@abstractframework/continuum": "0.5.0",
52
+ "@abstractframework/entity": "0.4.0",
53
53
  }
54
54
 
55
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.7.1
3
+ Version: 0.7.2
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,9 +23,9 @@ 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.8.1
26
+ Requires-Dist: abstractgateway==0.9.0
27
27
  Requires-Dist: abstractassistant==0.10.0
28
- Requires-Dist: abstractcore==2.20.2
28
+ Requires-Dist: abstractcore==2.21.0
29
29
  Requires-Dist: AbstractRuntime==0.8.1
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
@@ -36,10 +36,10 @@ 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.8.1; extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.9.0; extra == "apple"
40
40
  Requires-Dist: abstractassistant[apple]==0.10.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.8.1; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.9.0; extra == "gpu"
43
43
  Requires-Dist: abstractassistant[gpu]==0.10.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
@@ -217,7 +217,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
217
217
  ```
218
218
 
219
219
  Container images are published for the gateway and the AbstractCore server:
220
- `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
220
+ `ghcr.io/lpalbou/abstractgateway:0.9.0` and `ghcr.io/lpalbou/abstractcore-server:2.21.0`.
221
221
 
222
222
  For artifact and runtime-resource investigation, see
223
223
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -363,7 +363,7 @@ pip install "abstractframework[gpu]"
363
363
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
364
364
  | 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+) |
365
365
 
366
- ### Release matrix (abstractframework 0.7.1)
366
+ ### Release matrix (abstractframework 0.7.2)
367
367
 
368
368
  `abstractframework` pins every Python package with `==`, so one version of the
369
369
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -372,9 +372,9 @@ and tested together.
372
372
 
373
373
  | Registry | Package | Version |
374
374
  |---|---|---|
375
- | PyPI | `abstractgateway` | 0.8.1 |
375
+ | PyPI | `abstractgateway` | 0.9.0 |
376
376
  | PyPI | `abstractassistant` | 0.10.0 |
377
- | PyPI | `abstractcore` | 2.20.2 |
377
+ | PyPI | `abstractcore` | 2.21.0 |
378
378
  | PyPI | `AbstractRuntime` | 0.8.1 |
379
379
  | PyPI | `abstractagent` | 0.3.17 |
380
380
  | PyPI | `abstractskill` | 0.3.0 |
@@ -384,17 +384,17 @@ and tested together.
384
384
  | PyPI | `abstractvision` | 0.3.33 |
385
385
  | PyPI | `abstractmusic` | 0.1.15 |
386
386
  | PyPI | `abstract3d` | 0.3.2 |
387
- | npm | `@abstractframework/flow` | 0.4.0 |
388
- | npm | `@abstractframework/code` | 0.7.0 |
389
- | npm | `@abstractframework/observer` | 0.3.0 |
390
- | npm | `@abstractframework/continuum` | 0.4.0 |
391
- | npm | `@abstractframework/entity` | 0.3.0 |
387
+ | npm | `@abstractframework/flow` | 0.5.0 |
388
+ | npm | `@abstractframework/code` | 0.8.0 |
389
+ | npm | `@abstractframework/observer` | 0.4.0 |
390
+ | npm | `@abstractframework/continuum` | 0.5.0 |
391
+ | npm | `@abstractframework/entity` | 0.4.0 |
392
392
  | crates.io | `abstractcode` | 0.7.1 |
393
393
  | crates.io | `abstractgateway-console` | 0.12.0 |
394
394
  | crates.io | `abstractcore-console` | 0.5.0 |
395
395
  | crates.io | `abstracttui` | 0.6.0 |
396
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
397
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
396
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.9.0 (`gpu-latest` / `<version>-gpu` experimental) |
397
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.21.0 |
398
398
 
399
399
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
400
400
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -186,6 +186,7 @@ scripts/tests/test_af_supervisor.sh
186
186
  scripts/tests/test_install_user_path.sh
187
187
  scripts/tests/test_inventory.sh
188
188
  scripts/tests/test_repo_scripts.sh
189
+ tests/test_install_index_lag.py
189
190
  tests/test_install_profiles.py
190
191
  tests/test_install_ps1_gpu_stack.py
191
192
  tests/test_install_ps1_own_gateway.py
@@ -1,6 +1,6 @@
1
- abstractgateway==0.8.1
1
+ abstractgateway==0.9.0
2
2
  abstractassistant==0.10.0
3
- abstractcore==2.20.2
3
+ abstractcore==2.21.0
4
4
  AbstractRuntime==0.8.1
5
5
  abstractagent==0.3.17
6
6
  abstractskill==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.8.1
15
+ abstractgateway[apple]==0.9.0
16
16
 
17
17
  [apple:platform_system == "Darwin"]
18
18
  abstractassistant[apple]==0.10.0
19
19
 
20
20
  [gpu]
21
- abstractgateway[gpu]==0.8.1
21
+ abstractgateway[gpu]==0.9.0
22
22
  abstractassistant[gpu]==0.10.0
@@ -55,12 +55,12 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `__version__`
57
57
 
58
- The meta-package version (`0.7.1` for this release).
58
+ The meta-package version (`0.7.2` for this release).
59
59
 
60
60
  ### `RELEASE_VERSIONS`
61
61
 
62
- Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.7.1:
63
- `abstractcore` 2.20.2, `abstractruntime` 0.8.1, `abstractagent` 0.3.17, `abstractgateway` 0.8.1,
62
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.7.2:
63
+ `abstractcore` 2.21.0, `abstractruntime` 0.8.1, `abstractagent` 0.3.17, `abstractgateway` 0.9.0,
64
64
  `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.13.2, `abstractvision` 0.3.33,
65
65
  `abstractmusic` 0.1.15, `abstract3d` 0.3.2, `abstractassistant` 0.10.0.
66
66
 
@@ -72,9 +72,9 @@ Maps each package name in `RELEASE_VERSIONS` to its PyPI distribution name (for
72
72
  ### `NPM_RELEASE_VERSIONS`
73
73
 
74
74
  The npm apps released with this version, each runnable with `npx <package>`:
75
- `@abstractframework/flow` 0.4.0, `@abstractframework/code` 0.7.0,
76
- `@abstractframework/observer` 0.3.0, `@abstractframework/continuum` 0.4.0 and
77
- `@abstractframework/entity` 0.3.0. They also appear as `npm_apps` in the install manifest.
75
+ `@abstractframework/flow` 0.5.0, `@abstractframework/code` 0.8.0,
76
+ `@abstractframework/observer` 0.4.0, `@abstractframework/continuum` 0.5.0 and
77
+ `@abstractframework/entity` 0.4.0. They also appear as `npm_apps` in the install manifest.
78
78
 
79
79
  ### `CRATE_RELEASE_VERSIONS`
80
80
 
@@ -34,7 +34,7 @@ No.
34
34
  | Everything at compatible versions | `pip install abstractframework` |
35
35
  | A browser app | the gateway console's **Apps** page (served at `/apps/<app>/` on the gateway), or on its own: `npx @abstractframework/<flow\|code\|observer\|continuum\|entity> --gateway-url <url>` |
36
36
  | A terminal client | `cargo install abstractcode`, `cargo install abstractgateway-console` or `cargo install abstractcore-console` |
37
- | A container deployment | `ghcr.io/lpalbou/abstractgateway:0.8.1` |
37
+ | A container deployment | `ghcr.io/lpalbou/abstractgateway:0.9.0` |
38
38
 
39
39
  See [Install AbstractFramework](install.md) for the Light / Apple / GPU chooser. Light is
40
40
  remote-first, not reduced-functionality: multimodal and embeddings still work through remote or
@@ -100,8 +100,38 @@ where it stopped.
100
100
  | `the gateway did not answer … within 180 s` | Restart the computer (the login item starts it) or run the installer again, then open `http://127.0.0.1:8080/console`. |
101
101
  | The browser page asks for a token | The one-time sign-in link lasts 10 minutes. Run the installer again: it opens a fresh link. |
102
102
  | `another AbstractFramework installer is already running` | An installer, or an **Update** from a console or the menu-bar icon, is running for this data directory. Wait until it finishes, then run the line again. |
103
+ | `PyPI hasn't published abstractgateway 0.8.1 to every mirror yet; retrying in 30 s (attempt 3/8)` | Nothing to do: a release published minutes ago has not reached every PyPI mirror yet. The installer waits and runs the same install again (see [Right after a release](#right-after-a-release)). |
104
+ | `PyPI still does not list … after 8 attempts over about 10 minutes` | The package index this computer reads has not caught up after 10 minutes (often a company package mirror set in `UV_INDEX_URL`, `PIP_INDEX_URL` or `uv.toml`). Nothing was left out and the previous install is unchanged. Run the installer again in a few minutes; with a mirror, ask its administrator to refresh the package the message names. |
103
105
  | Anything else | Run the installer again. If it stops at the same step, report it with the log file named at the end of the message (`~/Library/Application Support/AbstractGateway/logs/install-….log`). |
104
106
 
107
+ ### Right after a release
108
+
109
+ For a few minutes after a release, some of PyPI's mirrors can still serve a package list without
110
+ the new versions. uv then answers `there is no version of abstractgateway==0.8.1` even though the
111
+ release is published. The installer (install.sh and install.ps1; the **Update** action of the
112
+ consoles and the menu-bar icon runs install.sh on macOS and Linux, and gives the install.ps1 line to
113
+ paste on Windows) treats that as a delay:
114
+
115
+ - it runs the **same** install again, with every part it was asked for (local voice, llama.cpp,
116
+ PyTorch's CUDA build): a delay never makes it install less;
117
+ - it waits 15 s, 30 s, 60 s, then 120 s between attempts, 8 attempts over about 10 minutes, and
118
+ says so: `PyPI hasn't published abstractgateway 0.8.1 to every mirror yet; retrying in 30 s
119
+ (attempt 3/8)`;
120
+ - if the version is still missing after that, it stops with the cause and what to do. uv stops
121
+ before it changes anything, so the previous install keeps working.
122
+
123
+ Only these cases wait, for a package at the exact version this release pins (the gateway and the
124
+ release's libraries: AbstractCore, AbstractRuntime, AbstractVoice, ...): uv exits with code 1, its
125
+ output contains uv's resolution failure (`No solution found when resolving dependencies`) and it
126
+ says `there is no version of <package>==<version>`; or the download of that version's own file
127
+ answered `HTTP status client error (404` (`Failed to fetch: .../<package>-<version>-py3-none-any.whl`:
128
+ the package list already shows the new version but the file is not served yet; uv exits with code
129
+ 1, or 2 when even the file's metadata answered 404). A server error (5xx) or a refused download
130
+ (403) is not a delay and is handled as before. The voice
131
+ requirement carries its pinned version for this reason. Every other failure is handled as before: a system
132
+ without the voice or llama.cpp wheels still installs without them and the summary says so. An
133
+ install with `--pin latest` or `--from` pins nothing, so nothing is waited for.
134
+
105
135
  ## Upgrade
106
136
 
107
137
  ### Upgrade everything (recommended)
@@ -132,7 +162,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
132
162
  <latest>`, or `AbstractFramework <yours> found: already up to date` (every part is still checked,
133
163
  and repaired when needed). An install made by 0.6.1 or earlier recorded no release, so its first
134
164
  upgrade says `AbstractFramework found (abstractgateway 0.7.1; its release was not recorded):
135
- upgrading to AbstractFramework 0.7.1` (with the gateway version you have);
165
+ upgrading to AbstractFramework 0.7.2` (with the gateway version you have);
136
166
  - installs the gateway version that release pins, and every library the gateway uses
137
167
  (AbstractCore, AbstractRuntime, AbstractAgent, AbstractSkill, AbstractMemory, AbstractSemantics
138
168
  and the voice, vision, music and 3D packages) at the exact version released and tested with it ([Check your versions](#check-your-versions) shows
@@ -160,7 +190,8 @@ The line always runs the installer of the latest AbstractFramework release. It:
160
190
  so a gateway of this data directory that you started yourself on the install's port is taken for
161
191
  the login item and left running (stop it, then re-run the installer, to have the login item's);
162
192
  - asks PyPI again for the packages it pins (`uv tool install --refresh-package ...`), so a release
163
- published minutes earlier installs without clearing uv's cache;
193
+ published minutes earlier installs without clearing uv's cache, and waits for PyPI's mirrors when
194
+ they have not caught up yet ([Right after a release](#right-after-a-release));
164
195
  - never leaves the gateway stopped: when the login item cannot be registered, the gateway starts in
165
196
  the background and the summary says how to turn start at login on;
166
197
  - ends with what changed, old -> new, under **Changes** (`Changes: none` when nothing moved), and
@@ -172,7 +203,7 @@ The line always runs the installer of the latest AbstractFramework release. It:
172
203
 
173
204
  Installs made by AbstractFramework 0.6.1 or earlier recorded neither their release nor your install
174
205
  options. The first re-run says `AbstractFramework found (abstractgateway <version>; its release was
175
- not recorded): upgrading to AbstractFramework 0.7.1`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
206
+ not recorded): upgrading to AbstractFramework 0.7.2`, and reads your options from what is installed: whether the terminal console and `abstractcode` are
176
207
  there, whether the gateway has the tray extra and the AbstractCore commands, whether the compiled
177
208
  extras were built (`--full`), and a custom data directory through the gateway pointer. It prints
178
209
  what it found (`read from disk: …`) and records it for later runs. You can also repeat your
@@ -294,7 +325,7 @@ The terminal console and an `abstractcode` built by the installer are upgraded b
294
325
 
295
326
  ```bash
296
327
  abstractgateway --version # the installed gateway
297
- uv tool list --show-version-specifiers # the gateway uv tool and its pin ([required: ==0.8.1])
328
+ uv tool list --show-version-specifiers # the gateway uv tool and its pin ([required: ==0.9.0])
298
329
  abstractgateway-console --version # the terminal console
299
330
  abstractcode --version # AbstractCode's terminal client
300
331
  abstractgateway apps list # the apps: installed and latest
@@ -370,13 +401,15 @@ The Mac package, the `.command` files and the one line all run the same script,
370
401
  login** switch counts), a first install leaves it off.
371
402
  3. Installs [uv](https://docs.astral.sh/uv/) when it is missing, then Python 3.12 through uv.
372
403
  4. Installs the gateway as an isolated uv tool, pinned to this release:
373
- `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.8.1"`, from prebuilt wheels
404
+ `uv tool install --python 3.12 "abstractgateway[<profile>,tray]==0.9.0"`, from prebuilt wheels
374
405
  only (see [No compiler needed](#no-compiler-needed)), and checks that the command starts
375
406
  (reinstalling it in place when it does not). Every profile also gets local voice,
376
- `--with "abstractvoice[supertonic,stt]"`: Supertonic text-to-speech and Whisper speech-to-text,
377
- both on CPU (skipped on musl Linux and macOS before 13, where no wheels exist; Windows ARM64 gets
378
- Supertonic only). If those packages do not install on a system (for example glibc older than
379
- 2.28), the gateway is installed without them and the summary says so. The same install puts
407
+ `--with "abstractvoice[supertonic,stt]==0.13.2"` (the release's AbstractVoice): Supertonic
408
+ text-to-speech and Whisper speech-to-text, both on CPU (skipped on musl Linux and macOS before
409
+ 13, where no wheels exist; Windows ARM64 gets Supertonic only). If those packages do not install
410
+ on a system (for example glibc older than 2.28), the gateway is installed without them and the
411
+ summary says so. A release that PyPI has not yet published to every mirror never causes that:
412
+ see [Right after a release](#right-after-a-release). The same install puts
380
413
  AbstractCore's commands and those of its voice, vision and music packages on PATH next to the
381
414
  gateway's (`--with-executables-from`; `--no-core-cli` leaves them out): see
382
415
  [Commands you get](#commands-you-get).
@@ -720,7 +753,7 @@ instead of starting a browser.
720
753
  ```bash
721
754
  curl -LsSf https://astral.sh/uv/install.sh | sh # Windows: irm https://astral.sh/uv/install.ps1 | iex
722
755
  uv python install 3.12
723
- uv tool install --python 3.12 "abstractgateway[tray]==0.8.1" # [apple,tray] or [gpu,tray] for local engines
756
+ uv tool install --python 3.12 "abstractgateway[tray]==0.9.0" # [apple,tray] or [gpu,tray] for local engines
724
757
  # (add --with and --overrides as shown by `install.sh --print` to avoid compiling)
725
758
  uv tool update-shell # puts ~/.local/bin on PATH; open a new terminal
726
759
  abstractgateway service install --port 8080 # or: abstractgateway serve
@@ -840,8 +873,8 @@ Python 3.11 to 3.13), but it gets PyPI's CPU-only PyTorch and no llama.cpp: use
840
873
  installer, which adds PyTorch's CUDA build and llama.cpp's prebuilt GPU build
841
874
  ([GPU on Windows](#gpu-on-windows-nvidia)).
842
875
 
843
- `abstractframework` 0.7.1 pins `abstractgateway==0.8.1`, `abstractassistant==0.10.0`,
844
- `abstractcore==2.20.2`, `AbstractRuntime==0.8.1`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
876
+ `abstractframework` 0.7.2 pins `abstractgateway==0.9.0`, `abstractassistant==0.10.0`,
877
+ `abstractcore==2.21.0`, `AbstractRuntime==0.8.1`, `abstractagent==0.3.17`, `abstractskill==0.3.0`,
845
878
  `AbstractMemory==0.3.0`, `abstractsemantics==0.0.5`, `abstractvoice==0.13.2`,
846
879
  `abstractvision==0.3.33`, `abstractmusic==0.1.15` and `abstract3d==0.3.2`. The `apple` and `gpu` extras select
847
880
  `abstractgateway[apple|gpu]` and `abstractassistant[apple|gpu]` at the same versions
@@ -929,17 +962,17 @@ Then run `abstractframework doctor`.
929
962
  The browser apps and the Rust terminal tools are not Python packages, so no profile installs them.
930
963
  Run or install them next to the Python stack:
931
964
 
932
- | Tool | Command | Version released with 0.7.1 |
965
+ | Tool | Command | Version released with 0.7.2 |
933
966
  |---|---|---|
934
- | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.8.1 |
935
- | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.20.2 |
967
+ | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.9.0 |
968
+ | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.21.0 |
936
969
  | 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.5.0 |
937
970
  | 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.12.0 |
938
- | Flow Editor | the console's **Apps** page (opens at `/apps/flow/`), or on its own: `npx @abstractframework/flow --gateway-url <url>` | 0.4.0 |
939
- | Code Web UI | the console's **Apps** page (`/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` | 0.7.0 |
940
- | Observer | the console's **Apps** page (`/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` | 0.3.0 |
941
- | Continuum console | the console's **Apps** page (`/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` | 0.4.0 |
942
- | Entity manager | the console's **Apps** page (`/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` | 0.3.0 |
971
+ | Flow Editor | the console's **Apps** page (opens at `/apps/flow/`), or on its own: `npx @abstractframework/flow --gateway-url <url>` | 0.5.0 |
972
+ | Code Web UI | the console's **Apps** page (`/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` | 0.8.0 |
973
+ | Observer | the console's **Apps** page (`/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` | 0.4.0 |
974
+ | Continuum console | the console's **Apps** page (`/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` | 0.5.0 |
975
+ | Entity manager | the console's **Apps** page (`/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` | 0.4.0 |
943
976
  | AbstractCode terminal client | `cargo install abstractcode`, or a prebuilt binary from the [AbstractCode GitHub release](https://github.com/lpalbou/AbstractCode/releases) | 0.7.1 |
944
977
 
945
978
  The browser apps need a running gateway. The gateway installs, starts and serves them itself, on
@@ -983,7 +1016,7 @@ docker run \
983
1016
  -v "$PWD/runtime:/data" \
984
1017
  -e ABSTRACTGATEWAY_DATA_DIR=/data \
985
1018
  -e ABSTRACTGATEWAY_USER_AUTH=1 \
986
- ghcr.io/lpalbou/abstractgateway:0.8.1
1019
+ ghcr.io/lpalbou/abstractgateway:0.9.0
987
1020
  ```
988
1021
 
989
1022
  This is the Light container: full framework capabilities through remote/endpoint inference, without
@@ -991,7 +1024,7 @@ local MLX/CUDA stacks. On first start it creates `default/admin` and writes the
991
1024
  `runtime/auth/bootstrap-admin-token`. Use `ghcr.io/lpalbou/abstractgateway:gpu-latest` only on an
992
1025
  NVIDIA host when you explicitly want the local GPU profile (pinned tags are `<version>-gpu`, published on a best-effort basis; this image is
993
1026
  experimental). The AbstractCore OpenAI-compatible server is also published as
994
- `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
1027
+ `ghcr.io/lpalbou/abstractcore-server:2.21.0`.
995
1028
 
996
1029
  ## How installs are designed
997
1030