abstractframework 0.4.1__tar.gz → 0.4.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 (191) hide show
  1. {abstractframework-0.4.1 → abstractframework-0.4.2}/CHANGELOG.md +47 -0
  2. {abstractframework-0.4.1/abstractframework.egg-info → abstractframework-0.4.2}/PKG-INFO +8 -8
  3. {abstractframework-0.4.1 → abstractframework-0.4.2}/README.md +3 -3
  4. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework/__init__.py +3 -3
  5. {abstractframework-0.4.1 → abstractframework-0.4.2/abstractframework.egg-info}/PKG-INFO +8 -8
  6. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework.egg-info/requires.txt +4 -4
  7. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/api.md +4 -4
  8. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/install.md +36 -10
  9. {abstractframework-0.4.1 → abstractframework-0.4.2}/llms-full.txt +52 -26
  10. {abstractframework-0.4.1 → abstractframework-0.4.2}/llms.txt +1 -1
  11. {abstractframework-0.4.1 → abstractframework-0.4.2}/pyproject.toml +5 -5
  12. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/install.sh +381 -17
  13. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/tests/test_install_user_path.sh +186 -1
  14. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/uninstall.sh +10 -3
  15. {abstractframework-0.4.1 → abstractframework-0.4.2}/LICENSE +0 -0
  16. {abstractframework-0.4.1 → abstractframework-0.4.2}/MANIFEST.in +0 -0
  17. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework/__main__.py +0 -0
  18. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework/cli.py +0 -0
  19. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework/install_manifest.py +0 -0
  20. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework/py.typed +0 -0
  21. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework.egg-info/SOURCES.txt +0 -0
  22. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework.egg-info/dependency_links.txt +0 -0
  23. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework.egg-info/entry_points.txt +0 -0
  24. {abstractframework-0.4.1 → abstractframework-0.4.2}/abstractframework.egg-info/top_level.txt +0 -0
  25. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/README.md +0 -0
  26. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0001-layered-architecture.md +0 -0
  27. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0002-effect-system-design.md +0 -0
  28. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0003-tool-system-architecture.md +0 -0
  29. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0004-observability-strategy.md +0 -0
  30. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0005-memory-architecture.md +0 -0
  31. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0006-durable-tool-execution.md +0 -0
  32. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  33. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0008-token-terminology.md +0 -0
  34. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  35. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  36. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  37. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0012-portable-workflowartifact.md +0 -0
  38. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  39. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  40. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  41. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  42. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  43. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  44. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  45. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  46. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  47. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  48. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  49. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  50. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  51. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  52. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  53. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  54. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  55. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  56. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  57. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  58. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  59. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  60. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0035-capability-routing-defaults.md +0 -0
  61. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  62. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  63. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  64. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/README.md +0 -0
  65. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/memory-recall-levels.md +0 -0
  66. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  67. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  68. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  69. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  70. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  71. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  72. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  73. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  74. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/agent-sessions.md +0 -0
  75. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/architecture.md +0 -0
  76. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/claude/README.md +0 -0
  77. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/claude/abstractframework-fit.md +0 -0
  78. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/claude/claude-skills-overview.md +0 -0
  79. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/claude/claude-skills-sources.md +0 -0
  80. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/claude/claude-skills-top-20.md +0 -0
  81. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/comparisons/README.md +0 -0
  82. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/configuration.md +0 -0
  83. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/faq.md +0 -0
  84. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/getting-started.md +0 -0
  85. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/glossary.md +0 -0
  86. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/LANDING.md +0 -0
  87. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/README.md +0 -0
  88. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/agent-skills.md +0 -0
  89. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/agent-vs-llm.md +0 -0
  90. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/agora-workflow-agent.md +0 -0
  91. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/apple-local-gateway-flow.md +0 -0
  92. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/capability-plugins.md +0 -0
  93. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/capability-routing-defaults.md +0 -0
  94. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/deployment-iphone.md +0 -0
  95. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/deployment-topologies.md +0 -0
  96. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/deployment-web.md +0 -0
  97. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/email-integration.md +0 -0
  98. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/event-inbox-agent.md +0 -0
  99. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/flow-and-kg-memory.md +0 -0
  100. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/gateway-security.md +0 -0
  101. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/headless-swarm.md +0 -0
  102. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/process-manager-env-vars.md +0 -0
  103. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/prompt-caching.md +0 -0
  104. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/runtime-artifacts.md +0 -0
  105. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/runtime-scope.md +0 -0
  106. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/scheduled-workflows.md +0 -0
  107. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/summoned-entities.md +0 -0
  108. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/telegram-integration.md +0 -0
  109. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/guide/workflow-bundles.md +0 -0
  110. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/README.md +0 -0
  111. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/components.md +0 -0
  112. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/implementation-plan.md +0 -0
  113. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/operations-and-support.md +0 -0
  114. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/release-and-manifest.md +0 -0
  115. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/security-and-os-blocks.md +0 -0
  116. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/strategy.md +0 -0
  117. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/installers/user-journeys.md +0 -0
  118. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/prompts/agora-collaboration.md +0 -0
  119. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/README.md +0 -0
  120. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/email-inbox-agent.md +0 -0
  121. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/gateway-first-local-dev.md +0 -0
  122. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/offline-coding-assistant.md +0 -0
  123. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/phone-thin-client.md +0 -0
  124. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/specialized-agent-flow.md +0 -0
  125. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/telegram-permanent-contact.md +0 -0
  126. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  127. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/README.md +0 -0
  128. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  129. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  130. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  131. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  132. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/claude-agent-skills-overview.md +0 -0
  133. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/claude-agent-skills-sources.md +0 -0
  134. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/skills/claude-agent-skills-top-20.md +0 -0
  135. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/troubleshooting.md +0 -0
  136. {abstractframework-0.4.1 → abstractframework-0.4.2}/docs/workspace-scripts.md +0 -0
  137. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/af-local.sh +0 -0
  138. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/af.sh +0 -0
  139. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/agora_react_flow_smoke.py +0 -0
  140. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/assistant-local.sh +0 -0
  141. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/assistant.sh +0 -0
  142. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/build.sh +0 -0
  143. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/cache_probe_local_backends.py +0 -0
  144. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/cache_steer_repl.py +0 -0
  145. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/check_identity_sync.py +0 -0
  146. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/clone.sh +0 -0
  147. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/code-local.sh +0 -0
  148. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/code.sh +0 -0
  149. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/commit.sh +0 -0
  150. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/console-local.sh +0 -0
  151. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/console.sh +0 -0
  152. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/core_operator_drive.py +0 -0
  153. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/deps.sh +0 -0
  154. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/entity-local.sh +0 -0
  155. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/entity.sh +0 -0
  156. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/event_inbox_flow_smoke.py +0 -0
  157. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/flow-local.sh +0 -0
  158. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/flow.sh +0 -0
  159. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/gateway-flow-local.sh +0 -0
  160. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/gateway-flow.sh +0 -0
  161. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/gateway-local.sh +0 -0
  162. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/gateway.sh +0 -0
  163. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/gen_llms_full.py +0 -0
  164. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/headless_fleet_bridge.py +0 -0
  165. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/headless_fleet_demo.py +0 -0
  166. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/headless_steer_repl.py +0 -0
  167. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/af_inventory.py +0 -0
  168. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/af_stack.sh +0 -0
  169. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/af_supervisor.sh +0 -0
  170. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/apps_common.sh +0 -0
  171. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/build_macos_installer.sh +0 -0
  172. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/gateway_user_tokens.py +0 -0
  173. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/lib/repo_groups.sh +0 -0
  174. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/meet_castor.sh +0 -0
  175. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/observer-local.sh +0 -0
  176. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/observer.sh +0 -0
  177. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/plan_walkthrough.py +0 -0
  178. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/pull.sh +0 -0
  179. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/push.sh +0 -0
  180. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/spawn_demo_agent.sh +0 -0
  181. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/start-local.sh +0 -0
  182. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/start.sh +0 -0
  183. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/status.sh +0 -0
  184. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/steer_repl.py +0 -0
  185. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/tests/test_af_supervisor.sh +0 -0
  186. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/tests/test_inventory.sh +0 -0
  187. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/tests/test_repo_scripts.sh +0 -0
  188. {abstractframework-0.4.1 → abstractframework-0.4.2}/scripts/visit_resume_cache_probe.py +0 -0
  189. {abstractframework-0.4.1 → abstractframework-0.4.2}/setup.cfg +0 -0
  190. {abstractframework-0.4.1 → abstractframework-0.4.2}/tests/test_install_profiles.py +0 -0
  191. {abstractframework-0.4.1 → abstractframework-0.4.2}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,53 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.4.2] - 2026-09-27
