abstractframework 0.5.0__tar.gz → 0.6.1__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 (193) hide show
  1. {abstractframework-0.5.0 → abstractframework-0.6.1}/CHANGELOG.md +179 -0
  2. {abstractframework-0.5.0/abstractframework.egg-info → abstractframework-0.6.1}/PKG-INFO +52 -46
  3. {abstractframework-0.5.0 → abstractframework-0.6.1}/README.md +41 -35
  4. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework/__init__.py +16 -16
  5. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework/install_manifest.py +10 -5
  6. {abstractframework-0.5.0 → abstractframework-0.6.1/abstractframework.egg-info}/PKG-INFO +52 -46
  7. abstractframework-0.6.1/abstractframework.egg-info/requires.txt +21 -0
  8. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/README.md +1 -1
  9. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/api.md +10 -10
  10. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/architecture.md +52 -7
  11. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/automations.md +41 -17
  12. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/configuration.md +12 -13
  13. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/faq.md +10 -7
  14. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/getting-started.md +63 -24
  15. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/glossary.md +3 -1
  16. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/install.md +209 -66
  17. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/components.md +2 -2
  18. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/implementation-plan.md +1 -1
  19. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/user-journeys.md +11 -8
  20. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/troubleshooting.md +6 -3
  21. {abstractframework-0.5.0 → abstractframework-0.6.1}/llms-full.txt +509 -235
  22. {abstractframework-0.5.0 → abstractframework-0.6.1}/llms.txt +10 -8
  23. {abstractframework-0.5.0 → abstractframework-0.6.1}/pyproject.toml +11 -11
  24. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/check_identity_sync.py +52 -5
  25. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/install.sh +512 -144
  26. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/tests/test_install_user_path.sh +258 -18
  27. {abstractframework-0.5.0 → abstractframework-0.6.1}/tests/test_install_profiles.py +369 -26
  28. abstractframework-0.5.0/abstractframework.egg-info/requires.txt +0 -21
  29. {abstractframework-0.5.0 → abstractframework-0.6.1}/LICENSE +0 -0
  30. {abstractframework-0.5.0 → abstractframework-0.6.1}/MANIFEST.in +0 -0
  31. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework/__main__.py +0 -0
  32. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework/cli.py +0 -0
  33. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework/py.typed +0 -0
  34. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework.egg-info/SOURCES.txt +0 -0
  35. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework.egg-info/dependency_links.txt +0 -0
  36. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework.egg-info/entry_points.txt +0 -0
  37. {abstractframework-0.5.0 → abstractframework-0.6.1}/abstractframework.egg-info/top_level.txt +0 -0
  38. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0001-layered-architecture.md +0 -0
  39. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0002-effect-system-design.md +0 -0
  40. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0003-tool-system-architecture.md +0 -0
  41. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0004-observability-strategy.md +0 -0
  42. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0005-memory-architecture.md +0 -0
  43. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0006-durable-tool-execution.md +0 -0
  44. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  45. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0008-token-terminology.md +0 -0
  46. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  47. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  48. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  49. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0012-portable-workflowartifact.md +0 -0
  50. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  51. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  52. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  53. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  54. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  55. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  56. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  57. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  58. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  59. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  60. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  61. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  62. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  63. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  64. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  65. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  66. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  67. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  68. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  69. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  70. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  71. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  72. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0035-capability-routing-defaults.md +0 -0
  73. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  74. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  75. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  76. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/README.md +0 -0
  77. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/memory-recall-levels.md +0 -0
  78. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  79. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  80. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  81. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  82. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  83. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  84. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  85. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  86. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/agent-sessions.md +0 -0
  87. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/claude/README.md +0 -0
  88. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/claude/abstractframework-fit.md +0 -0
  89. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/claude/claude-skills-overview.md +0 -0
  90. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/claude/claude-skills-sources.md +0 -0
  91. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/claude/claude-skills-top-20.md +0 -0
  92. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/comparisons/README.md +0 -0
  93. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/LANDING.md +0 -0
  94. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/README.md +0 -0
  95. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/agent-skills.md +0 -0
  96. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/agent-vs-llm.md +0 -0
  97. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/agora-workflow-agent.md +0 -0
  98. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/apple-local-gateway-flow.md +0 -0
  99. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/capability-plugins.md +0 -0
  100. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/capability-routing-defaults.md +0 -0
  101. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/deployment-iphone.md +0 -0
  102. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/deployment-topologies.md +0 -0
  103. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/deployment-web.md +0 -0
  104. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/email-integration.md +0 -0
  105. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/event-inbox-agent.md +0 -0
  106. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/flow-and-kg-memory.md +0 -0
  107. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/gateway-security.md +0 -0
  108. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/headless-swarm.md +0 -0
  109. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/process-manager-env-vars.md +0 -0
  110. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/prompt-caching.md +0 -0
  111. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/runtime-artifacts.md +0 -0
  112. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/runtime-scope.md +0 -0
  113. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/scheduled-workflows.md +0 -0
  114. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/summoned-entities.md +0 -0
  115. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/telegram-integration.md +0 -0
  116. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/guide/workflow-bundles.md +0 -0
  117. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/README.md +0 -0
  118. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/operations-and-support.md +0 -0
  119. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/release-and-manifest.md +0 -0
  120. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/security-and-os-blocks.md +0 -0
  121. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/installers/strategy.md +0 -0
  122. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/prompts/agora-collaboration.md +0 -0
  123. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/README.md +0 -0
  124. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/email-inbox-agent.md +0 -0
  125. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/gateway-first-local-dev.md +0 -0
  126. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/offline-coding-assistant.md +0 -0
  127. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/phone-thin-client.md +0 -0
  128. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/specialized-agent-flow.md +0 -0
  129. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/telegram-permanent-contact.md +0 -0
  130. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  131. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/README.md +0 -0
  132. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  133. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  134. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  135. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  136. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/claude-agent-skills-overview.md +0 -0
  137. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/claude-agent-skills-sources.md +0 -0
  138. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/skills/claude-agent-skills-top-20.md +0 -0
  139. {abstractframework-0.5.0 → abstractframework-0.6.1}/docs/workspace-scripts.md +0 -0
  140. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/af-local.sh +0 -0
  141. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/af.sh +0 -0
  142. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/agora_react_flow_smoke.py +0 -0
  143. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/assistant-local.sh +0 -0
  144. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/assistant.sh +0 -0
  145. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/build.sh +0 -0
  146. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/cache_probe_local_backends.py +0 -0
  147. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/cache_steer_repl.py +0 -0
  148. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/clone.sh +0 -0
  149. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/code-local.sh +0 -0
  150. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/code.sh +0 -0
  151. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/commit.sh +0 -0
  152. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/console-local.sh +0 -0
  153. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/console.sh +0 -0
  154. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/core_operator_drive.py +0 -0
  155. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/deps.sh +0 -0
  156. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/entity-local.sh +0 -0
  157. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/entity.sh +0 -0
  158. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/event_inbox_flow_smoke.py +0 -0
  159. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/flow-local.sh +0 -0
  160. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/flow.sh +0 -0
  161. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/gateway-flow-local.sh +0 -0
  162. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/gateway-flow.sh +0 -0
  163. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/gateway-local.sh +0 -0
  164. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/gateway.sh +0 -0
  165. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/gen_llms_full.py +0 -0
  166. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/headless_fleet_bridge.py +0 -0
  167. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/headless_fleet_demo.py +0 -0
  168. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/headless_steer_repl.py +0 -0
  169. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/af_inventory.py +0 -0
  170. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/af_stack.sh +0 -0
  171. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/af_supervisor.sh +0 -0
  172. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/apps_common.sh +0 -0
  173. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/build_macos_installer.sh +0 -0
  174. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/gateway_user_tokens.py +0 -0
  175. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/lib/repo_groups.sh +0 -0
  176. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/meet_castor.sh +0 -0
  177. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/observer-local.sh +0 -0
  178. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/observer.sh +0 -0
  179. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/plan_walkthrough.py +0 -0
  180. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/pull.sh +0 -0
  181. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/push.sh +0 -0
  182. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/spawn_demo_agent.sh +0 -0
  183. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/start-local.sh +0 -0
  184. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/start.sh +0 -0
  185. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/status.sh +0 -0
  186. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/steer_repl.py +0 -0
  187. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/tests/test_af_supervisor.sh +0 -0
  188. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/tests/test_inventory.sh +0 -0
  189. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/tests/test_repo_scripts.sh +0 -0
  190. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/uninstall.sh +0 -0
  191. {abstractframework-0.5.0 → abstractframework-0.6.1}/scripts/visit_resume_cache_probe.py +0 -0
  192. {abstractframework-0.5.0 → abstractframework-0.6.1}/setup.cfg +0 -0
  193. {abstractframework-0.5.0 → abstractframework-0.6.1}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,185 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.6.1] - 2026-09-28
