abstractframework 0.2.1__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (187) hide show
  1. {abstractframework-0.2.1 → abstractframework-0.3.0}/CHANGELOG.md +98 -0
  2. {abstractframework-0.2.1/abstractframework.egg-info → abstractframework-0.3.0}/PKG-INFO +36 -29
  3. {abstractframework-0.2.1 → abstractframework-0.3.0}/README.md +31 -24
  4. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework/__init__.py +6 -6
  5. {abstractframework-0.2.1 → abstractframework-0.3.0/abstractframework.egg-info}/PKG-INFO +36 -29
  6. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework.egg-info/SOURCES.txt +3 -0
  7. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework.egg-info/requires.txt +4 -4
  8. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/api.md +5 -5
  9. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/faq.md +6 -4
  10. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/getting-started.md +15 -10
  11. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/glossary.md +1 -1
  12. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/install.md +178 -57
  13. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/implementation-plan.md +1 -1
  14. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/strategy.md +2 -2
  15. {abstractframework-0.2.1 → abstractframework-0.3.0}/llms-full.txt +249 -112
  16. {abstractframework-0.2.1 → abstractframework-0.3.0}/llms.txt +2 -2
  17. {abstractframework-0.2.1 → abstractframework-0.3.0}/pyproject.toml +5 -5
  18. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/console.sh +1 -1
  19. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/entity.sh +1 -1
  20. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/install.sh +377 -51
  21. abstractframework-0.3.0/scripts/lib/build_macos_installer.sh +179 -0
  22. abstractframework-0.3.0/scripts/tests/test_install_user_path.sh +259 -0
  23. abstractframework-0.3.0/scripts/uninstall.sh +85 -0
  24. {abstractframework-0.2.1 → abstractframework-0.3.0}/tests/test_install_profiles.py +158 -33
  25. {abstractframework-0.2.1 → abstractframework-0.3.0}/LICENSE +0 -0
  26. {abstractframework-0.2.1 → abstractframework-0.3.0}/MANIFEST.in +0 -0
  27. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework/__main__.py +0 -0
  28. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework/cli.py +0 -0
  29. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework/install_manifest.py +0 -0
  30. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework/py.typed +0 -0
  31. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework.egg-info/dependency_links.txt +0 -0
  32. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework.egg-info/entry_points.txt +0 -0
  33. {abstractframework-0.2.1 → abstractframework-0.3.0}/abstractframework.egg-info/top_level.txt +0 -0
  34. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/README.md +0 -0
  35. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0001-layered-architecture.md +0 -0
  36. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0002-effect-system-design.md +0 -0
  37. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0003-tool-system-architecture.md +0 -0
  38. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0004-observability-strategy.md +0 -0
  39. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0005-memory-architecture.md +0 -0
  40. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0006-durable-tool-execution.md +0 -0
  41. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  42. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0008-token-terminology.md +0 -0
  43. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  44. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  45. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  46. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
  47. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  48. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  49. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  50. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  51. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  52. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  53. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  54. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  55. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  56. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  57. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  58. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  59. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  60. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  61. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  62. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  63. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  64. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  65. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  66. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  67. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  68. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  69. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
  70. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  71. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  72. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  73. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/README.md +0 -0
  74. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/memory-recall-levels.md +0 -0
  75. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  76. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  77. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  78. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  79. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  80. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  81. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  82. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  83. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/architecture.md +0 -0
  84. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/claude/README.md +0 -0
  85. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/claude/abstractframework-fit.md +0 -0
  86. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/claude/claude-skills-overview.md +0 -0
  87. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/claude/claude-skills-sources.md +0 -0
  88. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/claude/claude-skills-top-20.md +0 -0
  89. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/comparisons/README.md +0 -0
  90. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/configuration.md +0 -0
  91. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/LANDING.md +0 -0
  92. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/README.md +0 -0
  93. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/agent-skills.md +0 -0
  94. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/agent-vs-llm.md +0 -0
  95. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/agora-workflow-agent.md +0 -0
  96. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/apple-local-gateway-flow.md +0 -0
  97. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/capability-plugins.md +0 -0
  98. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/capability-routing-defaults.md +0 -0
  99. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/deployment-iphone.md +0 -0
  100. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/deployment-topologies.md +0 -0
  101. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/deployment-web.md +0 -0
  102. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/email-integration.md +0 -0
  103. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/event-inbox-agent.md +0 -0
  104. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/flow-and-kg-memory.md +0 -0
  105. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/gateway-security.md +0 -0
  106. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/headless-swarm.md +0 -0
  107. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/process-manager-env-vars.md +0 -0
  108. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/prompt-caching.md +0 -0
  109. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/runtime-artifacts.md +0 -0
  110. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/runtime-scope.md +0 -0
  111. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/scheduled-workflows.md +0 -0
  112. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/summoned-entities.md +0 -0
  113. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/telegram-integration.md +0 -0
  114. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/guide/workflow-bundles.md +0 -0
  115. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/README.md +0 -0
  116. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/components.md +0 -0
  117. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/operations-and-support.md +0 -0
  118. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/release-and-manifest.md +0 -0
  119. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/security-and-os-blocks.md +0 -0
  120. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/installers/user-journeys.md +0 -0
  121. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/prompts/agora-collaboration.md +0 -0
  122. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/README.md +0 -0
  123. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/email-inbox-agent.md +0 -0
  124. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
  125. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/offline-coding-assistant.md +0 -0
  126. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/phone-thin-client.md +0 -0
  127. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/specialized-agent-flow.md +0 -0
  128. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
  129. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  130. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/README.md +0 -0
  131. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  132. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  133. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  134. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  135. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/claude-agent-skills-overview.md +0 -0
  136. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/claude-agent-skills-sources.md +0 -0
  137. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
  138. {abstractframework-0.2.1 → abstractframework-0.3.0}/docs/workspace-scripts.md +0 -0
  139. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/af-local.sh +0 -0
  140. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/af.sh +0 -0
  141. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/agora_react_flow_smoke.py +0 -0
  142. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/assistant-local.sh +0 -0
  143. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/assistant.sh +0 -0
  144. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/build.sh +0 -0
  145. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/cache_probe_local_backends.py +0 -0
  146. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/cache_steer_repl.py +0 -0
  147. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/clone.sh +0 -0
  148. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/code-local.sh +0 -0
  149. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/code.sh +0 -0
  150. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/commit.sh +0 -0
  151. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/console-local.sh +0 -0
  152. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/core_operator_drive.py +0 -0
  153. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/deps.sh +0 -0
  154. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/entity-local.sh +0 -0
  155. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/event_inbox_flow_smoke.py +0 -0
  156. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/flow-local.sh +0 -0
  157. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/flow.sh +0 -0
  158. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/gateway-flow-local.sh +0 -0
  159. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/gateway-flow.sh +0 -0
  160. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/gateway-local.sh +0 -0
  161. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/gateway.sh +0 -0
  162. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/gen_llms_full.py +0 -0
  163. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/headless_fleet_bridge.py +0 -0
  164. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/headless_fleet_demo.py +0 -0
  165. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/headless_steer_repl.py +0 -0
  166. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/af_inventory.py +0 -0
  167. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/af_stack.sh +0 -0
  168. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/af_supervisor.sh +0 -0
  169. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/apps_common.sh +0 -0
  170. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/gateway_user_tokens.py +0 -0
  171. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/lib/repo_groups.sh +0 -0
  172. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/meet_castor.sh +0 -0
  173. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/observer-local.sh +0 -0
  174. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/observer.sh +0 -0
  175. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/plan_walkthrough.py +0 -0
  176. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/pull.sh +0 -0
  177. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/push.sh +0 -0
  178. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/spawn_demo_agent.sh +0 -0
  179. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/start-local.sh +0 -0
  180. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/start.sh +0 -0
  181. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/status.sh +0 -0
  182. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/steer_repl.py +0 -0
  183. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/tests/test_af_supervisor.sh +0 -0
  184. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/tests/test_inventory.sh +0 -0
  185. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/tests/test_repo_scripts.sh +0 -0
  186. {abstractframework-0.2.1 → abstractframework-0.3.0}/scripts/visit_resume_cache_probe.py +0 -0
  187. {abstractframework-0.2.1 → abstractframework-0.3.0}/setup.cfg +0 -0