8
+
9
+ A patch release for the uninstaller and two package updates.
10
+
11
+ ### Fixed
12
+
13
+ - **Uninstall stops the whole gateway before deleting.** Removing the login item does not wait for
14
+ the gateway to exit, and some of its children (an entity's own-time loop, model downloads, the
15
+ apps it started, the tray) kept writing into the data dir, so the uninstall failed with
16
+ "Directory not empty". The uninstaller now waits up to 20 s for the whole gateway process tree to
17
+ exit, then stops what is left and says which processes it stopped.
18
+ - **Every deletion is verified.** Each location is deleted, retried while something re-creates it,
19
+ then checked; a folder that cannot be deleted (or comes back) stops the uninstaller with a
20
+ listing of what remains and the programs holding it. The failure text advises running the
21
+ uninstaller again, never the installer.
22
+ - **`--purge` removes all your local data**: besides the gateway data dir, its login-item logs and
23
+ its download cache, it removes the Assistant's sessions, snapshots and preferences
24
+ (`~/.abstractassistant`, the macOS preferences file and the cached preferences) and
25
+ AbstractCode's login and preferences (`~/.abstractcode`). Model weights and shared caches are
26
+ kept and named. The purge question names what it deletes; `--print` lists each command; a
27
+ second run prints "nothing to do". `install.sh` accepts `--yes`.
28
+ - **Uninstall safety**: `--purge` refuses (exit 2, nothing changed) a data dir that is the root,
29
+ your home folder or any folder above it, and a hand-given `--data-dir` that is not a gateway data
30
+ dir (for example `~/Library` or `~/Documents`). A process is stopped only when it runs from this
31
+ install's tool environment or is one of this data dir's apps; a stale pid file is left alone.
32
+ `--data-dir` is made absolute once, and paths are resolved before the mount guard
33
+ (`/tmp` vs `/private/tmp`, a linked home).
34
+ - The one-line uninstaller and the installer package's "Uninstall AbstractFramework.command" both
35
+ carry these fixes. Known Linux limits: BusyBox `ps` (Alpine) lacks the columns the process scan
36
+ reads, so only the systemd stop applies there; a relative `XDG_CACHE_HOME` is used as given.
37
+
38
+ ### Changed (pins)
39
+
40
+ - **abstractagent 0.3.16** (was 0.3.15): the announced-tool-use text heuristic added in 0.3.15 is
41
+ removed; the loops behave as in 0.3.14 plus the CodeAct/MemAct crash fix from 0.3.15.
42
+ - **abstractassistant 0.7.0** (was 0.6.1): the session list and transcripts come from the gateway;
43
+ local files are a rebuildable cache. The first launch moves sessions the gateway does not know to
44
+ `sessions-legacy/` and deletes nothing. The list shows your own sessions by default, with an
45
+ "All gateway sessions" toggle.
46
+ - The pins apply to the base install and to the `apple` / `gpu` extras
47
+ (`abstractassistant[apple|gpu]==0.7.0`). Unchanged: abstractgateway 0.5.1, abstractcore 2.16.1,
48
+ AbstractRuntime 0.5.1, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5,
49
+ abstractvoice 0.11.4, abstractvision 0.3.29, abstractmusic 0.1.15, the browser apps, `abstractcode`
50
+ 0.6.0 and `abstractgateway-console` 0.9.0.
51
+ - Container images are unchanged: `ghcr.io/lpalbou/abstractgateway:0.5.1` and
52
+ `ghcr.io/lpalbou/abstractcore-server:2.16.1`.
53
+
7
54
  ## [0.4.1] - 2026-09-26
