abstractframework 0.6.3__tar.gz → 0.7.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 (196) hide show
  1. {abstractframework-0.6.3 → abstractframework-0.7.1}/CHANGELOG.md +126 -0
  2. {abstractframework-0.6.3/abstractframework.egg-info → abstractframework-0.7.1}/PKG-INFO +23 -22
  3. {abstractframework-0.6.3 → abstractframework-0.7.1}/README.md +14 -13
  4. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework/__init__.py +13 -10
  5. {abstractframework-0.6.3 → abstractframework-0.7.1/abstractframework.egg-info}/PKG-INFO +23 -22
  6. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework.egg-info/SOURCES.txt +2 -0
  7. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework.egg-info/requires.txt +8 -8
  8. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/README.md +3 -3
  9. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/api.md +7 -7
  10. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/automations.md +66 -9
  11. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/configuration.md +23 -0
  12. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/faq.md +23 -3
  13. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/getting-started.md +6 -0
  14. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/install.md +27 -17
  15. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/implementation-plan.md +1 -1
  16. {abstractframework-0.6.3 → abstractframework-0.7.1}/llms-full.txt +196 -76
  17. {abstractframework-0.6.3 → abstractframework-0.7.1}/llms.txt +4 -4
  18. {abstractframework-0.6.3 → abstractframework-0.7.1}/pyproject.toml +9 -9
  19. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/install.sh +316 -17
  20. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/tests/test_install_user_path.sh +242 -9
  21. {abstractframework-0.6.3 → abstractframework-0.7.1}/tests/test_install_profiles.py +7 -1
  22. abstractframework-0.7.1/tests/test_install_ps1_own_gateway.py +295 -0
  23. abstractframework-0.7.1/tests/test_install_sh_gpu_twin.py +45 -0
  24. {abstractframework-0.6.3 → abstractframework-0.7.1}/LICENSE +0 -0
  25. {abstractframework-0.6.3 → abstractframework-0.7.1}/MANIFEST.in +0 -0
  26. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework/__main__.py +0 -0
  27. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework/cli.py +0 -0
  28. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework/install_manifest.py +0 -0
  29. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework/py.typed +0 -0
  30. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework.egg-info/dependency_links.txt +0 -0
  31. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework.egg-info/entry_points.txt +0 -0
  32. {abstractframework-0.6.3 → abstractframework-0.7.1}/abstractframework.egg-info/top_level.txt +0 -0
  33. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0001-layered-architecture.md +0 -0
  34. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0002-effect-system-design.md +0 -0
  35. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0003-tool-system-architecture.md +0 -0
  36. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0004-observability-strategy.md +0 -0
  37. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0005-memory-architecture.md +0 -0
  38. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0006-durable-tool-execution.md +0 -0
  39. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  40. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0008-token-terminology.md +0 -0
  41. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  42. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  43. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  44. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0012-portable-workflowartifact.md +0 -0
  45. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  46. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  47. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  48. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  49. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  50. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  51. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  52. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  53. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  54. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  55. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  56. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  57. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  58. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  59. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  60. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  61. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  62. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  63. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  64. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  65. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  66. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  67. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0035-capability-routing-defaults.md +0 -0
  68. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  69. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  70. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  71. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/README.md +0 -0
  72. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/memory-recall-levels.md +0 -0
  73. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  74. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  75. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  76. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  77. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  78. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  79. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  80. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  81. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/agent-sessions.md +0 -0
  82. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/architecture.md +0 -0
  83. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/claude/README.md +0 -0
  84. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/claude/abstractframework-fit.md +0 -0
  85. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/claude/claude-skills-overview.md +0 -0
  86. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/claude/claude-skills-sources.md +0 -0
  87. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/claude/claude-skills-top-20.md +0 -0
  88. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/comparisons/README.md +0 -0
  89. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/glossary.md +0 -0
  90. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/LANDING.md +0 -0
  91. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/README.md +0 -0
  92. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/agent-skills.md +0 -0
  93. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/agent-vs-llm.md +0 -0
  94. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/agora-workflow-agent.md +0 -0
  95. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/apple-local-gateway-flow.md +0 -0
  96. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/capability-plugins.md +0 -0
  97. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/capability-routing-defaults.md +0 -0
  98. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/deployment-iphone.md +0 -0
  99. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/deployment-topologies.md +0 -0
  100. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/deployment-web.md +0 -0
  101. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/email-integration.md +0 -0
  102. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/event-inbox-agent.md +0 -0
  103. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/flow-and-kg-memory.md +0 -0
  104. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/gateway-security.md +0 -0
  105. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/headless-swarm.md +0 -0
  106. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/process-manager-env-vars.md +0 -0
  107. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/prompt-caching.md +0 -0
  108. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/runtime-artifacts.md +0 -0
  109. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/runtime-scope.md +0 -0
  110. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/scheduled-workflows.md +0 -0
  111. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/summoned-entities.md +0 -0
  112. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/telegram-integration.md +0 -0
  113. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/guide/workflow-bundles.md +0 -0
  114. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/README.md +0 -0
  115. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/components.md +0 -0
  116. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/operations-and-support.md +0 -0
  117. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/release-and-manifest.md +0 -0
  118. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/security-and-os-blocks.md +0 -0
  119. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/strategy.md +0 -0
  120. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/installers/user-journeys.md +0 -0
  121. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/prompts/agora-collaboration.md +0 -0
  122. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/README.md +0 -0
  123. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/email-inbox-agent.md +0 -0
  124. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/gateway-first-local-dev.md +0 -0
  125. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/offline-coding-assistant.md +0 -0
  126. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/phone-thin-client.md +0 -0
  127. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/specialized-agent-flow.md +0 -0
  128. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/telegram-permanent-contact.md +0 -0
  129. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  130. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/README.md +0 -0
  131. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  132. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  133. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  134. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  135. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/claude-agent-skills-overview.md +0 -0
  136. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/claude-agent-skills-sources.md +0 -0
  137. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/skills/claude-agent-skills-top-20.md +0 -0
  138. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/troubleshooting.md +0 -0
  139. {abstractframework-0.6.3 → abstractframework-0.7.1}/docs/workspace-scripts.md +0 -0
  140. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/af-local.sh +0 -0
  141. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/af.sh +0 -0
  142. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/agora_react_flow_smoke.py +0 -0
  143. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/assistant-local.sh +0 -0
  144. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/assistant.sh +0 -0
  145. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/build.sh +0 -0
  146. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/cache_probe_local_backends.py +0 -0
  147. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/cache_steer_repl.py +0 -0
  148. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/check_identity_sync.py +0 -0
  149. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/clone.sh +0 -0
  150. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/code-local.sh +0 -0
  151. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/code.sh +0 -0
  152. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/commit.sh +0 -0
  153. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/console-local.sh +0 -0
  154. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/console.sh +0 -0
  155. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/core_operator_drive.py +0 -0
  156. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/deps.sh +0 -0
  157. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/entity-local.sh +0 -0
  158. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/entity.sh +0 -0
  159. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/event_inbox_flow_smoke.py +0 -0
  160. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/flow-local.sh +0 -0
  161. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/flow.sh +0 -0
  162. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/gateway-flow-local.sh +0 -0
  163. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/gateway-flow.sh +0 -0
  164. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/gateway-local.sh +0 -0
  165. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/gateway.sh +0 -0
  166. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/gen_llms_full.py +0 -0
  167. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/headless_fleet_bridge.py +0 -0
  168. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/headless_fleet_demo.py +0 -0
  169. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/headless_steer_repl.py +0 -0
  170. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/af_inventory.py +0 -0
  171. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/af_stack.sh +0 -0
  172. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/af_supervisor.sh +0 -0
  173. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/apps_common.sh +0 -0
  174. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/build_macos_installer.sh +0 -0
  175. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/gateway_user_tokens.py +0 -0
  176. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/lib/repo_groups.sh +0 -0
  177. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/meet_castor.sh +0 -0
  178. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/observer-local.sh +0 -0
  179. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/observer.sh +0 -0
  180. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/plan_walkthrough.py +0 -0
  181. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/pull.sh +0 -0
  182. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/push.sh +0 -0
  183. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/spawn_demo_agent.sh +0 -0
  184. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/start-local.sh +0 -0
  185. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/start.sh +0 -0
  186. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/status.sh +0 -0
  187. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/steer_repl.py +0 -0
  188. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/tests/test_af_supervisor.sh +0 -0
  189. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/tests/test_inventory.sh +0 -0
  190. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/tests/test_repo_scripts.sh +0 -0
  191. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/uninstall.sh +0 -0
  192. {abstractframework-0.6.3 → abstractframework-0.7.1}/scripts/visit_resume_cache_probe.py +0 -0
  193. {abstractframework-0.6.3 → abstractframework-0.7.1}/setup.cfg +0 -0
  194. {abstractframework-0.6.3 → abstractframework-0.7.1}/tests/test_install_ps1_gpu_stack.py +0 -0
  195. {abstractframework-0.6.3 → abstractframework-0.7.1}/tests/test_install_sh_gpu_stack.py +0 -0
  196. {abstractframework-0.6.3 → abstractframework-0.7.1}/tests/test_llms_full.py +0 -0