8
+
9
+ Every terminal command lands on your PATH, AbstractCode's terminal client says how to sign in, and
10
+ Run now explains itself the same way in every client.
11
+
12
+ ### Changed
13
+
14
+ - **The installer puts every command line on PATH by default**, in one folder, uv's tool bin
15
+ directory (`~/.local/bin` on macOS and Linux, `%USERPROFILE%\.local\bin` on Windows), next to
16
+ `abstractgateway`:
17
+ - AbstractCode's terminal client, `abstractcode`, is built whenever the terminal console is, with
18
+ the same cargo. `--no-code-cli` (`-NoCodeCli`) skips it; a failed build never fails the install.
19
+ With `--no-console` it is built only when a cargo of Rust 1.87 or later already exists.
20
+ - The library commands come from the gateway's own environment: AbstractCore's (`abstractcore`,
21
+ `abstractcore-config`, `abstractcore-chat`, `abstractcore-endpoint` and its apps `summarizer`,
22
+ `extractor`, `judge`, `intent`, `deepsearch`, also as `abstractcore-<app>`), `abstractvoice`,
23
+ `abstractvoice-prefetch`, `abstractvision` and `abstractmusic`. `--no-core-cli` (`-NoCoreCli`)
24
+ leaves them out.
25
+ - A package's commands come all together or not at all: when another program already has one of
26
+ its names, that package is left out with a warning naming the file, and the rest installs.
27
+ - `--with-code-cli` and `--with-core-cli` stay accepted (they are the default now).
28
+ - The summary lists every command with what it does (`abstractgateway-config`: the gateway's
29
+ admin command). See [Commands you get](docs/install.md#commands-you-get).
30
+ - **Signing AbstractCode's terminal client in.** The summary prints
31
+ `Sign in (terminal, once): abstractcode login --token <token>` with your admin token, then
32
+ `abstractcode`, and the way without a token on the gateway's computer,
33
+ `abstractgateway apps tui-command code`. The installer never saves the token for you. Started
34
+ without a sign-in, `abstractcode` 0.7.1 says so and prints the same lines instead of opening
35
+ with an empty workflow.
36
+ - **Terminal apps share one folder with the gateway** (AbstractGateway 0.7.1). The console's
37
+ **Apps** page installs and updates `abstractcode` in the same folder as the installer, so it runs
38
+ by name. A re-run of the installer keeps an `abstractcode` newer than its pin. On Windows,
39
+ `install.ps1` builds `abstractgateway-console` and `abstractcode` into `%USERPROFILE%\.local\bin`
40
+ (an existing copy in `%USERPROFILE%\.cargo\bin` is left in place).
41
+ - **Uninstall** removes `abstractcode` like the console, and also the copy older gateways put in
42
+ `<data dir>/apps/bin` (removing that folder when it is empty; other files there are kept).
43
+
44
+ ### Added
45
+
46
+ - **Run now reads the same everywhere** (ui-kit 0.1.16, Observer 0.2.1, Assistant 0.9.1,
47
+ AbstractCode terminal 0.7.1 and web 0.6.1). Every client draws Run now with the same play-in-a-circle icon and explains
48
+ it with the same text: it runs the automation once now instead of waiting; the next scheduled run
49
+ keeps its time (or starts right after this run if its time comes first); it does not count toward
50
+ a run limit; it works while paused, which stays paused; and it is not available while a run is in
51
+ progress. Pause, Resume, Stop, Edit, Archive and Discuss carry the same kind of hint. See
52
+ [Automations](docs/automations.md).
53
+
54
+ ### Changed (pins)
55
+
56
+ - **abstractgateway 0.7.1** (was 0.7.0): terminal apps in the uv tool bin folder.
57
+ - **abstractassistant 0.9.1** (was 0.9.0): the shared Run now icon and hints.
58
+ - npm: **@abstractframework/observer 0.2.1** and **@abstractframework/code 0.6.1** (both with the
59
+ shared Run now hints, ui-kit 0.1.16).
60
+ - crates.io: **abstractcode 0.7.1** (sign-in report, "not signed in" state, Run now line).
61
+ - Unchanged: abstractcore 2.18.0, AbstractRuntime 0.7.1, abstractagent 0.3.17, abstractvoice 0.13.0,
62
+ abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvision 0.3.30,
63
+ abstractmusic 0.1.15, flow 0.4.0, continuum 0.4.0, entity 0.3.0, `abstractgateway-console` 0.11.0,
64
+ `abstractcore-console` 0.4.0 and `abstracttui` 0.6.0.
65
+
66
+ ## [0.6.0] - 2026-09-28
67
+
68
+ Remote and headless machines work like a Mac: one address and one SSH tunnel reach the console, the
69
+ API and every browser app; every client finds the local gateway on its own; AbstractCode creates and
70
+ runs automations; history replay keeps whole messages up to 50,000 tokens and never cuts one.
71
+
72
+ ### Added
73
+
74
+ - **Browser apps open through the gateway at `/apps/<app>/`** (AbstractGateway 0.7.0). Flow, Code,
75
+ Observer, Continuum and Entity are served on the gateway's own address (HTTP, server-sent events
76
+ and WebSocket), signed in with the app's gateway session, so a LAN address, a reverse proxy or one
77
+ SSH tunnel reaches them all. The apps listen on `127.0.0.1` by default. The installer summary's
78
+ `Apps:` line and the docs point to `<gateway>/apps/<app>/`; the console's **Apps** page installs
79
+ and opens them. Running an app on its own with `npx … --gateway-url <url>` is the advanced
80
+ alternative (`Standalone:` line).
81
+ - **Local gateway pointer.** After the health check the installer writes
82
+ `~/.abstractframework/gateway.json` (Windows: `%USERPROFILE%\.abstractframework\gateway.json`),
83
+ mode 0600: the gateway's loopback URL, port and data directory, never a token. The Assistant (the
84
+ macOS app included), both terminal consoles, AbstractCode's terminal client and the browser apps'
85
+ servers read it to find a gateway on a port other than 8080, and follow it when the gateway moves.
86
+ The installer writes it for the install it just made, a custom `--data-dir` included (replacing a
87
+ pointer that names another data directory); `abstractgateway serve` then keeps it current under
88
+ its ownership rule. The uninstaller deletes it when it names the uninstalled data directory.
89
+ - **Automations in AbstractCode** (`abstractcode` 0.7.0, `@abstractframework/code` 0.6.0). In the
90
+ terminal client, `/automations` lists and opens automations (runs as chat pairs, waits that need
91
+ you, the folder, pause/resume, run now, stop, revise, archive, Discuss) and `/schedule` creates
92
+ one; the browser client has the same in its **Automations** sidebar section. See
93
+ [Automations](docs/automations.md).
94
+ - **Start at login from the consoles.** Both the web console (Gateway card, last setup step) and the
95
+ terminal console (F3, the Finish step) have a **Start at login** switch that changes the login item
96
+ without restarting the gateway.
97
+ - **The terminal console on a headless machine** (`abstractgateway-console` 0.11.0): a Network
98
+ screen that shows the saved and the running setting and offers the restart, Apps that give the link
99
+ and the tunnel command instead of opening a browser, voice and engine states, and the local
100
+ gateway pointer. Neither terminal console tries to open a browser on a machine without a display.
101
+ - `--ask-wait SECONDS` (Windows: `-AskWait`) sets how long a timed question waits (default 25, at
102
+ most 25). `--console-wait` remains as an alias.
103
+
104
+ ### Changed
105
+
106
+ - **One flag for the gateway address: `--gateway-url`** in every app and terminal client
107
+ (`--url` for the gateway terminal console and `--gateway` for AbstractCode remain as aliases). The
108
+ installer summary and the docs use it; with `--with-apps` the installer prints
109
+ `npx -y @abstractframework/<app>@<version> --gateway-url <gateway>` for all five apps.
110
+ - **Start at login is asked whenever a person is at a terminal**, not only with `--interactive`:
111
+ `curl … | sh` asks it on your terminal (`/dev/tty`), Enter = yes. Nobody answering within
112
+ `--ask-wait`, an install without a terminal (a script, CI, a provisioning tool) and `--yes` keep
113
+ the previous choice on a re-run and leave start at login **off** on a first install (it was on);
114
+ the summary then says how to turn it on: the **Start at login** switch in either console, or
115
+ `abstractgateway service enable`. A re-run reads the login item's own state, so a change made
116
+ with a console's switch is kept. `install.ps1` asks the same question on an interactive console
117
+ (it registered the login entry without asking). `--interactive` waits for answers without a time
118
+ limit; `--no-service` still asks nothing.
119
+ - **On a remote or headless session** (SSH, or Linux without a display) with a terminal, the
120
+ installer offers the terminal console at the end ("Press Enter within 25 s"), signed in; nobody answering skips it, so automation never blocks.
121
+ Over SSH it no longer opens a browser on the remote machine. `--no-open` skips both.
122
+ - **History replay keeps whole messages up to 50,000 tokens** (AbstractRuntime 0.7.0): growing
123
+ automations, session chats, run chat, the docs assistants and entity visits replay the newest whole
124
+ turns up to 50,000 tokens. No message is cut; the former 40-message, 24,000-character and
125
+ per-message caps are gone. Each run records how many earlier messages were not replayed, and the
126
+ clients say so.
127
+ - **Voice says what it can do** (AbstractVoice 0.13.0, AbstractCore 2.18.0). Voice listings name
128
+ the providers that cannot run here and why, instead of an empty list; cloud voice providers are
129
+ listed as needing a key until one is configured; a capability route whose engine is not installed
130
+ reports `engine_missing` with the install command; an OpenAI key saved in the Providers screen
131
+ reaches voice. The installer adds local voice to every install profile: Supertonic text-to-speech
132
+ and Whisper speech-to-text (`abstractvoice[supertonic,stt]`), both CPU, from prebuilt wheels
133
+ (skipped where no wheels exist: musl Linux / Alpine, macOS before 13; Whisper on Windows ARM64).
134
+ Voice never fails an install: where its packages do not install the gateway is installed without
135
+ it. The summary's `Voice:` line says what was installed, and a re-run that adds voice restarts the
136
+ gateway to load it.
137
+ - **Observer: Edit opens the form, and a calmer Automations page** (`@abstractframework/observer`
138
+ 0.2.0). A row's **Edit** opens the automation's edit form at once, prefilled (title, task,
139
+ interval, context, tools); action buttons carry icons; a workspace folder can be browsed from the
140
+ browser; **Discuss** opens a chat with a fork of the automation; a run's **Ask** chat sends the
141
+ whole conversation.
142
+ - **Apple silicon model fits account for the GPU memory limit** (AbstractCore 2.18.0): a model that
143
+ fits once macOS raises its limit reads `needs_gpu_limit` with the exact command.
144
+
145
+ ### Security
146
+
147
+ - **DNS-rebinding protection in the browser apps**: an app treats a browser as on this machine only
148
+ when both its address and the page's host are loopback, so a rebinding page can neither reveal a
149
+ folder nor change the gateway address. Continuum's local-only pages answer on `localhost` or
150
+ `127.0.0.1` only. The gateway's app proxy refuses requests with another origin or an invalid host.
151
+ - **Server-held keys are spent only for authenticated requests** (AbstractCore 2.18.0): with a
152
+ saved or environment OpenAI key, unauthenticated requests to the AbstractVoice audio routes, the
153
+ audio and vision discovery routes, OpenAI-backed vision generation and the capability discovery
154
+ routes get `401`, also with `ABSTRACTCORE_SERVER_ALLOW_UNAUTHENTICATED=1`; an explicit
155
+ `X-AbstractCore-Provider-API-Key` is spent instead. The music route follows the same rule while
156
+ the server holds a music backend key.
157
+ - The local gateway pointer is written without following links, with mode 0600, and readers reject
158
+ a pointer that other users can write.
159
+
160
+ ### Changed (pins)
161
+
162
+ - **abstractgateway 0.7.0** (was 0.6.0): apps through `/apps/<app>/`, the local gateway pointer,
163
+ start at login from the consoles, cloud voice providers listed, the history window on every chat
164
+ route, and the terminal console 0.11.0.
165
+ - **abstractcore 2.18.0** (was 2.17.0): `engine_missing`, `needs_gpu_limit`, the saved OpenAI key
166
+ for voice, the key guards above, and `abstractcore-console` 0.4.0.
167
+ - **AbstractRuntime 0.7.1** (was 0.6.0): the 50,000-token history window, recorded in each run;
168
+ images in replayed history stay images, and an image counts as a flat 512 tokens in the window.
169
+ Library callers of `session_chat_messages` and `automation_timeline_messages` should read its
170
+ changelog's Breaking note.
171
+ - **abstractagent 0.3.17** (was 0.3.16): ReAct sends the runtime's history window when the host
172
+ asks for it.
173
+ - **abstractvoice 0.13.0** (was 0.12.0): engine status and unavailable-provider reasons, Qwen3-ASR
174
+ on Transformers 5.x, Qwen3-TTS predictor and sampler flags.
175
+ - **abstractassistant 0.9.0** (was 0.8.0): the macOS app finds a gateway through the local gateway
176
+ pointer; automation cards say their state in words.
177
+ - npm: **@abstractframework/flow 0.4.0**, **code 0.6.0**, **observer 0.2.0**, **continuum 0.4.0**
178
+ and **entity 0.3.0**, all served through the gateway at `/apps/<app>/` and taking
179
+ `--gateway-url`.
180
+ - crates.io: **abstractgateway-console 0.11.0**, **abstractcore-console 0.4.0** and
181
+ **abstractcode 0.7.0**.
182
+ - The pins apply to the base install and to the `apple` / `gpu` extras. Unchanged:
183
+ abstractskill 0.3.0, AbstractMemory 0.3.0, abstractsemantics 0.0.5, abstractvision 0.3.30,
184
+ abstractmusic 0.1.15 and `abstracttui` 0.6.0.
185
+
7
186
  ## [0.5.0] - 2026-09-27