8
55
 
9
56
  A patch release for local MLX models and long-running flows.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.4.1
3
+ Version: 0.4.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
@@ -24,10 +24,10 @@ Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
26
  Requires-Dist: abstractgateway==0.5.1
27
- Requires-Dist: abstractassistant==0.6.1
27
+ Requires-Dist: abstractassistant==0.7.0
28
28
  Requires-Dist: abstractcore==2.16.1
29
29
  Requires-Dist: AbstractRuntime==0.5.1
30
- Requires-Dist: abstractagent==0.3.15
30
+ Requires-Dist: abstractagent==0.3.16
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
33
33
  Requires-Dist: abstractsemantics==0.0.5
@@ -36,10 +36,10 @@ Requires-Dist: abstractvision==0.3.29
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Provides-Extra: apple
38
38
  Requires-Dist: abstractgateway[apple]==0.5.1; extra == "apple"
39
- Requires-Dist: abstractassistant[apple]==0.6.1; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractassistant[apple]==0.7.0; platform_system == "Darwin" and extra == "apple"
40
40
  Provides-Extra: gpu
41
41
  Requires-Dist: abstractgateway[gpu]==0.5.1; extra == "gpu"
42
- Requires-Dist: abstractassistant[gpu]==0.6.1; extra == "gpu"
42
+ Requires-Dist: abstractassistant[gpu]==0.7.0; extra == "gpu"
43
43
  Dynamic: license-file
44
44
 
45
45
  # AbstractFramework
@@ -336,7 +336,7 @@ pip install "abstractframework[gpu]"
336
336
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
337
337
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
338
338
 
339
- ### Release matrix (abstractframework 0.4.1)
339
+ ### Release matrix (abstractframework 0.4.2)
340
340
 
341
341
  `abstractframework` pins every Python package with `==`, so one version of the
342
342
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -346,10 +346,10 @@ and tested together.
346
346
  | Registry | Package | Version |
347
347
  |---|---|---|
348
348
  | PyPI | `abstractgateway` | 0.5.1 |
349
- | PyPI | `abstractassistant` | 0.6.1 |
349
+ | PyPI | `abstractassistant` | 0.7.0 |
350
350
  | PyPI | `abstractcore` | 2.16.1 |
351
351
  | PyPI | `AbstractRuntime` | 0.5.1 |
352
- | PyPI | `abstractagent` | 0.3.15 |
352
+ | PyPI | `abstractagent` | 0.3.16 |
353
353
  | PyPI | `abstractskill` | 0.3.0 |
354
354
  | PyPI | `AbstractMemory` | 0.3.0 |
355
355
  | PyPI | `abstractsemantics` | 0.0.5 |
@@ -292,7 +292,7 @@ pip install "abstractframework[gpu]"
292
292
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
293
293
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
294
294
 
295
- ### Release matrix (abstractframework 0.4.1)
295
+ ### Release matrix (abstractframework 0.4.2)
296
296
 
297
297
  `abstractframework` pins every Python package with `==`, so one version of the
298
298
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -302,10 +302,10 @@ and tested together.
302
302
  | Registry | Package | Version |
303
303
  |---|---|---|
304
304
  | PyPI | `abstractgateway` | 0.5.1 |
305
- | PyPI | `abstractassistant` | 0.6.1 |
305
+ | PyPI | `abstractassistant` | 0.7.0 |
306
306
  | PyPI | `abstractcore` | 2.16.1 |
307
307
  | PyPI | `AbstractRuntime` | 0.5.1 |
308
- | PyPI | `abstractagent` | 0.3.15 |
308
+ | PyPI | `abstractagent` | 0.3.16 |
309
309
  | PyPI | `abstractskill` | 0.3.0 |
310
310
  | PyPI | `AbstractMemory` | 0.3.0 |
311
311
  | PyPI | `abstractsemantics` | 0.0.5 |
@@ -10,14 +10,14 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.4.1"
13
+ __version__ = "0.4.2"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
18
  "abstractcore": "2.16.1",
19
19
  "abstractruntime": "0.5.1",
20
- "abstractagent": "0.3.15",
20
+ "abstractagent": "0.3.16",
21
21
  "abstractgateway": "0.5.1",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
@@ -25,7 +25,7 @@ RELEASE_VERSIONS: dict[str, str] = {
25
25
  "abstractvoice": "0.11.4",
26
26
  "abstractvision": "0.3.29",
27
27
  "abstractmusic": "0.1.15",
28
- "abstractassistant": "0.6.1",
28
+ "abstractassistant": "0.7.0",
29
29
  }
30
30
 
31
31
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.4.1
3
+ Version: 0.4.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
@@ -24,10 +24,10 @@ Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
26
  Requires-Dist: abstractgateway==0.5.1