@@ -4,6 +4,132 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.7.1] - 2026-09-30
8
+
9
+ A patch release. Pins: AbstractCore 2.20.2, AbstractRuntime 0.8.1 and AbstractGateway 0.8.1; every
10
+ other version (the terminal consoles, the browser apps, AbstractAssistant 0.10.0) is unchanged
11
+ from 0.7.0.
12
+
13
+ ### Fixed
14
+
15
+ - **Email automations never trigger themselves.** An automation set to "Email me the result" whose
16
+ filter matched its own result email ran again on every result. Every message the framework sends
17
+ automatically (notifications, sign-in codes, anything an automation sends) now carries
18
+ `Auto-Submitted: auto-generated` (RFC 3834) and an `X-AbstractFramework-Automation` header, its
19
+ Message-ID is recorded, and the mail watcher never runs an automation on your own automatic
20
+ mail. **When an email arrives** also ignores automatic mail from others (auto-replies, vacation
21
+ notices) by default; its `auto_submitted: "admit"` option turns that off. See the gateway's
22
+ email guide.
23
+ - **Voice on a light install.** Text-to-speech returned an error on a fresh light install of a
24
+ large Mac: the recommended text model there was an MLX build, which the light profile does not
25
+ install, and speech went through the text model. Speech, transcription and image generation no
26
+ longer need a text model, and recommendations only name engines your install has: without MLX
27
+ the Mac's memory tier runs on LM Studio (`qwen/qwen3.5-9b` below 24 GB, `qwen/qwen3.8-27b` from
28
+ 24 GB). A light install seeded by 0.7.0 keeps its stored route and sees it flagged; set the text
29
+ route in the console (Models, or Settings) to change it.
30
+ - The gateway no longer marks a media request's child run failed ("workflow ... not registered
31
+ (after 40 consecutive attempts)").
32
+ - A chat's email to your own address runs without asking, and "your own address" is the one **My
33
+ email** shows (your user email, else the connected mailbox's address).
34
+ - A run started through the API without a tool list gets the email tools when you turned on agent
35
+ email tools.
36
+ - Moving a model route to another provider drops the old engine's speculation setting (an LM Studio
37
+ route no longer keeps an MLX route's `native_mtp`).
38
+ - A live reply no longer misses its end when the run finished just as the gateway was reading its
39
+ stream.
40
+ - `install.sh` on Linux with an NVIDIA GPU: **The same steps by hand** now include llama.cpp's CUDA
41
+ build (the listed install line takes its CPU build).
42
+
43
+ ### Changed
44
+
45
+ - The installers do not build the AbstractCore terminal console (`abstractcore-console`); it is
46
+ listed with each release and installed with `cargo install abstractcore-console` for a
47
+ standalone `abstractcore serve` (the gateway's terminal console has its Models and Engines
48
+ screens). See [Install](docs/install.md#apps-and-tools-outside-pip).
49
+
50
+ ## [0.7.0] - 2026-09-30
51
+
52
+ Email for each user, and installer fixes. Pins: AbstractCore 2.20.1, AbstractRuntime 0.8.0,
53
+ AbstractGateway 0.8.0 and AbstractAssistant 0.10.0; the terminal consoles are
54
+ `abstractgateway-console` 0.12.0 and `abstractcore-console` 0.5.0, and the browser apps
55
+ AbstractCode web 0.7.0 and AbstractObserver 0.3.0 (built on AbstractUIC ui-kit 0.2.0 and panel-chat
56
+ 0.1.21). Every other version is unchanged from 0.6.3.
57
+
58
+ ### Added
59
+
60
+ - **Your own mailbox on the gateway.** Each user connects their own email account (IMAP/SMTP with a
61
+ password or app password, or OAuth2 for Google and Microsoft) in the web console (**Users → My
62
+ email**), the terminal console (`@` on the Users screen) or `PUT /api/gateway/me/email`. The
63
+ account is tested before it is saved, stored in the user's own data folder with its credentials
64
+ encrypted, and every connection verifies TLS. The mailbox is read-only. Each user sets a recipient
65
+ policy (allowlist or denylist of addresses and domains) and send limits (20 per hour and 100 per
66
+ day by default); every send passes them. AbstractCore on its own gets the same account, one per
67
+ install: `abstractcore email ...`, the core web console's **Email** tab and the core terminal
68
+ console's Email screen. See [Configuration](docs/configuration.md#email-accounts).
69
+ `abstractcore email connect --password-stdin` (and `--client-secret-stdin` for OAuth) reads the
70
+ secret from stdin, so it never appears on a command line (AbstractCore 2.20.1).
71
+ - **Email automations.** The Assistant, the Observer and AbstractCode's browser client offer **When
72
+ an email arrives** (the `email.received@1` trigger: typed filters on sender, recipient, subject and
73
+ attachments; hourly batches by default for automations that run a model, never more often than
74
+ every 60 seconds; each message read once), **Email me the result**, and the recipients an
75
+ automation may email without asking (only you, by default). Inbound mail reaches the agent as
76
+ untrusted data in a fixed frame; an email-triggered automation never follows links from an email
77
+ (`fetch_url` and `browser_probe` ask) unless you name those tools. See
78
+ [Email automations](docs/automations.md#email-automations).
79
+ - **Email notifications**, off until you turn them on in **My email → Notifications**: automation
80
+ results and failures (for automations set to email you), a run waiting for your approval, and
81
+ runs started with an email notice. Each notice is sent once from a durable outbox, through your
82
+ own account, to your registered address.
83
+ - **Sign-in by email**: "Forgot your token?" and "Email me a sign-in code" on the gateway's sign-in
84
+ page for users with a connected account (single-use codes, 10-minute expiry).
85
+ - **What administrators decide**: whether email, agent email tools and sign-in by email are
86
+ available, gateway-wide and per user. Agent email tools are off by default: an agent gets the
87
+ email tools only when an administrator made them available, the user's account is connected, and
88
+ the user turned them on. Administrators see a user's mailbox state, never mail.
89
+
90
+ ### Removed
91
+
92
+ - The `ABSTRACT_EMAIL_*` environment variables, the email accounts file and the gateway's email
93
+ bridge. A gateway or an AbstractCore install that still has them imports that account once into
94
+ the new settings; afterwards each variable still set is named at startup with the setting that
95
+ replaced it.
96
+
97
+ ### Fixed
98
+
99
+ - **One gateway per data directory when you re-run the installer.** A gateway of this install that
100
+ you started yourself (for example with the summary's Start line) is recognized: it listens on the
101
+ install's port and serves the same data directory, as its serve record
102
+ (`<data dir>/run/gateway-serve.json`) or its `--data-dir` says. `install.sh` and `install.ps1` now
103
+ keep that port and replace the gateway with their own start, instead of moving to the next port
104
+ and starting a second gateway on the same data. A gateway of this install started by hand on
105
+ another port is stopped too. The replacement starts the way the installer starts every gateway, so
106
+ it binds as the gateway's Network setting says (for example 127.0.0.1), not with the `--host` the
107
+ hand-started one was given. With `--no-start` (`-NoStart`, the console's Update) it keeps
108
+ running and the summary says a restart is due. A program that is not this install's gateway
109
+ keeps the port, as before.
110
+ - **The installers signal only this install's gateway.** Before any stop, the process must belong
111
+ to your user, run `abstractgateway serve` and serve this data directory; the identity is checked
112
+ again right before the signal (and before a SIGKILL). A `gateway.pid` or serve record left behind
113
+ that names another program (a reused pid) is left alone and said so.
114
+ - **Known limit on Windows with start at login on:** Windows does not tell the installer which
115
+ process the login item started, so a gateway of this data directory that you started yourself on
116
+ the install's port is taken for the login item and left running. Stop it and re-run the
117
+ installer to get the login item's gateway.
118
+ - **A release published minutes earlier installs at once.** The installers pass
119
+ `--refresh-package` for `abstractgateway` and every package of the release matrix to
120
+ `uv tool install`, so uv asks PyPI again instead of using its cached index page (which could say
121
+ "no version of abstractgateway[gpu]==<pin>" until `uv cache clean abstractgateway`).
122
+
123
+ ### Changed
124
+
125
+ - **Launch flags in the commands the installers print.** The summary's Start line and the
126
+ background start's command (the "same steps by hand" list) read
127
+ `abstractgateway serve --data-dir <data dir>` (plus `--host`/`--port` when the gateway has no
128
+ Network setting) instead of `ABSTRACTGATEWAY_DATA_DIR=... ABSTRACTGATEWAY_USER_AUTH=1 ...`; the
129
+ gateway starts with user auth on by itself. The installers themselves still pass the data dir to
130
+ the gateway commands they run (`network`, `service install`, `claim-url`) through
131
+ `ABSTRACTGATEWAY_DATA_DIR`. Gateways before 0.3 (`--pin`) keep the environment form.
132
+
7
133
  ## [0.6.3] - 2026-09-29
8
134
 
9
135
  The `gpu` setting on NVIDIA machines, speech-to-text in the fresh setup, and loaded image models
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.6.3
3
+ Version: 0.7.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,10 +23,10 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
- Requires-Dist: abstractgateway==0.7.4
27
- Requires-Dist: abstractassistant==0.9.1
28
- Requires-Dist: abstractcore==2.19.2
29
- Requires-Dist: AbstractRuntime==0.7.3
26
+ Requires-Dist: abstractgateway==0.8.1
27
+ Requires-Dist: abstractassistant==0.10.0
28
+ Requires-Dist: abstractcore==2.20.2
29
+ Requires-Dist: AbstractRuntime==0.8.1
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
@@ -36,11 +36,11 @@ Requires-Dist: abstractvision==0.3.33
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.7.4; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.8.1; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.10.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.7.4; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.8.1; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.10.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -168,7 +168,8 @@ Start here if you're building persistent AI applications — agents that run for
168
168
 
169
169
  - Durable execution that survives crashes and restarts
170
170
  - Append-only ledger (replay-first) for auditability
171
- - Automations: a workflow that runs on a fixed interval or on demand, kept as a readable conversation ([Automations](docs/automations.md))
171
+ - Automations: a workflow that runs on a fixed interval, when an email arrives, or on demand, kept as a readable conversation ([Automations](docs/automations.md))
172
+ - Email for each user: connect your own mailbox, get automation results and approvals by email, and let agents use email tools when an administrator allows it ([Email](https://github.com/lpalbou/AbstractGateway/blob/main/docs/email.md))
172
173
  - Multi-client: terminal, browser, tray, Telegram, email
173
174
  - Start on one device, continue on another
174
175
 
@@ -216,7 +217,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
216
217
  ```
217
218
 
218
219
  Container images are published for the gateway and the AbstractCore server:
219
- `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
220
+ `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
220
221
 
221
222
  For artifact and runtime-resource investigation, see
222
223
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -362,7 +363,7 @@ pip install "abstractframework[gpu]"
362
363
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
363
364
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
364
365
 
365
- ### Release matrix (abstractframework 0.6.3)
366
+ ### Release matrix (abstractframework 0.7.1)
366
367
 
367
368
  `abstractframework` pins every Python package with `==`, so one version of the
368
369
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -371,10 +372,10 @@ and tested together.
371
372
 
372
373
  | Registry | Package | Version |
373
374
  |---|---|---|
374
- | PyPI | `abstractgateway` | 0.7.4 |
375
- | PyPI | `abstractassistant` | 0.9.1 |
376
- | PyPI | `abstractcore` | 2.19.2 |
377
- | PyPI | `AbstractRuntime` | 0.7.3 |
375
+ | PyPI | `abstractgateway` | 0.8.1 |
376
+ | PyPI | `abstractassistant` | 0.10.0 |
377
+ | PyPI | `abstractcore` | 2.20.2 |
378
+ | PyPI | `AbstractRuntime` | 0.8.1 |
378
379
  | PyPI | `abstractagent` | 0.3.17 |
379
380
  | PyPI | `abstractskill` | 0.3.0 |
380
381
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -384,16 +385,16 @@ and tested together.
384
385
  | PyPI | `abstractmusic` | 0.1.15 |
385
386
  | PyPI | `abstract3d` | 0.3.2 |
386
387
  | npm | `@abstractframework/flow` | 0.4.0 |
387
- | npm | `@abstractframework/code` | 0.6.2 |
388
- | npm | `@abstractframework/observer` | 0.2.1 |
388
+ | npm | `@abstractframework/code` | 0.7.0 |
389
+ | npm | `@abstractframework/observer` | 0.3.0 |
389
390
  | npm | `@abstractframework/continuum` | 0.4.0 |
390
391
  | npm | `@abstractframework/entity` | 0.3.0 |
391
392
  | crates.io | `abstractcode` | 0.7.1 |
392
- | crates.io | `abstractgateway-console` | 0.11.2 |
393
- | crates.io | `abstractcore-console` | 0.4.1 |
393
+ | crates.io | `abstractgateway-console` | 0.12.0 |
394
+ | crates.io | `abstractcore-console` | 0.5.0 |
394
395
  | crates.io | `abstracttui` | 0.6.0 |
395
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.4 (`gpu-latest` / `<version>-gpu` experimental) |
396
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.2 |
396
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
397
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
397
398
 
398
399
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
399
400
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -123,7 +123,8 @@ Start here if you're building persistent AI applications — agents that run for
123
123
 
124
124
  - Durable execution that survives crashes and restarts
125
125
  - Append-only ledger (replay-first) for auditability
126
- - Automations: a workflow that runs on a fixed interval or on demand, kept as a readable conversation ([Automations](docs/automations.md))
126
+ - Automations: a workflow that runs on a fixed interval, when an email arrives, or on demand, kept as a readable conversation ([Automations](docs/automations.md))
127
+ - Email for each user: connect your own mailbox, get automation results and approvals by email, and let agents use email tools when an administrator allows it ([Email](https://github.com/lpalbou/AbstractGateway/blob/main/docs/email.md))
127
128
  - Multi-client: terminal, browser, tray, Telegram, email
128
129
  - Start on one device, continue on another
129
130
 
@@ -171,7 +172,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
171
172
  ```
172
173
 
173
174
  Container images are published for the gateway and the AbstractCore server:
174
- `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
175
+ `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
175
176
 
176
177
  For artifact and runtime-resource investigation, see
177
178
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -317,7 +318,7 @@ pip install "abstractframework[gpu]"
317
318
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
318
319
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
319
320
 
320
- ### Release matrix (abstractframework 0.6.3)
321
+ ### Release matrix (abstractframework 0.7.1)
321
322
 
322
323
  `abstractframework` pins every Python package with `==`, so one version of the
323
324
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -326,10 +327,10 @@ and tested together.
326
327
 
327
328
  | Registry | Package | Version |
328
329
  |---|---|---|
329
- | PyPI | `abstractgateway` | 0.7.4 |
330
- | PyPI | `abstractassistant` | 0.9.1 |
331
- | PyPI | `abstractcore` | 2.19.2 |
332
- | PyPI | `AbstractRuntime` | 0.7.3 |
330
+ | PyPI | `abstractgateway` | 0.8.1 |
331
+ | PyPI | `abstractassistant` | 0.10.0 |
332
+ | PyPI | `abstractcore` | 2.20.2 |
333
+ | PyPI | `AbstractRuntime` | 0.8.1 |
333
334
  | PyPI | `abstractagent` | 0.3.17 |
334
335
  | PyPI | `abstractskill` | 0.3.0 |
335
336
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -339,16 +340,16 @@ and tested together.
339
340
  | PyPI | `abstractmusic` | 0.1.15 |
340
341
  | PyPI | `abstract3d` | 0.3.2 |
341
342
  | npm | `@abstractframework/flow` | 0.4.0 |
342
- | npm | `@abstractframework/code` | 0.6.2 |
343
- | npm | `@abstractframework/observer` | 0.2.1 |
343
+ | npm | `@abstractframework/code` | 0.7.0 |
344
+ | npm | `@abstractframework/observer` | 0.3.0 |
344
345
  | npm | `@abstractframework/continuum` | 0.4.0 |
345
346
  | npm | `@abstractframework/entity` | 0.3.0 |
346
347
  | crates.io | `abstractcode` | 0.7.1 |
347
- | crates.io | `abstractgateway-console` | 0.11.2 |
348
- | crates.io | `abstractcore-console` | 0.4.1 |
348
+ | crates.io | `abstractgateway-console` | 0.12.0 |
349
+ | crates.io | `abstractcore-console` | 0.5.0 |
349
350
  | crates.io | `abstracttui` | 0.6.0 |
350
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.4 (`gpu-latest` / `<version>-gpu` experimental) |
351
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.2 |
351
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
352
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
352
353
 
353
354
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
354
355
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -10,15 +10,15 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.6.3"
13
+ __version__ = "0.7.1"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.19.2",
19
- "abstractruntime": "0.7.3",
18
+ "abstractcore": "2.20.2",
19
+ "abstractruntime": "0.8.1",
20
20
  "abstractagent": "0.3.17",
21
- "abstractgateway": "0.7.4",
21
+ "abstractgateway": "0.8.1",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
@@ -26,7 +26,7 @@ RELEASE_VERSIONS: dict[str, str] = {
26
26
  "abstractvision": "0.3.33",
27
27
  "abstractmusic": "0.1.15",
28
28
  "abstract3d": "0.3.2",
29
- "abstractassistant": "0.9.1",
29
+ "abstractassistant": "0.10.0",
30
30
  }
31
31
 
32
32
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -46,17 +46,20 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
46
46
 
47
47
  NPM_RELEASE_VERSIONS: dict[str, str] = {
48
48
  "@abstractframework/flow": "0.4.0",
49
- "@abstractframework/code": "0.6.2",
50
- "@abstractframework/observer": "0.2.1",
49
+ "@abstractframework/code": "0.7.0",
50
+ "@abstractframework/observer": "0.3.0",
51
51
  "@abstractframework/continuum": "0.4.0",
52
52
  "@abstractframework/entity": "0.3.0",
53
53
  }
54
54
 
55
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
56
- # or by the bootstrap scripts: the gateway console and abstractcode by default).
56
+ # or by the bootstrap scripts: the gateway console and abstractcode by default). The installers
57
+ # never build `abstractcore-console` (0.7.1 decision): it is the console of a standalone
58
+ # `abstractcore serve`, and the gateway's terminal console already carries its Models and
59
+ # Engines screens; it is listed here as a release version only.
57
60
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
58
- "abstractgateway-console": "0.11.2",
59
- "abstractcore-console": "0.4.1",
61
+ "abstractgateway-console": "0.12.0",
62
+ "abstractcore-console": "0.5.0",
60
63
  "abstractcode": "0.7.1",
61
64
  "abstracttui": "0.6.0",
62
65
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.6.3
3
+ Version: 0.7.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,10 +23,10 @@ Classifier: Typing :: Typed
23
23
  Requires-Python: >=3.10
24
24
  Description-Content-Type: text/markdown
25
25
  License-File: LICENSE
26
- Requires-Dist: abstractgateway==0.7.4
27
- Requires-Dist: abstractassistant==0.9.1
28
- Requires-Dist: abstractcore==2.19.2
29
- Requires-Dist: AbstractRuntime==0.7.3
26
+ Requires-Dist: abstractgateway==0.8.1
27
+ Requires-Dist: abstractassistant==0.10.0
28
+ Requires-Dist: abstractcore==2.20.2
29
+ Requires-Dist: AbstractRuntime==0.8.1
30
30
  Requires-Dist: abstractagent==0.3.17
31
31
  Requires-Dist: abstractskill==0.3.0
32
32
  Requires-Dist: AbstractMemory==0.3.0
@@ -36,11 +36,11 @@ Requires-Dist: abstractvision==0.3.33
36
36
  Requires-Dist: abstractmusic==0.1.15
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.7.4; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.9.1; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.8.1; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.10.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.7.4; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.9.1; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.8.1; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.10.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -168,7 +168,8 @@ Start here if you're building persistent AI applications — agents that run for
168
168
 
169
169
  - Durable execution that survives crashes and restarts
170
170
  - Append-only ledger (replay-first) for auditability
171
- - Automations: a workflow that runs on a fixed interval or on demand, kept as a readable conversation ([Automations](docs/automations.md))
171
+ - Automations: a workflow that runs on a fixed interval, when an email arrives, or on demand, kept as a readable conversation ([Automations](docs/automations.md))
172
+ - Email for each user: connect your own mailbox, get automation results and approvals by email, and let agents use email tools when an administrator allows it ([Email](https://github.com/lpalbou/AbstractGateway/blob/main/docs/email.md))
172
173
  - Multi-client: terminal, browser, tray, Telegram, email
173
174
  - Start on one device, continue on another
174
175
 
@@ -216,7 +217,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
216
217
  ```
217
218
 
218
219
  Container images are published for the gateway and the AbstractCore server:
219
- `ghcr.io/lpalbou/abstractgateway:0.7.4` and `ghcr.io/lpalbou/abstractcore-server:2.19.2`.
220
+ `ghcr.io/lpalbou/abstractgateway:0.8.1` and `ghcr.io/lpalbou/abstractcore-server:2.20.2`.
220
221
 
221
222
  For artifact and runtime-resource investigation, see
222
223
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -362,7 +363,7 @@ pip install "abstractframework[gpu]"
362
363
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
363
364
  | GPU | `pip install "abstractframework[gpu]"` | Linux with a CUDA or ROCm GPU; on Windows, use the one-line installer (a plain pip install gets PyPI's CPU-only PyTorch and no llama.cpp) | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
364
365
 
365
- ### Release matrix (abstractframework 0.6.3)
366
+ ### Release matrix (abstractframework 0.7.1)
366
367
 
367
368
  `abstractframework` pins every Python package with `==`, so one version of the
368
369
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -371,10 +372,10 @@ and tested together.
371
372
 
372
373
  | Registry | Package | Version |
373
374
  |---|---|---|
374
- | PyPI | `abstractgateway` | 0.7.4 |
375
- | PyPI | `abstractassistant` | 0.9.1 |
376
- | PyPI | `abstractcore` | 2.19.2 |
377
- | PyPI | `AbstractRuntime` | 0.7.3 |
375
+ | PyPI | `abstractgateway` | 0.8.1 |
376
+ | PyPI | `abstractassistant` | 0.10.0 |
377
+ | PyPI | `abstractcore` | 2.20.2 |
378
+ | PyPI | `AbstractRuntime` | 0.8.1 |
378
379
  | PyPI | `abstractagent` | 0.3.17 |
379
380
  | PyPI | `abstractskill` | 0.3.0 |
380
381
  | PyPI | `AbstractMemory` | 0.3.0 |
@@ -384,16 +385,16 @@ and tested together.
384
385
  | PyPI | `abstractmusic` | 0.1.15 |
385
386
  | PyPI | `abstract3d` | 0.3.2 |
386
387
  | npm | `@abstractframework/flow` | 0.4.0 |
387
- | npm | `@abstractframework/code` | 0.6.2 |
388
- | npm | `@abstractframework/observer` | 0.2.1 |
388
+ | npm | `@abstractframework/code` | 0.7.0 |
389
+ | npm | `@abstractframework/observer` | 0.3.0 |
389
390
  | npm | `@abstractframework/continuum` | 0.4.0 |
390
391
  | npm | `@abstractframework/entity` | 0.3.0 |
391
392
  | crates.io | `abstractcode` | 0.7.1 |
392
- | crates.io | `abstractgateway-console` | 0.11.2 |
393
- | crates.io | `abstractcore-console` | 0.4.1 |
393
+ | crates.io | `abstractgateway-console` | 0.12.0 |
394
+ | crates.io | `abstractcore-console` | 0.5.0 |
394
395
  | crates.io | `abstracttui` | 0.6.0 |
395
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.7.4 (`gpu-latest` / `<version>-gpu` experimental) |
396
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.19.2 |
396
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.1 (`gpu-latest` / `<version>-gpu` experimental) |
397
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.2 |
397
398
 
398
399
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
399
400
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -188,5 +188,7 @@ scripts/tests/test_inventory.sh
188
188
  scripts/tests/test_repo_scripts.sh
189
189
  tests/test_install_profiles.py
190
190
  tests/test_install_ps1_gpu_stack.py
191
+ tests/test_install_ps1_own_gateway.py
191
192
  tests/test_install_sh_gpu_stack.py
193
+ tests/test_install_sh_gpu_twin.py
192
194
  tests/test_llms_full.py
@@ -1,7 +1,7 @@
1
- abstractgateway==0.7.4
2
- abstractassistant==0.9.1
3
- abstractcore==2.19.2
4
- AbstractRuntime==0.7.3
1
+ abstractgateway==0.8.1
2
+ abstractassistant==0.10.0
3
+ abstractcore==2.20.2
4
+ AbstractRuntime==0.8.1
5
5
  abstractagent==0.3.17
6
6
  abstractskill==0.3.0
7
7
  AbstractMemory==0.3.0
@@ -12,11 +12,11 @@ abstractmusic==0.1.15
12
12
  abstract3d==0.3.2
13
13
 
14
14
  [apple]
15
- abstractgateway[apple]==0.7.4
15
+ abstractgateway[apple]==0.8.1
16
16
 
17
17
  [apple:platform_system == "Darwin"]
18
- abstractassistant[apple]==0.9.1
18
+ abstractassistant[apple]==0.10.0
19
19
 
20
20
  [gpu]
21
- abstractgateway[gpu]==0.7.4
22
- abstractassistant[gpu]==0.9.1
21
+ abstractgateway[gpu]==0.8.1
22
+ abstractassistant[gpu]==0.10.0
@@ -37,7 +37,7 @@ Start with **AbstractGateway** + **AbstractFlow**:
37
37
 
38
38
  - Durable execution that survives crashes and restarts
39
39
  - Append-only ledger (replay-first) for auditability
40
- - Automations: workflows that run on a fixed interval or on demand ([Automations](automations.md))
40
+ - Automations: workflows that run on a fixed interval, when an email arrives, or on demand ([Automations](automations.md))
41
41
  - Multi-client: terminal, browser, tray, Telegram, email
42
42
  - Start on one device, continue on another
43
43
 
@@ -76,9 +76,9 @@ The full component diagram, with memory, semantics and the consoles, is in
76
76
  | **[Install](install.md)** | Mac installer, one-line install (`install.sh` / `install.ps1`), start at login, headless or remote install, the local gateway pointer, options, Network setting and uninstall; Light / Apple / GPU chooser, `abstractframework doctor`, installer manifest contract |
77
77
  | **[Getting Started](getting-started.md)** | The two entry points + first end-to-end run |
78
78
  | **[Agent sessions](agent-sessions.md)** | What every client shares when it chats with an agent: the gateway's default agent workflow, the conversation workspace and its built-in protection, skills, live replies, opening the Assistant signed in |
79
- | **[Automations](automations.md)** | How automations work in practice and how to manage them: an automation is a durable run, each tick a turn; independent vs growing context; creating one from the Assistant, the Observer or a workflow's defaults; two worked examples; reading results in every client; pause, run now, resume, edit, archive, discuss; notifications, typed waits, restart safety, limits, troubleshooting |
79
+ | **[Automations](automations.md)** | How automations work in practice and how to manage them: an automation is a durable run, each tick a turn; independent vs growing context; creating one from the Assistant, the Observer, AbstractCode or a workflow's defaults; email triggers and email notifications; two worked examples; reading results in every client; pause, run now, resume, edit, archive, discuss; notifications, typed waits, restart safety, limits, troubleshooting |
80
80
  | **[Architecture](architecture.md)** | Component diagram, distribution by registry, how a turn flows and the live-reply lane, app proxies, model eject, framework identity, durable execution primitives, comparisons |
81
- | **[Configuration](configuration.md)** | Minimal config, where defaults live, Core vs Gateway |
81
+ | **[Configuration](configuration.md)** | Minimal config, where defaults live, Core vs Gateway, email accounts |
82
82
  | **[Workspace scripts](workspace-scripts.md)** | Working from source: package inventory and tiers, `build.sh`, `status.sh`, `pull.sh`, `commit.sh`, `push.sh`, launchers |
83
83
  | **[Glossary](glossary.md)** | Shared terminology (run, ledger, effect, wait, bundle, …) |
84
84
  | **[ADR index](adr/README.md)** | Cross-package architectural decisions and accepted platform contracts |
@@ -55,14 +55,14 @@ The response type returned by `llm.generate(...)`.
55
55
 
56
56
  ### `__version__`
57
57
 
58
- The meta-package version (`0.6.3` for this release).
58
+ The meta-package version (`0.7.1` for this release).
59
59
 
60
60
  ### `RELEASE_VERSIONS`
61
61
 
62
- Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.6.3:
63
- `abstractcore` 2.19.2, `abstractruntime` 0.7.3, `abstractagent` 0.3.17, `abstractgateway` 0.7.4,
62
+ Dictionary mapping each ecosystem package name to the pinned version for this release. In 0.7.1:
63
+ `abstractcore` 2.20.2, `abstractruntime` 0.8.1, `abstractagent` 0.3.17, `abstractgateway` 0.8.1,
64
64
  `abstractskill` 0.3.0, `abstractmemory` 0.3.0, `abstractsemantics` 0.0.5, `abstractvoice` 0.13.2, `abstractvision` 0.3.33,
65
- `abstractmusic` 0.1.15, `abstract3d` 0.3.2, `abstractassistant` 0.9.1.
65
+ `abstractmusic` 0.1.15, `abstract3d` 0.3.2, `abstractassistant` 0.10.0.
66
66
 
67
67
  ### `PACKAGE_DISTRIBUTIONS`
68
68
 
@@ -72,14 +72,14 @@ Maps each package name in `RELEASE_VERSIONS` to its PyPI distribution name (for
72
72
  ### `NPM_RELEASE_VERSIONS`
73
73
 
74
74
  The npm apps released with this version, each runnable with `npx <package>`:
75
- `@abstractframework/flow` 0.4.0, `@abstractframework/code` 0.6.1,
76
- `@abstractframework/observer` 0.2.1, `@abstractframework/continuum` 0.4.0 and
75
+ `@abstractframework/flow` 0.4.0, `@abstractframework/code` 0.7.0,
76
+ `@abstractframework/observer` 0.3.0, `@abstractframework/continuum` 0.4.0 and
77
77
  `@abstractframework/entity` 0.3.0. They also appear as `npm_apps` in the install manifest.
78
78
 
79
79
  ### `CRATE_RELEASE_VERSIONS`
80
80
 
81
81
  The Rust terminal tools released with this version, installed with `cargo install <crate>`:
82
- `abstractgateway-console` 0.11.2, `abstractcore-console` 0.4.1, `abstractcode` 0.7.1 and the
82
+ `abstractgateway-console` 0.12.0, `abstractcore-console` 0.5.0, `abstractcode` 0.7.1 and the
83
83
  `abstracttui` engine 0.6.0. The bootstrap scripts build `abstractgateway-console` at this version by default
84
84
  (`--no-console` skips it) and `abstractcode` next to it (`--no-code-cli` skips it).
85
85