8
187
 
9
188
  Automations, a terminal console installed by default, and a headless setup path: installing and
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.5.0
3
+ Version: 0.6.1
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,23 +23,23 @@ 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.6.0
27
- Requires-Dist: abstractassistant==0.8.0
28
- Requires-Dist: abstractcore==2.17.0
29
- Requires-Dist: AbstractRuntime==0.6.0
30
- Requires-Dist: abstractagent==0.3.16
26
+ Requires-Dist: abstractgateway==0.7.1
27
+ Requires-Dist: abstractassistant==0.9.1
28
+ Requires-Dist: abstractcore==2.18.0
29
+ Requires-Dist: AbstractRuntime==0.7.1
30
+ Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
33
33
  Requires-Dist: abstractsemantics==0.0.5
34
- Requires-Dist: abstractvoice==0.12.0
34
+ Requires-Dist: abstractvoice==0.13.0
35
35
  Requires-Dist: abstractvision==0.3.30
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Provides-Extra: apple
38
- Requires-Dist: abstractgateway[apple]==0.6.0; extra == "apple"
39
- Requires-Dist: abstractassistant[apple]==0.8.0; platform_system == "Darwin" and extra == "apple"
38
+ Requires-Dist: abstractgateway[apple]==0.7.1; extra == "apple"
39
+ Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
40
40
  Provides-Extra: gpu