@@ -2,6 +2,104 @@
2
2
 
3
3
  All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
+ ## [0.3.0] - 2026-09-24
6
+
7
+ A Mac install that needs no Terminal knowledge (a `.pkg` or a double-click `.command`, and an
8
+ uninstaller), install failures explained in plain words, and the meta-package pins abstractcore
9
+ 2.15.0 and abstractgateway 0.4.1.
10
+
11
+ ### Changed (pins)
12
+
13
+ - **abstractcore 2.15.0** (was 2.14.0) and **abstractgateway 0.4.1** (was 0.3.0; 0.4.0 was never
14
+ published), in the base install and in the `apple` / `gpu` extras
15
+ (`abstractgateway[apple|gpu]==0.4.1`). The bootstrap scripts install
16
+ `abstractgateway[<profile>,tray]==0.4.1` and, with `--with-console`, `abstractgateway-console`
17
+ 0.8.0 (was 0.7.0). The other pins are unchanged: AbstractRuntime 0.4.33, abstractagent 0.3.13,
18
+ AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvoice 0.11.4, abstractvision 0.3.29,
19
+ abstractmusic 0.1.15, abstractassistant 0.5.0.
20
+ - Browser apps released with it (`--with-apps`, `npx`): `@abstractframework/continuum` 0.3.0 (was
21
+ 0.2.0) and `@abstractframework/entity` 0.2.0 (was 0.1.0); flow 0.3.20, code 0.4.2 and observer
22
+ 0.1.12 are unchanged.
23
+ - The docs name the container images released with it: `ghcr.io/lpalbou/abstractgateway:0.4.1`
24
+ and `ghcr.io/lpalbou/abstractcore-server:2.15.0`.
25
+ - `docs/backlog/planned/0859` states the real stack port map (observer 3001, continuum 3002,
26
+ code 3003, entity 3004, flow 3005), as `scripts/start-local.sh` and the gateway's
27
+ `STACK_PORTS` use.
28
+ - `scripts/lib/packages.txt`: abstractgateway 0.4.1 depends on abstractcore directly
29
+ (`abstractcore>=2.15.0`), so its edge is `abstractcore:dep` (was `extra`).
30
+
31
+ ### Added
32
+
33
+ - **A Mac install that needs no Terminal knowledge.** `scripts/lib/build_macos_installer.sh`
34
+ builds `AbstractFramework-Installer.pkg` (payload-free, "install for me only", no password) and
35
+ `AbstractFramework-Installer-macOS.zip` (`Install AbstractFramework.command` and
36
+ `Uninstall AbstractFramework.command`). Both open the same `install.sh` in Terminal with a
37
+ banner, so every step stays visible and logged; the browser opens AbstractFramework, signed in,
38
+ at the end. The script signs and notarizes the `.pkg` when given a Developer ID
39
+ (`AF_PKG_SIGN_IDENTITY`, `AF_NOTARY_PROFILE`); without one it says the build is unsigned.
40
+ - **`scripts/uninstall.sh`**: asks before removing anything, removes the login item, the running
41
+ gateway and the gateway tool, and asks separately whether to delete your data (`--purge`) and,
42
+ when the installer added uv, uv with its Python and download cache (`--remove-uv`, about
43
+ 2.5 GB after an Apple Silicon install). `--yes` runs without questions.
44
+ - **`install.sh --interactive`** asks whether to start AbstractFramework at login (default yes; a
45
+ previous "no" is remembered) and, on `--uninstall`, the data and uv questions. Questions go to
46
+ the terminal, so it works through `curl | sh`. Answering "no" after an earlier "yes" removes the
47
+ login item and starts the gateway in the background.
48
+
49
+ ### Changed
50
+
51
+ - **Every install failure says what to do next, in plain words.** `install.sh` checks internet
52
+ access to PyPI before changing anything (naming the proxy when one is set), recognises a
53
+ connection that drops mid-install, stops on folders it cannot write (with the exact
54
+ `sudo chown` fix), restarts itself natively when Terminal runs under Rosetta on Apple Silicon
55
+ (and explains the Terminal setting when piped), warns on macOS older than 13, and says why an
56
+ Apple Silicon Mac on macOS 13 gets the light profile. `install.ps1` has the same network check
57
+ and messages.
58
+ - **Re-runs repair and stay quiet.** A gateway command that no longer starts (an interrupted or
59
+ damaged install) is reinstalled in place; a registered, running, unchanged login item is left
60
+ alone instead of restarted; an already-configured shell profile no longer produces a
61
+ `uv tool update-shell` warning. The health wait is 180 s (the first start loads the engines) with
62
+ a progress line every 15 s.
63
+ - **The gateway's Network setting decides where it listens, not the installer.** `install.sh` and
64
+ `install.ps1` no longer pass `--host 127.0.0.1` to `abstractgateway service install` (it reset a
65
+ "Local network" choice to localhost on every re-run); they pass `--port` only. Without a login
66
+ item (background mode) they store the setting first (`abstractgateway network set localhost
67
+ --port N` when nothing is stored; a stored mode is kept and only the port aligned) and start plain
68
+ `abstractgateway serve`. Gateways without the `network` command keep the old
69
+ `serve --host 127.0.0.1 --port N`. The login item itself runs plain `serve` from
70
+ abstractgateway 0.4.1.
71
+ - The installer ends with a short plain-language summary (where AbstractFramework is, that it
72
+ starts at login, the menu-bar icon, how to remove it) before the technical details.
73
+ - `docs/install.md` is rewritten from a non-technical user's point of view (download, what you
74
+ will see, a table of every failure message and what to do, how to remove it); the one-line,
75
+ options and profile material follows under "Advanced". README and getting-started match.
76
+ - **llama.cpp GGUF is back in the one-line install, without a compiler.** `install.sh` and
77
+ `install.ps1` take `llama-cpp-python` from upstream's prebuilt wheels for every profile, light
78
+ included: Metal 0.3.28 on Apple Silicon, CPU 0.3.35 on glibc Linux x86_64/aarch64 and Windows
79
+ x64 (`--find-links` on the package page of abetlen's wheel index, `--constraints
80
+ uv-constraints.txt`, `--no-build-package llama-cpp-python` so the PyPI sdist is never built).
81
+ Where no wheel exists (Intel Mac, musl Linux, Windows on ARM) or the wheel install fails, the
82
+ script installs without it and prints `GGUF (llama.cpp) skipped: no prebuilt wheel for this
83
+ machine; re-run with --full after installing a C compiler`. The summary's `GGUF:` line says what
84
+ was installed. `--full` builds llama.cpp from source, now in the light profile too. CI's
85
+ bootstrap smoke imports `llama_cpp` from the installed gateway on macOS, Linux and Windows and
86
+ checks GPU offload on macOS.
87
+
88
+ ### Known limitations
89
+
90
+ These are unchanged from 0.2.1 (the same packages, checked with `uv pip install --dry-run
91
+ --no-build` against both releases). The one-line installer is not affected by the first two: it
92
+ installs the gateway, not `abstractassistant`, and builds pure-Python source packages.
93
+
94
+ - A plain `pip install abstractframework` on Linux builds `evdev` from source (a C compiler and
95
+ kernel headers), through `abstractassistant` 0.5.0 → `pynput`.
96
+ - `langdetect`, `antlr4-python3-runtime`, `encodec` and `transformers-stream-generator` are
97
+ published as source only; they are pure Python and build without a compiler.
98
+ - `abstractframework[gpu]` on Linux needs glibc 2.35 or later (Ubuntu 22.04+): `mlx[cuda13]`,
99
+ pulled by `abstractvision[all-gpu]` through `mlx-gen`, has only `manylinux_2_35` wheels.
100
+ - The macOS `.pkg` built by `scripts/lib/build_macos_installer.sh` is not signed yet, so
101
+ Gatekeeper asks the user to allow it ("Open Anyway").
102
+
5
103
  ## [0.2.1] - 2026-09-24
6
104
 
7
105
  Patch release: the one-line install works on a machine without a C compiler, and the
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,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.3.0
26
+ Requires-Dist: abstractgateway==0.4.1
27
27
  Requires-Dist: abstractassistant==0.5.0
28
- Requires-Dist: abstractcore==2.14.0
28
+ Requires-Dist: abstractcore==2.15.0
29
29
  Requires-Dist: AbstractRuntime==0.4.33
30
30
  Requires-Dist: abstractagent==0.3.13
31
31
  Requires-Dist: AbstractMemory==0.3.0
@@ -34,10 +34,10 @@ Requires-Dist: abstractvoice==0.11.4
34
34
  Requires-Dist: abstractvision==0.3.29
35
35
  Requires-Dist: abstractmusic==0.1.15
36
36
  Provides-Extra: apple
37
- Requires-Dist: abstractgateway[apple]==0.3.0; extra == "apple"
37
+ Requires-Dist: abstractgateway[apple]==0.4.1; extra == "apple"
38
38
  Requires-Dist: abstractassistant[apple]==0.5.0; platform_system == "Darwin" and extra == "apple"
39
39
  Provides-Extra: gpu
40
- Requires-Dist: abstractgateway[gpu]==0.3.0; extra == "gpu"
40
+ Requires-Dist: abstractgateway[gpu]==0.4.1; extra == "gpu"
41
41
  Requires-Dist: abstractassistant[gpu]==0.5.0; extra == "gpu"
42
42
  Dynamic: license-file
43
43
 
@@ -62,24 +62,31 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
62
62
 
63
63
  ## Quick start
64
64
 
65
- One line installs the gateway (no admin rights, no system Python), registers it as a login
66
- service, starts it on `127.0.0.1:8080`, and opens its web console already signed in. A first-run
67
- guide then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits
68
- your machine, and lists the apps:
65
+ The installer sets up the gateway in your user account (no admin password, no system Python),
66
+ asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
67
+ your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
68
+ MLX, llama.cpp), downloads a model that fits your machine, and lists the apps.
69
69
 
70
- ```bash
71
- # macOS / Linux
72
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
73
- ```
70
+ - **Mac, no Terminal:** download and double-click
71
+ [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
72
+ A Terminal window shows each step; press Return at its one question.
73
+ - **macOS / Linux, one line:**
74
74
 
75
- ```powershell
76
- # Windows 10 22H2+ / 11
77
- powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
78
- ```
75
+ ```bash
76
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
77
+ ```
78
+
79
+ - **Windows 10 22H2+ / 11** (PowerShell):
80
+
81
+ ```powershell
82
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
83
+ ```
79
84
 
80
- Add `--with-apps`, `--with-ollama` or `--with-lmstudio` for Node.js and local engines, `--print` to
81
- see every command first, and `--uninstall` to remove it. Options, the equivalent commands and
82
- uninstall details: [Install](docs/install.md).
85
+ Every failure says what to do next; running the installer again repairs or upgrades in place. To
86
+ remove it: `Uninstall AbstractFramework.command`, or
87
+ `curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/uninstall.sh | sh`.
88
+ Step by step, the failure table, options (`--with-apps`, `--with-ollama`, `--print`, …):
89
+ [Install](docs/install.md).
83
90
 
84
91
  Already have Python? Either entry point works the same way: start it, then open the link it prints.
85
92
 
@@ -181,7 +188,7 @@ ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.
181
188
  ```
182
189
 
183
190
  Container images are published for the gateway and the AbstractCore server:
184
- `ghcr.io/lpalbou/abstractgateway:0.3.0` and `ghcr.io/lpalbou/abstractcore-server:2.14.0`.
191
+ `ghcr.io/lpalbou/abstractgateway:0.4.1` and `ghcr.io/lpalbou/abstractcore-server:2.15.0`.
185
192
 
186
193
  For artifact and runtime-resource investigation, see
187
194
  `docs/guide/runtime-artifacts.md`.
@@ -300,7 +307,7 @@ pip install "abstractframework[gpu]"
300
307
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
301
308
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
302
309
 
303
- ### Release matrix (abstractframework 0.2.1)
310
+ ### Release matrix (abstractframework 0.3.0)
304
311
 
305
312
  `abstractframework` pins every Python package with `==`, so one version of the
306
313
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -309,9 +316,9 @@ and tested together.
309
316
 
310
317
  | Registry | Package | Version |
311
318
  |---|---|---|
312
- | PyPI | `abstractgateway` | 0.3.0 |
319
+ | PyPI | `abstractgateway` | 0.4.1 |
313
320
  | PyPI | `abstractassistant` | 0.5.0 |
314
- | PyPI | `abstractcore` | 2.14.0 |
321
+ | PyPI | `abstractcore` | 2.15.0 |
315
322
  | PyPI | `AbstractRuntime` | 0.4.33 |
316
323
  | PyPI | `abstractagent` | 0.3.13 |
317
324
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -322,14 +329,14 @@ and tested together.
322
329
  | npm | `@abstractframework/flow` | 0.3.20 |
323
330
  | npm | `@abstractframework/code` | 0.4.2 |
324
331
  | npm | `@abstractframework/observer` | 0.1.12 |
325
- | npm | `@abstractframework/continuum` | 0.2.0 |
326
- | npm | `@abstractframework/entity` | 0.1.0 |
332
+ | npm | `@abstractframework/continuum` | 0.3.0 |
333
+ | npm | `@abstractframework/entity` | 0.2.0 |
327
334
  | crates.io | `abstractcode` | 0.5.1 |
328
- | crates.io | `abstractgateway-console` | 0.7.0 |
335
+ | crates.io | `abstractgateway-console` | 0.8.0 |
329
336
  | crates.io | `abstractcore-console` | 0.2.0 |
330
337
  | crates.io | `abstracttui` | 0.6.0 |
331
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.3.0 (`gpu-latest` / `<version>-gpu` experimental) |
332
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.14.0 |
338
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.4.1 (`gpu-latest` / `<version>-gpu` experimental) |
339
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.15.0 |
333
340
 
334
341
  Optional add-ons that are not part of any profile install separately:
335
342
  `pip install abstract3d` (0.3.1), `pip install abstractcamera` (0.2.0) and
@@ -19,24 +19,31 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
19
19
 
20
20
  ## Quick start
21
21
 
22
- One line installs the gateway (no admin rights, no system Python), registers it as a login
23
- service, starts it on `127.0.0.1:8080`, and opens its web console already signed in. A first-run
24
- guide then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits
25
- your machine, and lists the apps:
22
+ The installer sets up the gateway in your user account (no admin password, no system Python),
23
+ asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
24
+ your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
25
+ MLX, llama.cpp), downloads a model that fits your machine, and lists the apps.
26
26
 