27
- Requires-Dist: abstractassistant==0.6.1
27
+ Requires-Dist: abstractassistant==0.7.0
28
28
  Requires-Dist: abstractcore==2.16.1
29
29
  Requires-Dist: AbstractRuntime==0.5.1
30
- Requires-Dist: abstractagent==0.3.15
30
+ Requires-Dist: abstractagent==0.3.16
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
33
33
  Requires-Dist: abstractsemantics==0.0.5
@@ -36,10 +36,10 @@ Requires-Dist: abstractvision==0.3.29
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Provides-Extra: apple
38
38
  Requires-Dist: abstractgateway[apple]==0.5.1; extra == "apple"
39
- Requires-Dist: abstractassistant[apple]==0.6.1; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractassistant[apple]==0.7.0; platform_system == "Darwin" and extra == "apple"
40
40
  Provides-Extra: gpu
41
41
  Requires-Dist: abstractgateway[gpu]==0.5.1; extra == "gpu"
42
- Requires-Dist: abstractassistant[gpu]==0.6.1; extra == "gpu"
42
+ Requires-Dist: abstractassistant[gpu]==0.7.0; extra == "gpu"
43
43
  Dynamic: license-file
44
44
 
45
45
  # AbstractFramework
@@ -336,7 +336,7 @@ pip install "abstractframework[gpu]"
336
336
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
337
337
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
338
338
 
339
- ### Release matrix (abstractframework 0.4.1)
339
+ ### Release matrix (abstractframework 0.4.2)
340
340
 
341
341
  `abstractframework` pins every Python package with `==`, so one version of the
342
342
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -346,10 +346,10 @@ and tested together.
346
346
  | Registry | Package | Version |
347
347
  |---|---|---|
348
348
  | PyPI | `abstractgateway` | 0.5.1 |
349
- | PyPI | `abstractassistant` | 0.6.1 |
349
+ | PyPI | `abstractassistant` | 0.7.0 |
350
350
  | PyPI | `abstractcore` | 2.16.1 |
351
351
  | PyPI | `AbstractRuntime` | 0.5.1 |
352
- | PyPI | `abstractagent` | 0.3.15 |
352
+ | PyPI | `abstractagent` | 0.3.16 |
353
353
  | PyPI | `abstractskill` | 0.3.0 |
354
354
  | PyPI | `AbstractMemory` | 0.3.0 |
355
355
  | PyPI | `abstractsemantics` | 0.0.5 |
@@ -1,8 +1,8 @@
1
1
  abstractgateway==0.5.1
2
- abstractassistant==0.6.1
2
+ abstractassistant==0.7.0
3
3
  abstractcore==2.16.1
4
4
  AbstractRuntime==0.5.1
5
- abstractagent==0.3.15
5
+ abstractagent==0.3.16
6
6
  abstractskill==0.3.0
7
7
  AbstractMemory==0.3.0
8
8
  abstractsemantics==0.0.5
@@ -14,8 +14,8 @@ abstractmusic==0.1.15
14
14
  abstractgateway[apple]==0.5.1
15
15
 
16
16
  [apple:platform_system == "Darwin"]
17
- abstractassistant[apple]==0.6.1
17
+ abstractassistant[apple]==0.7.0
18
18
 
19
19
  [gpu]
20
20
  abstractgateway[gpu]==0.5.1
21
- abstractassistant[gpu]==0.6.1
21
+ abstractassistant[gpu]==0.7.0
@@ -55,14 +55,14 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `__version__`
57
57
 