41
- Requires-Dist: abstractgateway[gpu]==0.6.0; extra == "gpu"
42
- Requires-Dist: abstractassistant[gpu]==0.8.0; extra == "gpu"
41
+ Requires-Dist: abstractgateway[gpu]==0.7.1; extra == "gpu"
42
+ Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
43
43
  Dynamic: license-file
44
44
 
45
45
  # AbstractFramework
@@ -64,11 +64,14 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
64
64
  ## Quick start
65
65
 
66
66
  The installer sets up the gateway in your user account (no admin password, no system Python),
67
- asks whether to start it at login, starts it on `127.0.0.1:8080`, and opens its web console in
68
- your browser already signed in. A first-run guide then sets up a local engine (Ollama, LM Studio,
69
- MLX, llama.cpp), downloads a model that fits your machine, and lists the apps. The installer also
70
- builds the terminal console, `abstractgateway-console`, which runs the same guide on a server without
71
- a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
67
+ with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
68
+ at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
69
+ on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
70
+ then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
71
+ machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
72
+ installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
73
+ a server without a browser and offers itself at the end of an install over SSH
74
+ ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
72
75
 
73
76
  - **Mac, no Terminal:** download and double-click
74
77
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -78,7 +81,7 @@ a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machi
78
81
  - **macOS / Linux, one line:**