27
- ```bash
28
- # macOS / Linux
29
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
30
- ```
27
+ - **Mac, no Terminal:** download and double-click
28
+ [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
29
+ A Terminal window shows each step; press Return at its one question.
30
+ - **macOS / Linux, one line:**
31
31
 
32
- ```powershell
33
- # Windows 10 22H2+ / 11
34
- powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
35
- ```
32
+ ```bash
33
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
34
+ ```
35
+
36
+ - **Windows 10 22H2+ / 11** (PowerShell):
37
+
38
+ ```powershell
39
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
40
+ ```
36
41
 
37
- Add `--with-apps`, `--with-ollama` or `--with-lmstudio` for Node.js and local engines, `--print` to
38
- see every command first, and `--uninstall` to remove it. Options, the equivalent commands and
39
- uninstall details: [Install](docs/install.md).
42
+ Every failure says what to do next; running the installer again repairs or upgrades in place. To
43
+ remove it: `Uninstall AbstractFramework.command`, or
44
+ `curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/uninstall.sh | sh`.
45
+ Step by step, the failure table, options (`--with-apps`, `--with-ollama`, `--print`, …):
46
+ [Install](docs/install.md).
40
47
 
41
48
  Already have Python? Either entry point works the same way: start it, then open the link it prints.
42
49
 
@@ -138,7 +145,7 @@ ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.
138
145
  ```
139
146
 
140
147
  Container images are published for the gateway and the AbstractCore server:
141
- `ghcr.io/lpalbou/abstractgateway:0.3.0` and `ghcr.io/lpalbou/abstractcore-server:2.14.0`.
148
+ `ghcr.io/lpalbou/abstractgateway:0.4.1` and `ghcr.io/lpalbou/abstractcore-server:2.15.0`.
142
149
 
143
150
  For artifact and runtime-resource investigation, see
144
151
  `docs/guide/runtime-artifacts.md`.
@@ -257,7 +264,7 @@ pip install "abstractframework[gpu]"
257
264
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
258
265
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
259
266
 
260
- ### Release matrix (abstractframework 0.2.1)
267
+ ### Release matrix (abstractframework 0.3.0)
261
268
 
262
269
  `abstractframework` pins every Python package with `==`, so one version of the
263
270
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -266,9 +273,9 @@ and tested together.
266
273
 
267
274
  | Registry | Package | Version |
268
275
  |---|---|---|
269
- | PyPI | `abstractgateway` | 0.3.0 |
276
+ | PyPI | `abstractgateway` | 0.4.1 |
270
277
  | PyPI | `abstractassistant` | 0.5.0 |
271
- | PyPI | `abstractcore` | 2.14.0 |
278
+ | PyPI | `abstractcore` | 2.15.0 |
272
279
  | PyPI | `AbstractRuntime` | 0.4.33 |
273
280
  | PyPI | `abstractagent` | 0.3.13 |
274
281
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -279,14 +286,14 @@ and tested together.
279
286
  | npm | `@abstractframework/flow` | 0.3.20 |
280
287
  | npm | `@abstractframework/code` | 0.4.2 |
281
288
  | npm | `@abstractframework/observer` | 0.1.12 |
282
- | npm | `@abstractframework/continuum` | 0.2.0 |
283
- | npm | `@abstractframework/entity` | 0.1.0 |
289
+ | npm | `@abstractframework/continuum` | 0.3.0 |
290
+ | npm | `@abstractframework/entity` | 0.2.0 |
284
291
  | crates.io | `abstractcode` | 0.5.1 |
285
- | crates.io | `abstractgateway-console` | 0.7.0 |
292
+ | crates.io | `abstractgateway-console` | 0.8.0 |
286
293
  | crates.io | `abstractcore-console` | 0.2.0 |
287
294
  | crates.io | `abstracttui` | 0.6.0 |
288
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.3.0 (`gpu-latest` / `<version>-gpu` experimental) |
289
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.14.0 |
295
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.4.1 (`gpu-latest` / `<version>-gpu` experimental) |
296
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.15.0 |
290
297
 
291
298
  Optional add-ons that are not part of any profile install separately:
292
299
  `pip install abstract3d` (0.3.1), `pip install abstractcamera` (0.2.0) and
@@ -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.2.1"
13
+ __version__ = "0.3.0"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.14.0",
18
+ "abstractcore": "2.15.0",
19
19
  "abstractruntime": "0.4.33",
20
20
  "abstractagent": "0.3.13",
21
- "abstractgateway": "0.3.0",
21
+ "abstractgateway": "0.4.1",
22
22
  "abstractmemory": "0.3.0",
23
23
  "abstractsemantics": "0.0.5",
24
24
  "abstractvoice": "0.11.4",
@@ -44,14 +44,14 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
44
44
  "@abstractframework/flow": "0.3.20",
45
45
  "@abstractframework/code": "0.4.2",
46
46
  "@abstractframework/observer": "0.1.12",
47
- "@abstractframework/continuum": "0.2.0",
48
- "@abstractframework/entity": "0.1.0",
47
+ "@abstractframework/continuum": "0.3.0",
48
+ "@abstractframework/entity": "0.2.0",
49
49
  }
50
50
 
51
51
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
52
52
  # or by the bootstrap scripts' --with-console / --with-code-cli flags).
53
53
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
54
- "abstractgateway-console": "0.7.0",
54
+ "abstractgateway-console": "0.8.0",
55
55
  "abstractcore-console": "0.2.0",
56
56
  "abstractcode": "0.5.1",
57
57
  "abstracttui": "0.6.0",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.2.1
3
+ Version: 0.3.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,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.3.0
26
+ Requires-Dist: abstractgateway==0.4.1
27
27
  Requires-Dist: abstractassistant==0.5.0
28
- Requires-Dist: abstractcore==2.14.0
28
+ Requires-Dist: abstractcore==2.15.0
29
29
  Requires-Dist: AbstractRuntime==0.4.33
30
30
  Requires-Dist: abstractagent==0.3.13
31
31
  Requires-Dist: AbstractMemory==0.3.0
@@ -34,10 +34,10 @@ Requires-Dist: abstractvoice==0.11.4
34
34
  Requires-Dist: abstractvision==0.3.29
35
35
  Requires-Dist: abstractmusic==0.1.15
36
36
  Provides-Extra: apple
37
- Requires-Dist: abstractgateway[apple]==0.3.0; extra == "apple"
37
+ Requires-Dist: abstractgateway[apple]==0.4.1; extra == "apple"
38
38
  Requires-Dist: abstractassistant[apple]==0.5.0; platform_system == "Darwin" and extra == "apple"
39
39
  Provides-Extra: gpu
40
- Requires-Dist: abstractgateway[gpu]==0.3.0; extra == "gpu"
40
+ Requires-Dist: abstractgateway[gpu]==0.4.1; extra == "gpu"
41
41
  Requires-Dist: abstractassistant[gpu]==0.5.0; extra == "gpu"
42
42
  Dynamic: license-file
43
43
 
@@ -62,24 +62,31 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
62
62
 
63
63
  ## Quick start
64
64
 
65
- One line installs the gateway (no admin rights, no system Python), registers it as a login
66
- service, starts it on `127.0.0.1:8080`, and opens its web console already signed in. A first-run
67
- guide then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits
68
- your machine, and lists the apps:
65
+ The installer sets up the gateway in your user account (no admin password, no system Python),
66
+ asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
67
+ your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
68
+ MLX, llama.cpp), downloads a model that fits your machine, and lists the apps.
69
69
 
70
- ```bash
71
- # macOS / Linux
72
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
73
- ```
70
+ - **Mac, no Terminal:** download and double-click
71
+ [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
72
+ A Terminal window shows each step; press Return at its one question.
73
+ - **macOS / Linux, one line:**
74
74
 
75
- ```powershell
76
- # Windows 10 22H2+ / 11
77
- powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
78
- ```
75
+ ```bash
76
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
77
+ ```
78
+
79
+ - **Windows 10 22H2+ / 11** (PowerShell):
80
+
81
+ ```powershell
82
+ powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"
83
+ ```
79
84
 
80
- Add `--with-apps`, `--with-ollama` or `--with-lmstudio` for Node.js and local engines, `--print` to
81
- see every command first, and `--uninstall` to remove it. Options, the equivalent commands and
82
- uninstall details: [Install](docs/install.md).
85
+ Every failure says what to do next; running the installer again repairs or upgrades in place. To
86
+ remove it: `Uninstall AbstractFramework.command`, or
87
+ `curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/uninstall.sh | sh`.
88
+ Step by step, the failure table, options (`--with-apps`, `--with-ollama`, `--print`, …):
89
+ [Install](docs/install.md).
83
90
 
84
91
  Already have Python? Either entry point works the same way: start it, then open the link it prints.
85
92
 
@@ -181,7 +188,7 @@ ABSTRACTGATEWAY_AUTH_TOKEN=<token> abstractgateway-console --url http://127.0.0.
181
188
  ```
182
189
 
183
190
  Container images are published for the gateway and the AbstractCore server:
184
- `ghcr.io/lpalbou/abstractgateway:0.3.0` and `ghcr.io/lpalbou/abstractcore-server:2.14.0`.
191
+ `ghcr.io/lpalbou/abstractgateway:0.4.1` and `ghcr.io/lpalbou/abstractcore-server:2.15.0`.
185
192
 
186
193
  For artifact and runtime-resource investigation, see
187
194
  `docs/guide/runtime-artifacts.md`.
@@ -300,7 +307,7 @@ pip install "abstractframework[gpu]"
300
307
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
301
308
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
302
309
 
303
- ### Release matrix (abstractframework 0.2.1)
310
+ ### Release matrix (abstractframework 0.3.0)
304
311
 
305
312
  `abstractframework` pins every Python package with `==`, so one version of the
306
313
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -309,9 +316,9 @@ and tested together.
309
316
 
310
317
  | Registry | Package | Version |
311
318
  |---|---|---|
312
- | PyPI | `abstractgateway` | 0.3.0 |
319
+ | PyPI | `abstractgateway` | 0.4.1 |
313
320
  | PyPI | `abstractassistant` | 0.5.0 |
314
- | PyPI | `abstractcore` | 2.14.0 |
321
+ | PyPI | `abstractcore` | 2.15.0 |
315
322
  | PyPI | `AbstractRuntime` | 0.4.33 |
316
323
  | PyPI | `abstractagent` | 0.3.13 |
317
324
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -322,14 +329,14 @@ and tested together.
322
329
  | npm | `@abstractframework/flow` | 0.3.20 |
323
330
  | npm | `@abstractframework/code` | 0.4.2 |
324
331
  | npm | `@abstractframework/observer` | 0.1.12 |
325
- | npm | `@abstractframework/continuum` | 0.2.0 |
326
- | npm | `@abstractframework/entity` | 0.1.0 |
332
+ | npm | `@abstractframework/continuum` | 0.3.0 |
333
+ | npm | `@abstractframework/entity` | 0.2.0 |
327
334
  | crates.io | `abstractcode` | 0.5.1 |
328
- | crates.io | `abstractgateway-console` | 0.7.0 |
335
+ | crates.io | `abstractgateway-console` | 0.8.0 |
329
336
  | crates.io | `abstractcore-console` | 0.2.0 |
330
337
  | crates.io | `abstracttui` | 0.6.0 |
331
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.3.0 (`gpu-latest` / `<version>-gpu` experimental) |
332
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.14.0 |
338
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.4.1 (`gpu-latest` / `<version>-gpu` experimental) |
339
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.15.0 |
333
340
 
334
341
  Optional add-ons that are not part of any profile install separately:
335
342
  `pip install abstract3d` (0.3.1), `pip install abstractcamera` (0.2.0) and
@@ -169,14 +169,17 @@ scripts/start-local.sh
169
169
  scripts/start.sh
170
170
  scripts/status.sh
171
171
  scripts/steer_repl.py
172
+ scripts/uninstall.sh
172
173
  scripts/visit_resume_cache_probe.py
173
174
  scripts/lib/af_inventory.py
174
175
  scripts/lib/af_stack.sh
175
176
  scripts/lib/af_supervisor.sh
176
177
  scripts/lib/apps_common.sh
178
+ scripts/lib/build_macos_installer.sh
177
179
  scripts/lib/gateway_user_tokens.py
178
180
  scripts/lib/repo_groups.sh
179
181
  scripts/tests/test_af_supervisor.sh
182
+ scripts/tests/test_install_user_path.sh
180
183
  scripts/tests/test_inventory.sh
181
184
  scripts/tests/test_repo_scripts.sh
182
185
  tests/test_install_profiles.py
@@ -1,6 +1,6 @@
1
- abstractgateway==0.3.0
1
+ abstractgateway==0.4.1
2
2
  abstractassistant==0.5.0
3
- abstractcore==2.14.0
3
+ abstractcore==2.15.0
4
4
  AbstractRuntime==0.4.33
5
5
  abstractagent==0.3.13
6
6
  AbstractMemory==0.3.0
@@ -10,11 +10,11 @@ abstractvision==0.3.29
10
10
  abstractmusic==0.1.15
11
11
 
12
12
  [apple]
13
- abstractgateway[apple]==0.3.0
13
+ abstractgateway[apple]==0.4.1
14
14
 
15
15
  [apple:platform_system == "Darwin"]
16
16
  abstractassistant[apple]==0.5.0
17
17
 
18
18
  [gpu]
19
- abstractgateway[gpu]==0.3.0
19
+ abstractgateway[gpu]==0.4.1
20
20
  abstractassistant[gpu]==0.5.0
@@ -55,8 +55,8 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `RELEASE_VERSIONS`
57
57
 
58
- Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.2.0:
59
- `abstractcore` 2.14.0, `abstractruntime` 0.4.33, `abstractagent` 0.3.13, `abstractgateway` 0.3.0,
58
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.3.0:
59
+ `abstractcore` 2.15.0, `abstractruntime` 0.4.33, `abstractagent` 0.3.13, `abstractgateway` 0.4.1,
60
60
  `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.11.4, `abstractvision` 0.3.29,
61
61
  `abstractmusic` 0.1.15, `abstractassistant` 0.5.0.
62
62
 
@@ -69,13 +69,13 @@ Maps each package name in `RELEASE_VERSIONS` to its PyPI distribution name (for
69
69
 
70
70
  The npm apps released with this version, each runnable with `npx <package>`:
71
71
  `@abstractframework/flow` 0.3.20, `@abstractframework/code` 0.4.2,
72
- `@abstractframework/observer` 0.1.12, `@abstractframework/continuum` 0.2.0 and
73
- `@abstractframework/entity` 0.1.0. They also appear as `npm_apps` in the install manifest.
72
+ `@abstractframework/observer` 0.1.12, `@abstractframework/continuum` 0.3.0 and
73
+ `@abstractframework/entity` 0.2.0. They also appear as `npm_apps` in the install manifest.
74
74
 
75
75
  ### `CRATE_RELEASE_VERSIONS`
76
76
 
77
77
  The Rust terminal tools released with this version, installed with `cargo install <crate>`:
78
- `abstractgateway-console` 0.7.0, `abstractcore-console` 0.2.0, `abstractcode` 0.5.1 and the
78
+ `abstractgateway-console` 0.8.0, `abstractcore-console` 0.2.0, `abstractcode` 0.5.1 and the
79
79
  `abstracttui` engine 0.6.0. The bootstrap scripts install `abstractgateway-console` and
80
80
  `abstractcode` at these versions with `--with-console` and `--with-code-cli`.
81
81
 
@@ -28,13 +28,13 @@ No.
28
28
 
29
29
  | Goal | Install |
30
30
  |---|---|
31
- | A running gateway + web console, no Python setup | the one-line bootstrap in [Install](install.md#quick-start) |
31
+ | A running gateway + web console, no Python setup | the installer (a Mac package, or one line) in [Install](install.md) |
32
32
  | Smallest useful (LLM SDK only) | `pip install abstractcore` |
33
33
  | Gateway-first deployment | `pip install abstractgateway` |
34
34
  | Everything at compatible versions | `pip install abstractframework` |
35
35
  | A browser app against an existing gateway | `npx @abstractframework/<flow\|code\|observer\|continuum\|entity>` |
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.3.0` |
37
+ | A container deployment | `ghcr.io/lpalbou/abstractgateway:0.4.1` |
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
@@ -183,8 +183,10 @@ to install `libatomic1`. The script tells you before running them.
183
183
 
184
184
  No. The default install uses prebuilt wheels only. If macOS shows an "install the command line
185
185
  developer tools" prompt, cancel it and re-run the current one-liner: an older copy of the script
186
- compiled a few packages. You need a compiler only for `--full`, which adds llama.cpp GGUF,
187
- stable-diffusion.cpp and echo cancellation ([Compiled extras](install.md#compiled-extras)).
186
+ compiled a few packages. llama.cpp GGUF models come from upstream's prebuilt wheel on Apple
187
+ Silicon, Linux and Windows x64 ([llama.cpp GGUF models](install.md#llamacpp-gguf-models)). You
188
+ need a compiler only for `--full`, which adds stable-diffusion.cpp and echo cancellation, and
189
+ llama.cpp on machines without a prebuilt wheel ([Compiled extras](install.md#compiled-extras)).
188
190
 
189
191
  ### Windows says scripts are disabled on this system
190
192
 
@@ -19,22 +19,27 @@ AbstractFramework is a **stack**:
19
19
 
20
20
  > **Prerequisites**: Python 3.10–3.13 for the manual installs below. Node.js 18+ (only for browser UIs). An LLM backend — local (Ollama, LM Studio, vLLM, llama.cpp) or cloud (OpenAI, Anthropic, etc.).
21
21
 
22
- ## Fastest path: the one-line install
22
+ ## Fastest path: the installer
23
23
 
24
- If you want a running gateway and its web console without setting up Python yourself, use the
25
- bootstrap script. It installs uv, Python 3.12 and the pinned gateway in your user account, registers
26
- it to start at login, starts it on `127.0.0.1:8080`, and opens `/console` already signed in:
24
+ If you want AbstractFramework running on your computer without setting up Python yourself, use
25
+ the installer. On a Mac, download and double-click
26
+ [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg);
27
+ on macOS or Linux you can instead paste one line in Terminal:
27
28
 
28
29
  ```bash
29
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
30
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
30
31
  ```
31
32
 
32
33
  On Windows: `powershell -ExecutionPolicy ByPass -c "irm https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.ps1 | iex"`.
33
- The console's first-run guide sets up a local engine or a cloud key and a default model (the
34
- **Models** tab lists the models that fit your machine and downloads them). Then continue with
35
- [Monitor runs](#4-monitor-runs-with-abstractobserver) or [AbstractFlow](#author-orchestration-with-abstractflow).
36
- Options and uninstall: [Install](install.md#quick-start). The sections below cover manual installs
37
- for library and developer use.
34
+
35
+ It installs uv, Python 3.12 and the pinned gateway in your user account (no admin password), asks
36
+ whether to start it at login, starts it on `127.0.0.1:8080`, and opens its console in your browser
37
+ already signed in. The console's first-run guide sets up a local engine or a cloud key and a
38
+ default model (the **Models** tab lists the models that fit your machine and downloads them). Then
39
+ continue with [Monitor runs](#4-monitor-runs-with-abstractobserver) or
40
+ [AbstractFlow](#author-orchestration-with-abstractflow). Step by step, what to do when something
41
+ fails, and how to remove it: [Install](install.md). The sections below cover manual installs for
42
+ library and developer use.
38
43
 
39
44
  ---
40
45