58
- The meta-package version (`0.4.1` for this release).
58
+ The meta-package version (`0.4.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.4.1:
63
- `abstractcore` 2.16.1, `abstractruntime` 0.5.1, `abstractagent` 0.3.15, `abstractgateway` 0.5.1,
62
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.4.2:
63
+ `abstractcore` 2.16.1, `abstractruntime` 0.5.1, `abstractagent` 0.3.16, `abstractgateway` 0.5.1,
64
64
  `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.11.4, `abstractvision` 0.3.29,
65
- `abstractmusic` 0.1.15, `abstractassistant` 0.6.1.
65
+ `abstractmusic` 0.1.15, `abstractassistant` 0.7.0.
66
66
 
67
67
  ### `PACKAGE_DISTRIBUTIONS`
68
68
 
@@ -104,15 +104,41 @@ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scri
104
104
 
105
105
  It asks before removing anything, then asks two more questions, both defaulting to no:
106
106
 
107
- - **Also delete your AbstractFramework data** (settings, users, chats, run history)? This cannot be
108
- undone.
107
+ - **Also delete your AbstractFramework data**? This cannot be undone. It deletes:
108
+
109
+ | What | macOS | Linux |
110
+ |---|---|---|
111
+ | Gateway data: settings, users, chats, run history, artifacts, memory, the tray's preferences | `~/Library/Application Support/AbstractGateway` | `~/.local/share/abstractgateway` |
112
+ | The login item's logs | `~/Library/Logs/AbstractGateway` | (in the data dir) |
113
+ | The gateway's download cache (engine installers) | `~/Library/Caches/AbstractGateway` | `~/.cache/abstractgateway` |
114
+ | The Assistant's sessions, snapshots and preferences | `~/.abstractassistant`, `~/Library/Logs/Assistant/abstractassistant-*` | `~/.abstractassistant` |
115
+ | AbstractCode's login and preferences | `~/.abstractcode`, `~/.abstractcode-tui` | same |
116
+
117
+ It keeps model weights and shared caches: `~/.cache/huggingface`, `~/.abstractcore` (its
118
+ config and its downloaded models), `~/.abstractframework`, `~/.cache/abstractvoice`, and the
119
+ models of LM Studio and Ollama. Delete those by hand if you want them gone.
109
120
  - **Also remove uv, its Python and its download cache** (about 2.5 GB)? Asked only when the
110
121
  installer is what added uv; answer no if you use uv for anything else.
111
122
 
112
- It always removes the login item, stops AbstractFramework and removes the gateway. It keeps Ollama
113
- and LM Studio (they have their own uninstallers) and the one PATH line uv added to your shell
114
- profile. Without questions: `sh uninstall.sh --yes` (keeps data), add `--purge` to delete the data
115
- and `--remove-uv` to remove uv. Windows: `install.ps1 -Uninstall [-Purge]`.
123
+ It always removes the login item, stops AbstractFramework and removes the gateway (and the
124
+ Assistant, which lives in the gateway's environment). Stopping means the whole gateway process
125
+ tree: after the login item is removed it waits up to 20 seconds for every gateway process to exit
126
+ (the server, the tray, an entity's own-time loop, model downloads, the apps it started), then
127
+ stops the rest, and says which processes it stopped. It keeps Ollama and LM Studio (they have
128
+ their own uninstallers) and the one PATH line uv added to your shell profile. Without questions:
129
+ `sh uninstall.sh --yes` (keeps data), add `--purge` to delete the data and `--remove-uv` to remove
130
+ uv; `--print` shows every command and changes nothing. Windows: `install.ps1 -Uninstall [-Purge]`.
131
+
132
+ **If a folder cannot be deleted**, the uninstaller stops with an error that names the folder,
133
+ lists what is left in it and the programs that hold files there. Quit those programs (or log
134
+ out and back in); on macOS, a file shown with the `uchg` flag is unlocked with
135
+ `chflags -R nouchg <folder>`. Then run the uninstaller again: it skips what is already gone.
136
+ Each deleted location is checked once more a second later; a program that starts writing there
137
+ again after that is not detected (an uninstaller cannot outwait a writer it does not know).
138
+ A `--data-dir` given by hand is purged only when it holds a gateway file (`bootstrap.env`,
139
+ `gateway.sqlite3`, `auth/users.json`, ...) or the note a previous, interrupted purge left in it
140
+ (`.abstractgateway-purge-incomplete`); the root, your home folder and any folder that
141
+ contains it are always refused (exit 2, nothing changed).
116
142
 
117
143
  ## Advanced: what the installer does
118
144
 
@@ -214,7 +240,7 @@ models (above), for Ollama, LM Studio or other endpoint engines, or for cloud pr
214
240
  | `--print` | `-Print` (or `-WhatIf`) | Show the plan and every command; change nothing |
215
241
  | `--print-versions` | `-PrintVersions` | Print the pinned gateway, npm app and crate versions, then exit |
216
242
  | `-v`, `--verbose` | — | Show the full output of every command |
217
- | `--uninstall [--purge] [--remove-uv]` | `-Uninstall [-Purge]` | Remove the service and uv tools (purge also deletes the data; `--remove-uv` also removes uv, its Python and cache when the installer added uv) |
243
+ | `--uninstall [--purge] [--remove-uv]` | `-Uninstall [-Purge]` | Stop the gateway process tree, remove the service and uv tools (purge also deletes your data: see [Remove AbstractFramework](#remove-abstractframework); `--remove-uv` also removes uv, its Python and cache when the installer added uv) |
218
244
 
219
245
  Pass options through the one-liner like this:
220
246
 
@@ -338,8 +364,8 @@ A plain `pip install` of the `apple` or `gpu` profile builds the
338
364
  `aec-audio-processing`) from source, so it needs a C/C++ compiler. The one-line install above
339
365
  does not.
340
366
 
341
- `abstractframework` 0.4.1 pins `abstractgateway==0.5.1`, `abstractassistant==0.6.1`,
342
- `abstractcore==2.16.1`, `AbstractRuntime==0.5.1`, `abstractagent==0.3.15`, `abstractskill==0.3.0`,
367
+ `abstractframework` 0.4.2 pins `abstractgateway==0.5.1`, `abstractassistant==0.7.0`,
368
+ `abstractcore==2.16.1`, `AbstractRuntime==0.5.1`, `abstractagent==0.3.16`, `abstractskill==0.3.0`,
343
369
  `AbstractMemory==0.3.0`, `abstractsemantics==0.0.5`, `abstractvoice==0.11.4`,
344
370
  `abstractvision==0.3.29` and `abstractmusic==0.1.15`. The `apple` and `gpu` extras select
345
371
  `abstractgateway[apple|gpu]` and `abstractassistant[apple|gpu]` at the same versions
@@ -423,7 +449,7 @@ Then run `abstractframework doctor`.
423
449
  The browser apps and the Rust terminal tools are not Python packages, so no profile installs them.
424
450
  Run or install them next to the Python stack:
425
451
 
426
- | Tool | Command | Version released with 0.4.1 |
452
+ | Tool | Command | Version released with 0.4.2 |
427
453
  |---|---|---|
428
454
  | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.5.1 |
429
455
  | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.16.1 |
@@ -296,7 +296,7 @@ pip install "abstractframework[gpu]"
296
296
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
297
297
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
298
298
 
299
- ### Release matrix (abstractframework 0.4.1)
299
+ ### Release matrix (abstractframework 0.4.2)
300
300
 
301
301
  `abstractframework` pins every Python package with `==`, so one version of the
302
302
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -306,10 +306,10 @@ and tested together.
306
306
  | Registry | Package | Version |
307
307
  |---|---|---|
308
308
  | PyPI | `abstractgateway` | 0.5.1 |
309
- | PyPI | `abstractassistant` | 0.6.1 |
309
+ | PyPI | `abstractassistant` | 0.7.0 |
310
310
  | PyPI | `abstractcore` | 2.16.1 |
311
311
  | PyPI | `AbstractRuntime` | 0.5.1 |
312
- | PyPI | `abstractagent` | 0.3.15 |
312
+ | PyPI | `abstractagent` | 0.3.16 |
313
313
  | PyPI | `abstractskill` | 0.3.0 |
314
314
  | PyPI | `AbstractMemory` | 0.3.0 |
315
315
  | PyPI | `abstractsemantics` | 0.0.5 |
@@ -545,7 +545,7 @@ Notes for LLMs working in this repo:
545
545
  - [abstractframework/__init__.py](abstractframework/__init__.py): `RELEASE_VERSIONS`, `NPM_RELEASE_VERSIONS`, `get_release_profile()`, `print_status()`.
546
546
  - [docs/installers/install-manifest.json](docs/installers/install-manifest.json): Generated install manifest, schema v2 (pins, profiles, npm apps, `bootstrap` gateway pin/scripts/flags, console-first `post_install`).
547
547
  - [scripts/install.sh](scripts/install.sh) / [scripts/install.ps1](scripts/install.ps1): The bootstrap installers.
548
- - abstractframework 0.4.1 pins (PyPI, `==`): abstractgateway 0.5.1, abstractassistant 0.6.1, abstractcore 2.16.1, AbstractRuntime 0.5.1, abstractagent 0.3.15, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29, abstractmusic 0.1.15.
548
+ - abstractframework 0.4.2 pins (PyPI, `==`): abstractgateway 0.5.1, abstractassistant 0.7.0, abstractcore 2.16.1, AbstractRuntime 0.5.1, abstractagent 0.3.16, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29, abstractmusic 0.1.15.
549
549
  - Released with it: npm `@abstractframework/flow` 0.3.21, `code` 0.5.0, `observer` 0.1.13, `continuum` 0.3.2, `entity` 0.2.2 (run with `npx`); crates (`CRATE_RELEASE_VERSIONS`) `abstractgateway-console` 0.9.0, `abstractcore-console` 0.2.0, `abstractcode` 0.6.0, `abstracttui` 0.6.0; images `ghcr.io/lpalbou/abstractgateway:0.5.1`, `ghcr.io/lpalbou/abstractcore-server:2.16.1`.
550
550
  - Profiles: light (remote-only), apple (`abstractframework[apple]`, macOS 14+ Apple Silicon), gpu (`abstractframework[gpu]`); Python 3.10-3.13 (F5-TTS voice cloning in apple/gpu needs 3.11+).
551
551
 
@@ -574,7 +574,7 @@ build-backend = "setuptools.build_meta"
574
574
 
575
575
  [project]
576
576
  name = "abstractframework"
577
- version = "0.4.1"
577
+ version = "0.4.2"
578
578
  description = "Unified installer and documentation hub for the AbstractFramework ecosystem"
579
579
  readme = "README.md"
580
580
  license = {text = "MIT"}
@@ -621,12 +621,12 @@ dependencies = [
621
621
  "abstractgateway==0.5.1",
622
622
 
623
623
  # Workflow authoring UI is distributed through npm as @abstractframework/flow.
624
- "abstractassistant==0.6.1",
624
+ "abstractassistant==0.7.0",
625
625
 
626
626
  # Pin the core Python stack for release determinism (also pulled transitively).
627
627
  "abstractcore==2.16.1",
628
628
  "AbstractRuntime==0.5.1",
629
- "abstractagent==0.3.15",
629
+ "abstractagent==0.3.16",
630
630
  "abstractskill==0.3.0",
631
631
  "AbstractMemory==0.3.0",
632
632
  "abstractsemantics==0.0.5",
@@ -652,12 +652,12 @@ dependencies = [
652
652
  # then adds user-facing apps.
653
653
  apple = [
654
654
  "abstractgateway[apple]==0.5.1",
655
- "abstractassistant[apple]==0.6.1; platform_system == \"Darwin\"",
655
+ "abstractassistant[apple]==0.7.0; platform_system == \"Darwin\"",
656
656
  ]
657
657
 
658
658
  gpu = [
659
659
  "abstractgateway[gpu]==0.5.1",
660
- "abstractassistant[gpu]==0.6.1",
660
+ "abstractassistant[gpu]==0.7.0",
661
661
  ]
662
662
 
663
663
  [project.urls]
@@ -707,14 +707,14 @@ Most implementation functionality still lives in component projects.
707
707
 
708
708
  from __future__ import annotations
709
709
 
710
- __version__ = "0.4.1"
710
+ __version__ = "0.4.2"
711
711
  __author__ = "Laurent-Philippe Albou"
712
712
  __license__ = "MIT"
713
713
 
714
714
  RELEASE_VERSIONS: dict[str, str] = {
715
715
  "abstractcore": "2.16.1",
716
716
  "abstractruntime": "0.5.1",
717
- "abstractagent": "0.3.15",
717
+ "abstractagent": "0.3.16",
718
718
  "abstractgateway": "0.5.1",
719
719
  "abstractskill": "0.3.0",
720
720
  "abstractmemory": "0.3.0",
@@ -722,7 +722,7 @@ RELEASE_VERSIONS: dict[str, str] = {
722
722
  "abstractvoice": "0.11.4",
723
723
  "abstractvision": "0.3.29",
724
724
  "abstractmusic": "0.1.15",
725
- "abstractassistant": "0.6.1",
725
+ "abstractassistant": "0.7.0",
726
726
  }
727
727
 
728
728
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -2741,15 +2741,41 @@ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scri
2741
2741
 
2742
2742
  It asks before removing anything, then asks two more questions, both defaulting to no:
2743
2743
 
2744
- - **Also delete your AbstractFramework data** (settings, users, chats, run history)? This cannot be
2745
- undone.
2744
+ - **Also delete your AbstractFramework data**? This cannot be undone. It deletes:
2745
+
2746
+ | What | macOS | Linux |
2747
+ |---|---|---|
2748
+ | Gateway data: settings, users, chats, run history, artifacts, memory, the tray's preferences | `~/Library/Application Support/AbstractGateway` | `~/.local/share/abstractgateway` |
2749
+ | The login item's logs | `~/Library/Logs/AbstractGateway` | (in the data dir) |
2750
+ | The gateway's download cache (engine installers) | `~/Library/Caches/AbstractGateway` | `~/.cache/abstractgateway` |
2751
+ | The Assistant's sessions, snapshots and preferences | `~/.abstractassistant`, `~/Library/Logs/Assistant/abstractassistant-*` | `~/.abstractassistant` |
2752
+ | AbstractCode's login and preferences | `~/.abstractcode`, `~/.abstractcode-tui` | same |
2753
+
2754
+ It keeps model weights and shared caches: `~/.cache/huggingface`, `~/.abstractcore` (its
2755
+ config and its downloaded models), `~/.abstractframework`, `~/.cache/abstractvoice`, and the
2756
+ models of LM Studio and Ollama. Delete those by hand if you want them gone.
2746
2757
  - **Also remove uv, its Python and its download cache** (about 2.5 GB)? Asked only when the
2747
2758
  installer is what added uv; answer no if you use uv for anything else.
2748
2759
 
2749
- It always removes the login item, stops AbstractFramework and removes the gateway. It keeps Ollama
2750
- and LM Studio (they have their own uninstallers) and the one PATH line uv added to your shell
2751
- profile. Without questions: `sh uninstall.sh --yes` (keeps data), add `--purge` to delete the data
2752
- and `--remove-uv` to remove uv. Windows: `install.ps1 -Uninstall [-Purge]`.
2760
+ It always removes the login item, stops AbstractFramework and removes the gateway (and the
2761
+ Assistant, which lives in the gateway's environment). Stopping means the whole gateway process
2762
+ tree: after the login item is removed it waits up to 20 seconds for every gateway process to exit
2763
+ (the server, the tray, an entity's own-time loop, model downloads, the apps it started), then
2764
+ stops the rest, and says which processes it stopped. It keeps Ollama and LM Studio (they have
2765
+ their own uninstallers) and the one PATH line uv added to your shell profile. Without questions:
2766
+ `sh uninstall.sh --yes` (keeps data), add `--purge` to delete the data and `--remove-uv` to remove
2767
+ uv; `--print` shows every command and changes nothing. Windows: `install.ps1 -Uninstall [-Purge]`.
2768
+
2769
+ **If a folder cannot be deleted**, the uninstaller stops with an error that names the folder,
2770
+ lists what is left in it and the programs that hold files there. Quit those programs (or log
2771
+ out and back in); on macOS, a file shown with the `uchg` flag is unlocked with
2772
+ `chflags -R nouchg <folder>`. Then run the uninstaller again: it skips what is already gone.
2773
+ Each deleted location is checked once more a second later; a program that starts writing there
2774
+ again after that is not detected (an uninstaller cannot outwait a writer it does not know).
2775
+ A `--data-dir` given by hand is purged only when it holds a gateway file (`bootstrap.env`,
2776
+ `gateway.sqlite3`, `auth/users.json`, ...) or the note a previous, interrupted purge left in it
2777
+ (`.abstractgateway-purge-incomplete`); the root, your home folder and any folder that
2778
+ contains it are always refused (exit 2, nothing changed).
2753
2779
 
2754
2780
  ## Advanced: what the installer does
2755
2781
 
@@ -2851,7 +2877,7 @@ models (above), for Ollama, LM Studio or other endpoint engines, or for cloud pr
2851
2877
  | `--print` | `-Print` (or `-WhatIf`) | Show the plan and every command; change nothing |
2852
2878
  | `--print-versions` | `-PrintVersions` | Print the pinned gateway, npm app and crate versions, then exit |
2853
2879
  | `-v`, `--verbose` | — | Show the full output of every command |
2854
- | `--uninstall [--purge] [--remove-uv]` | `-Uninstall [-Purge]` | Remove the service and uv tools (purge also deletes the data; `--remove-uv` also removes uv, its Python and cache when the installer added uv) |
2880
+ | `--uninstall [--purge] [--remove-uv]` | `-Uninstall [-Purge]` | Stop the gateway process tree, remove the service and uv tools (purge also deletes your data: see [Remove AbstractFramework](#remove-abstractframework); `--remove-uv` also removes uv, its Python and cache when the installer added uv) |
2855
2881
 
2856
2882
  Pass options through the one-liner like this:
2857
2883
 
@@ -2975,8 +3001,8 @@ A plain `pip install` of the `apple` or `gpu` profile builds the
2975
3001
  `aec-audio-processing`) from source, so it needs a C/C++ compiler. The one-line install above
2976
3002
  does not.
2977
3003
 
2978
- `abstractframework` 0.4.1 pins `abstractgateway==0.5.1`, `abstractassistant==0.6.1`,
2979
- `abstractcore==2.16.1`, `AbstractRuntime==0.5.1`, `abstractagent==0.3.15`, `abstractskill==0.3.0`,
3004
+ `abstractframework` 0.4.2 pins `abstractgateway==0.5.1`, `abstractassistant==0.7.0`,
3005
+ `abstractcore==2.16.1`, `AbstractRuntime==0.5.1`, `abstractagent==0.3.16`, `abstractskill==0.3.0`,
2980
3006
  `AbstractMemory==0.3.0`, `abstractsemantics==0.0.5`, `abstractvoice==0.11.4`,
2981
3007
  `abstractvision==0.3.29` and `abstractmusic==0.1.15`. The `apple` and `gpu` extras select
2982
3008
  `abstractgateway[apple|gpu]` and `abstractassistant[apple|gpu]` at the same versions
@@ -3060,7 +3086,7 @@ Then run `abstractframework doctor`.
3060
3086
  The browser apps and the Rust terminal tools are not Python packages, so no profile installs them.
3061
3087
  Run or install them next to the Python stack:
3062
3088
 
3063
- | Tool | Command | Version released with 0.4.1 |
3089
+ | Tool | Command | Version released with 0.4.2 |
3064
3090
  |---|---|---|
3065
3091
  | Gateway web console | built into `abstractgateway`: open the link `abstractgateway serve` prints (`http://127.0.0.1:8080/console#claim=…`) | 0.5.1 |
3066
3092
  | Core web console | built into `abstractcore`: open the link `abstractcore serve` prints (`http://127.0.0.1:8000/console#claim=…`) | 2.16.1 |
@@ -4758,14 +4784,14 @@ The response type returned by `llm.generate(...)`.
4758
4784
 
4759
4785
  ### `__version__`
4760
4786
 
4761
- The meta-package version (`0.4.1` for this release).
4787
+ The meta-package version (`0.4.2` for this release).
4762
4788
 
4763
4789
  ### `RELEASE_VERSIONS`
4764
4790
 
4765
- Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.4.1:
4766
- `abstractcore` 2.16.1, `abstractruntime` 0.5.1, `abstractagent` 0.3.15, `abstractgateway` 0.5.1,
4791
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.4.2:
4792
+ `abstractcore` 2.16.1, `abstractruntime` 0.5.1, `abstractagent` 0.3.16, `abstractgateway` 0.5.1,
4767
4793
  `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.11.4, `abstractvision` 0.3.29,
4768
- `abstractmusic` 0.1.15, `abstractassistant` 0.6.1.
4794
+ `abstractmusic` 0.1.15, `abstractassistant` 0.7.0.
4769
4795
 
4770
4796
  ### `PACKAGE_DISTRIBUTIONS`
4771
4797
 
@@ -153,7 +153,7 @@ Notes for LLMs working in this repo:
153
153
  - [abstractframework/__init__.py](abstractframework/__init__.py): `RELEASE_VERSIONS`, `NPM_RELEASE_VERSIONS`, `get_release_profile()`, `print_status()`.
154
154
  - [docs/installers/install-manifest.json](docs/installers/install-manifest.json): Generated install manifest, schema v2 (pins, profiles, npm apps, `bootstrap` gateway pin/scripts/flags, console-first `post_install`).
155
155
  - [scripts/install.sh](scripts/install.sh) / [scripts/install.ps1](scripts/install.ps1): The bootstrap installers.
156
- - abstractframework 0.4.1 pins (PyPI, `==`): abstractgateway 0.5.1, abstractassistant 0.6.1, abstractcore 2.16.1, AbstractRuntime 0.5.1, abstractagent 0.3.15, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29, abstractmusic 0.1.15.
156
+ - abstractframework 0.4.2 pins (PyPI, `==`): abstractgateway 0.5.1, abstractassistant 0.7.0, abstractcore 2.16.1, AbstractRuntime 0.5.1, abstractagent 0.3.16, abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29, abstractmusic 0.1.15.
157
157
  - Released with it: npm `@abstractframework/flow` 0.3.21, `code` 0.5.0, `observer` 0.1.13, `continuum` 0.3.2, `entity` 0.2.2 (run with `npx`); crates (`CRATE_RELEASE_VERSIONS`) `abstractgateway-console` 0.9.0, `abstractcore-console` 0.2.0, `abstractcode` 0.6.0, `abstracttui` 0.6.0; images `ghcr.io/lpalbou/abstractgateway:0.5.1`, `ghcr.io/lpalbou/abstractcore-server:2.16.1`.
158
158
  - Profiles: light (remote-only), apple (`abstractframework[apple]`, macOS 14+ Apple Silicon), gpu (`abstractframework[gpu]`); Python 3.10-3.13 (F5-TTS voice cloning in apple/gpu needs 3.11+).
159
159
 
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "abstractframework"
7
- version = "0.4.1"
7
+ version = "0.4.2"
8
8
  description = "Unified installer and documentation hub for the AbstractFramework ecosystem"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -51,12 +51,12 @@ dependencies = [
51
51
  "abstractgateway==0.5.1",
52
52
 
53
53
  # Workflow authoring UI is distributed through npm as @abstractframework/flow.
54
- "abstractassistant==0.6.1",
54
+ "abstractassistant==0.7.0",
55
55
 
56
56
  # Pin the core Python stack for release determinism (also pulled transitively).
57
57
  "abstractcore==2.16.1",
58
58
  "AbstractRuntime==0.5.1",
59
- "abstractagent==0.3.15",
59
+ "abstractagent==0.3.16",
60
60
  "abstractskill==0.3.0",
61
61
  "AbstractMemory==0.3.0",
62
62
  "abstractsemantics==0.0.5",
@@ -82,12 +82,12 @@ dependencies = [
82
82
  # then adds user-facing apps.
83
83
  apple = [
84
84
  "abstractgateway[apple]==0.5.1",
85
- "abstractassistant[apple]==0.6.1; platform_system == \"Darwin\"",
85
+ "abstractassistant[apple]==0.7.0; platform_system == \"Darwin\"",
86
86
  ]
87
87
 
88
88
  gpu = [
89
89
  "abstractgateway[gpu]==0.5.1",
90
- "abstractassistant[gpu]==0.6.1",
90
+ "abstractassistant[gpu]==0.7.0",
91
91
  ]
92
92
 
93
93
  [project.urls]