79
82
 
80
83
  ```bash
81
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
84
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
82
85
  ```
83
86
 
84
87
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -160,7 +163,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
160
163
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
161
164
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
162
165
  web console and its first-run guide. `abstractgateway claim` mints a new link;
163
- `abstractgateway service install` starts the gateway at login.
166
+ `abstractgateway service enable` (or the console's **Start at login** switch) starts the gateway at
167
+ login.
164
168
 
165
169
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
166
170
  another data folder or allow another browser origin:
@@ -182,17 +186,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
182
186
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
183
187
  sign-in token.
184
188
 
185
- Monitor runs from a browser, or from a terminal with the gateway console:
189
+ Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
190
+ page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
191
+ (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
186
192
 
187
193
  ```bash
188
- npx @abstractframework/observer # open http://localhost:3001
194
+ npx @abstractframework/observer --gateway-url http://127.0.0.1:8080 # or run one on its own
189
195
 
190
196
  cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
191
- abstractgateway-console --url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
197
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
192
198
  ```
193
199
 
194
200
  Container images are published for the gateway and the AbstractCore server:
195
- `ghcr.io/lpalbou/abstractgateway:0.6.0` and `ghcr.io/lpalbou/abstractcore-server:2.17.0`.
201
+ `ghcr.io/lpalbou/abstractgateway:0.7.1` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
196
202
 
197
203
  For artifact and runtime-resource investigation, see
198
204
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -230,7 +236,7 @@ See [Agent sessions](docs/agent-sessions.md).
230
236
 
231
237
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
232
238
 
233
- 1. Open the Flow Editor (`npx @abstractframework/flow`)
239
+ 1. Open the Flow Editor (the console's **Apps** page, or `npx @abstractframework/flow --gateway-url <url>`)
234
240
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
235
241
  3. Export a `.flow` bundle into your own bundle directory and point `ABSTRACTGATEWAY_FLOWS_DIR` at it (or publish it through the Gateway API)
236
242
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -290,13 +296,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
290
296
  |---|---|---|
291
297
  | [AbstractCode](https://github.com/lpalbou/AbstractCode) | Terminal agentic dev client (Rust, on the AbstractTUI engine) — durable sessions, tool approvals, the gateway's default workflow, workspace files, live replies | `cargo install abstractcode`, or a prebuilt binary from the [GitHub release](https://github.com/lpalbou/AbstractCode/releases) |
292
298
  | [AbstractAssistant](https://github.com/lpalbou/AbstractAssistant) | macOS tray client — gateway-native, follows the gateway's default workflow or your pick, live replies, voice support | `pip install abstractassistant`, or **Open** in the gateway console (starts it signed in) |
293
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
294
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
295
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
296
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and twelve screens, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
299
+ | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | the gateway console's **Apps** page (served at `/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` |
300
+ | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | the gateway console's **Apps** page (served at `/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` |
301
+ | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | the gateway console's **Apps** page (served at `/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` |
302
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and screens, Network and Apps included, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
297
303
  | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
298
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
299
- | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
304
+ | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | the gateway console's **Apps** page (served at `/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` |
305
+ | **Flow Editor** | Visual workflow authoring in the browser | the gateway console's **Apps** page (served at `/apps/flow/`), or `npx @abstractframework/flow --gateway-url <url>` |
300
306
 
301
307
  ### Shared libraries
302
308
 
@@ -338,7 +344,7 @@ pip install "abstractframework[gpu]"
338
344
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
339
345
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
340
346
 
341
- ### Release matrix (abstractframework 0.5.0)
347
+ ### Release matrix (abstractframework 0.6.1)
342
348
 
343
349
  `abstractframework` pins every Python package with `==`, so one version of the
344
350
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -347,28 +353,28 @@ and tested together.
347
353
 
348
354
  | Registry | Package | Version |
349
355
  |---|---|---|
350
- | PyPI | `abstractgateway` | 0.6.0 |
351
- | PyPI | `abstractassistant` | 0.8.0 |
352
- | PyPI | `abstractcore` | 2.17.0 |
353
- | PyPI | `AbstractRuntime` | 0.6.0 |
354
- | PyPI | `abstractagent` | 0.3.16 |
356
+ | PyPI | `abstractgateway` | 0.7.1 |
357
+ | PyPI | `abstractassistant` | 0.9.1 |
358
+ | PyPI | `abstractcore` | 2.18.0 |
359
+ | PyPI | `AbstractRuntime` | 0.7.1 |
360
+ | PyPI | `abstractagent` | 0.3.17 |
355
361
  | PyPI | `abstractskill` | 0.3.0 |
356
362
  | PyPI | `AbstractMemory` | 0.3.0 |
357
363
  | PyPI | `abstractsemantics` | 0.0.5 |
358
- | PyPI | `abstractvoice` | 0.12.0 |
364
+ | PyPI | `abstractvoice` | 0.13.0 |
359
365
  | PyPI | `abstractvision` | 0.3.30 |
360
366
  | PyPI | `abstractmusic` | 0.1.15 |
361
- | npm | `@abstractframework/flow` | 0.3.22 |
362
- | npm | `@abstractframework/code` | 0.5.0 |
363
- | npm | `@abstractframework/observer` | 0.1.14 |
364
- | npm | `@abstractframework/continuum` | 0.3.2 |
365
- | npm | `@abstractframework/entity` | 0.2.2 |
366
- | crates.io | `abstractcode` | 0.6.0 |
367
- | crates.io | `abstractgateway-console` | 0.10.0 |
368
- | crates.io | `abstractcore-console` | 0.3.0 |
367
+ | npm | `@abstractframework/flow` | 0.4.0 |
368
+ | npm | `@abstractframework/code` | 0.6.1 |
369
+ | npm | `@abstractframework/observer` | 0.2.1 |
370
+ | npm | `@abstractframework/continuum` | 0.4.0 |
371
+ | npm | `@abstractframework/entity` | 0.3.0 |
372
+ | crates.io | `abstractcode` | 0.7.1 |
373
+ | crates.io | `abstractgateway-console` | 0.11.0 |
374
+ | crates.io | `abstractcore-console` | 0.4.0 |
369
375
  | crates.io | `abstracttui` | 0.6.0 |
370
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.6.0 (`gpu-latest` / `<version>-gpu` experimental) |
371
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.17.0 |
376
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.1 (`gpu-latest` / `<version>-gpu` experimental) |
377
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
372
378
 
373
379
  Optional add-ons that are not part of any profile install separately:
374
380
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -20,11 +20,14 @@ Think of it as an **agentic OS**: durable runs + replay-first observability + mu
20
20
  ## Quick start
21
21
 
22
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. The installer also
26
- builds the terminal console, `abstractgateway-console`, which runs the same guide on a server without
27
- a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
23
+ with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
24
+ at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
25
+ on `127.0.0.1:8080`, and opens its web console in your browser already signed in. A first-run guide
26
+ then sets up a local engine (Ollama, LM Studio, MLX, llama.cpp), downloads a model that fits your
27
+ machine, and lists the apps; the gateway serves them on its own address at `/apps/<app>/`. The
28
+ installer also builds the terminal console, `abstractgateway-console`, which runs the same guide on
29
+ a server without a browser and offers itself at the end of an install over SSH
30
+ ([Headless or remote machine](docs/install.md#headless-or-remote-machine)).
28
31
 
29
32
  - **Mac, no Terminal:** download and double-click
30
33
  [AbstractFramework-Installer.pkg](https://github.com/lpalbou/AbstractFramework/releases/latest/download/AbstractFramework-Installer.pkg).
@@ -34,7 +37,7 @@ a browser ([Headless or remote machine](docs/install.md#headless-or-remote-machi
34
37
  - **macOS / Linux, one line:**
35
38
 
36
39
  ```bash
37
- curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh -s -- --interactive
40
+ curl -LsSf https://raw.githubusercontent.com/lpalbou/AbstractFramework/main/scripts/install.sh | sh
38
41
  ```
39
42
 
40
43
  - **Windows 10 22H2+ / 11** (PowerShell):
@@ -116,7 +119,8 @@ With no auth configured, `abstractgateway serve` binds `127.0.0.1:8080`, enables
116
119
  creates `default/admin` in the per-user data folder, and prints a one-time sign-in link
117
120
  (`http://127.0.0.1:8080/console#claim=…`, valid 10 minutes, this machine only). Open it to reach the
118
121
  web console and its first-run guide. `abstractgateway claim` mints a new link;
119
- `abstractgateway service install` starts the gateway at login.
122
+ `abstractgateway service enable` (or the console's **Start at login** switch) starts the gateway at
123
+ login.
120
124
 
121
125
  Browser apps on `http://localhost:*` and `http://127.0.0.1:*` may always call it. To choose
122
126
  another data folder or allow another browser origin:
@@ -138,17 +142,19 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
138
142
  `ABSTRACTGATEWAY_AUTH_TOKEN` remains a legacy server/operator bearer token; it is not a browser
139
143
  sign-in token.
140
144
 
141
- Monitor runs from a browser, or from a terminal with the gateway console:
145
+ Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
146
+ page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
147
+ (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
142
148
 
143
149
  ```bash
144
- npx @abstractframework/observer # open http://localhost:3001
150
+ npx @abstractframework/observer --gateway-url http://127.0.0.1:8080 # or run one on its own
145
151
 
146
152
  cargo install abstractgateway-console # Rust 1.87+; the installer builds it for you
147
- abstractgateway-console --url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
153
+ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token> # <data dir>/auth/bootstrap-admin-token
148
154
  ```
149
155
 
150
156
  Container images are published for the gateway and the AbstractCore server:
151
- `ghcr.io/lpalbou/abstractgateway:0.6.0` and `ghcr.io/lpalbou/abstractcore-server:2.17.0`.
157
+ `ghcr.io/lpalbou/abstractgateway:0.7.1` and `ghcr.io/lpalbou/abstractcore-server:2.18.0`.
152
158
 
153
159
  For artifact and runtime-resource investigation, see
154
160
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -186,7 +192,7 @@ See [Agent sessions](docs/agent-sessions.md).
186
192
 
187
193
  AbstractFlow lets you author complex agentic orchestration as portable `.flow` bundles:
188
194
 
189
- 1. Open the Flow Editor (`npx @abstractframework/flow`)
195
+ 1. Open the Flow Editor (the console's **Apps** page, or `npx @abstractframework/flow --gateway-url <url>`)
190
196
  2. Build a workflow: LLM steps, tool steps, branching, loops, subflows
191
197
  3. Export a `.flow` bundle into your own bundle directory and point `ABSTRACTGATEWAY_FLOWS_DIR` at it (or publish it through the Gateway API)
192
198
  4. Run it from any gateway-backed client (Observer, AbstractAssistant, Code Web UI, your app)
@@ -246,13 +252,13 @@ The ecosystem, grouped by layer. Each name links to the package's repository.
246
252
  |---|---|---|
247
253
  | [AbstractCode](https://github.com/lpalbou/AbstractCode) | Terminal agentic dev client (Rust, on the AbstractTUI engine) — durable sessions, tool approvals, the gateway's default workflow, workspace files, live replies | `cargo install abstractcode`, or a prebuilt binary from the [GitHub release](https://github.com/lpalbou/AbstractCode/releases) |
248
254
  | [AbstractAssistant](https://github.com/lpalbou/AbstractAssistant) | macOS tray client — gateway-native, follows the gateway's default workflow or your pick, live replies, voice support | `pip install abstractassistant`, or **Open** in the gateway console (starts it signed in) |
249
- | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | `npx @abstractframework/observer` |
250
- | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | `npx @abstractframework/entity` |
251
- | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | `npx @abstractframework/continuum` |
252
- | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and twelve screens, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
255
+ | [AbstractObserver](https://github.com/lpalbou/AbstractObserver) | Browser UI — monitor, control, and schedule gateway runs | the gateway console's **Apps** page (served at `/apps/observer/`), or `npx @abstractframework/observer --gateway-url <url>` |
256
+ | [AbstractEntity](https://github.com/lpalbou/AbstractEntity) | Summoned-entity manager — roster, blueprint (cognition map + editing), chat drawer, live replay | the gateway console's **Apps** page (served at `/apps/entity/`), or `npx @abstractframework/entity --gateway-url <url>` |
257
+ | [AbstractContinuum](https://github.com/lpalbou/AbstractContinuum) | Continuous iterative development and deployment console | the gateway console's **Apps** page (served at `/apps/continuum/`), or `npx @abstractframework/continuum --gateway-url <url>` |
258
+ | **Gateway consoles** | Operator consoles for a running gateway: web at `/console` (first-run guide, Models, Engines, providers, users), terminal via `abstractgateway-console` (the same setup guide and screens, Network and Apps included, for headless hosts) | built into `abstractgateway`; built by the installer, or `cargo install abstractgateway-console` |
253
259
  | **Core consoles** | Consoles for AbstractCore: web at `/console` of `abstractcore serve`, terminal via `abstractcore-console` (config, Models, Engines) | built into `abstractcore`; `cargo install abstractcore-console` |
254
- | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | `npx @abstractframework/code` |
255
- | **Flow Editor** | Visual workflow authoring in the browser | `npx @abstractframework/flow` |
260
+ | **Code Web UI** | Browser client of AbstractCode (gateway-backed): workflow selector, Files tab, live replies | the gateway console's **Apps** page (served at `/apps/code/`), or `npx @abstractframework/code --gateway-url <url>` |
261
+ | **Flow Editor** | Visual workflow authoring in the browser | the gateway console's **Apps** page (served at `/apps/flow/`), or `npx @abstractframework/flow --gateway-url <url>` |
256
262
 
257
263
  ### Shared libraries
258
264
 
@@ -294,7 +300,7 @@ pip install "abstractframework[gpu]"
294
300
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
295
301
  | GPU | `pip install "abstractframework[gpu]"` | Linux / Windows with a CUDA or ROCm GPU | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
296
302
 
297
- ### Release matrix (abstractframework 0.5.0)
303
+ ### Release matrix (abstractframework 0.6.1)
298
304
 
299
305
  `abstractframework` pins every Python package with `==`, so one version of the
300
306
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -303,28 +309,28 @@ and tested together.
303
309
 
304
310
  | Registry | Package | Version |
305
311
  |---|---|---|
306
- | PyPI | `abstractgateway` | 0.6.0 |
307
- | PyPI | `abstractassistant` | 0.8.0 |
308
- | PyPI | `abstractcore` | 2.17.0 |
309
- | PyPI | `AbstractRuntime` | 0.6.0 |
310
- | PyPI | `abstractagent` | 0.3.16 |
312
+ | PyPI | `abstractgateway` | 0.7.1 |
313
+ | PyPI | `abstractassistant` | 0.9.1 |
314
+ | PyPI | `abstractcore` | 2.18.0 |
315
+ | PyPI | `AbstractRuntime` | 0.7.1 |
316
+ | PyPI | `abstractagent` | 0.3.17 |
311
317
  | PyPI | `abstractskill` | 0.3.0 |
312
318
  | PyPI | `AbstractMemory` | 0.3.0 |
313
319
  | PyPI | `abstractsemantics` | 0.0.5 |
314
- | PyPI | `abstractvoice` | 0.12.0 |
320
+ | PyPI | `abstractvoice` | 0.13.0 |
315
321
  | PyPI | `abstractvision` | 0.3.30 |
316
322
  | PyPI | `abstractmusic` | 0.1.15 |
317
- | npm | `@abstractframework/flow` | 0.3.22 |
318
- | npm | `@abstractframework/code` | 0.5.0 |
319
- | npm | `@abstractframework/observer` | 0.1.14 |
320
- | npm | `@abstractframework/continuum` | 0.3.2 |
321
- | npm | `@abstractframework/entity` | 0.2.2 |
322
- | crates.io | `abstractcode` | 0.6.0 |
323
- | crates.io | `abstractgateway-console` | 0.10.0 |
324
- | crates.io | `abstractcore-console` | 0.3.0 |
323
+ | npm | `@abstractframework/flow` | 0.4.0 |
324
+ | npm | `@abstractframework/code` | 0.6.1 |
325
+ | npm | `@abstractframework/observer` | 0.2.1 |
326
+ | npm | `@abstractframework/continuum` | 0.4.0 |
327
+ | npm | `@abstractframework/entity` | 0.3.0 |
328
+ | crates.io | `abstractcode` | 0.7.1 |
329
+ | crates.io | `abstractgateway-console` | 0.11.0 |
330
+ | crates.io | `abstractcore-console` | 0.4.0 |
325
331
  | crates.io | `abstracttui` | 0.6.0 |
326
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.6.0 (`gpu-latest` / `<version>-gpu` experimental) |
327
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.17.0 |
332
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.1 (`gpu-latest` / `<version>-gpu` experimental) |
333
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.18.0 |
328
334
 
329
335
  Optional add-ons that are not part of any profile install separately:
330
336
  `pip install abstract3d` (0.3.1) and `pip install abstractcamera` (0.2.0). `abstractskill` (pinned above)
@@ -10,22 +10,22 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.5.0"
13
+ __version__ = "0.6.1"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.17.0",
19
- "abstractruntime": "0.6.0",
20
- "abstractagent": "0.3.16",
21
- "abstractgateway": "0.6.0",
18
+ "abstractcore": "2.18.0",
19
+ "abstractruntime": "0.7.1",
20
+ "abstractagent": "0.3.17",
21
+ "abstractgateway": "0.7.1",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
25
- "abstractvoice": "0.12.0",
25
+ "abstractvoice": "0.13.0",
26
26
  "abstractvision": "0.3.30",
27
27
  "abstractmusic": "0.1.15",
28
- "abstractassistant": "0.8.0",
28
+ "abstractassistant": "0.9.1",
29
29
  }
30
30
 
31
31
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -43,19 +43,19 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
43
43
  }
44
44
 
45
45
  NPM_RELEASE_VERSIONS: dict[str, str] = {
46
- "@abstractframework/flow": "0.3.22",
47
- "@abstractframework/code": "0.5.0",
48
- "@abstractframework/observer": "0.1.14",
49
- "@abstractframework/continuum": "0.3.2",
50
- "@abstractframework/entity": "0.2.2",
46
+ "@abstractframework/flow": "0.4.0",
47
+ "@abstractframework/code": "0.6.1",
48
+ "@abstractframework/observer": "0.2.1",
49
+ "@abstractframework/continuum": "0.4.0",
50
+ "@abstractframework/entity": "0.3.0",
51
51
  }
52
52
 
53
53
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
54
- # or by the bootstrap scripts: the gateway console by default, abstractcode with --with-code-cli).
54
+ # or by the bootstrap scripts: the gateway console and abstractcode by default).
55
55
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
56
- "abstractgateway-console": "0.10.0",
57
- "abstractcore-console": "0.3.0",
58
- "abstractcode": "0.6.0",
56
+ "abstractgateway-console": "0.11.0",
57
+ "abstractcore-console": "0.4.0",
58
+ "abstractcode": "0.7.1",
59
59
  "abstracttui": "0.6.0",
60
60
  }
61
61
 
@@ -38,10 +38,14 @@ BOOTSTRAP_FLAGS: list[dict[str, str]] = [
38
38
  "summary": "Skip the terminal console. By default abstractgateway-console is built "
39
39
  "with cargo (install.sh adds Rust through rustup when cargo is missing; "
40
40
  "needs a C compiler)."},
41
- {"sh": "--with-code-cli", "ps": "-WithCodeCli", "env": "",
42
- "summary": "cargo install abstractcode (terminal client) when cargo exists."},
43
- {"sh": "--with-core-cli", "ps": "-WithCoreCli", "env": "",
44
- "summary": "Also expose the abstractcore command (--with-executables-from abstractcore)."},
41
+ {"sh": "--no-code-cli", "ps": "-NoCodeCli", "env": "",
42
+ "summary": "Skip AbstractCode's terminal client. By default abstractcode is built with "
43
+ "the terminal console's cargo, into the same folder (--with-code-cli, the "
44
+ "old opt-in, is accepted)."},
45
+ {"sh": "--no-core-cli", "ps": "-NoCoreCli", "env": "",
46
+ "summary": "Do not expose AbstractCore's commands (abstractcore, its apps) and "
47
+ "abstractvoice, abstractvision, abstractmusic next to the gateway's "
48
+ "(--with-core-cli, the old opt-in, is accepted)."},
45
49
  {"sh": "--with-ollama", "ps": "-WithOllama", "env": "",
46
50
  "summary": "Run Ollama's official installer (Linux/macOS may ask for sudo)."},
47
51
  {"sh": "--with-lmstudio", "ps": "-WithLmStudio", "env": "",
@@ -50,7 +54,8 @@ BOOTSTRAP_FLAGS: list[dict[str, str]] = [
50
54
  {"sh": "--no-service", "ps": "-NoService", "env": "",
51
55
  "summary": "Do not register a login service; start the gateway in the background."},
52
56
  {"sh": "--no-start", "ps": "-NoStart", "env": "", "summary": "Install only."},
53
- {"sh": "--no-open", "ps": "-NoOpen", "env": "", "summary": "Do not open the browser."},
57
+ {"sh": "--no-open", "ps": "-NoOpen", "env": "",
58
+ "summary": "Do not open the browser (on a remote or headless session: do not open the terminal console)."},
54
59
  {"sh": "--print", "ps": "-Print", "env": "",
55
60
  "summary": "Dry run: preflight, then print every command; change nothing."},
56
61
  {"sh": "--uninstall [--purge]", "ps": "-Uninstall [-Purge]", "env": "",