abstractframework 0.9.6__tar.gz → 0.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. {abstractframework-0.9.6 → abstractframework-0.10.0}/CHANGELOG.md +89 -0
  2. {abstractframework-0.9.6/abstractframework.egg-info → abstractframework-0.10.0}/PKG-INFO +43 -38
  3. {abstractframework-0.9.6 → abstractframework-0.10.0}/README.md +31 -26
  4. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework/__init__.py +16 -16
  5. {abstractframework-0.9.6 → abstractframework-0.10.0/abstractframework.egg-info}/PKG-INFO +43 -38
  6. abstractframework-0.10.0/abstractframework.egg-info/requires.txt +22 -0
  7. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/agent-sessions.md +44 -5
  8. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/api.md +9 -9
  9. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/architecture.md +8 -5
  10. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/faq.md +10 -6
  11. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/getting-started.md +2 -2
  12. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/glossary.md +19 -4
  13. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/install.md +31 -23
  14. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/troubleshooting.md +2 -2
  15. {abstractframework-0.9.6 → abstractframework-0.10.0}/llms-full.txt +186 -112
  16. {abstractframework-0.9.6 → abstractframework-0.10.0}/llms.txt +2 -2
  17. {abstractframework-0.9.6 → abstractframework-0.10.0}/pyproject.toml +12 -12
  18. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/install.sh +6 -6
  19. abstractframework-0.9.6/abstractframework.egg-info/requires.txt +0 -22
  20. {abstractframework-0.9.6 → abstractframework-0.10.0}/LICENSE +0 -0
  21. {abstractframework-0.9.6 → abstractframework-0.10.0}/MANIFEST.in +0 -0
  22. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework/__main__.py +0 -0
  23. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework/cli.py +0 -0
  24. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework/install_manifest.py +0 -0
  25. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework/py.typed +0 -0
  26. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework.egg-info/SOURCES.txt +0 -0
  27. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework.egg-info/dependency_links.txt +0 -0
  28. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework.egg-info/entry_points.txt +0 -0
  29. {abstractframework-0.9.6 → abstractframework-0.10.0}/abstractframework.egg-info/top_level.txt +0 -0
  30. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/README.md +0 -0
  31. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0001-layered-architecture.md +0 -0
  32. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0002-effect-system-design.md +0 -0
  33. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0003-tool-system-architecture.md +0 -0
  34. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0004-observability-strategy.md +0 -0
  35. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0005-memory-architecture.md +0 -0
  36. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0006-durable-tool-execution.md +0 -0
  37. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  38. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0008-token-terminology.md +0 -0
  39. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  40. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  41. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  42. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
  43. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  44. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  45. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  46. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  47. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  48. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  49. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  50. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  51. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  52. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  53. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  54. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  55. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  56. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  57. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  58. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  59. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  60. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  61. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  62. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  63. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  64. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  65. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
  66. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
  67. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
  68. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
  69. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/README.md +0 -0
  70. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/memory-recall-levels.md +0 -0
  71. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  72. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  73. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  74. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  75. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  76. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  77. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  78. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  79. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/automations.md +0 -0
  80. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/claude/README.md +0 -0
  81. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/claude/abstractframework-fit.md +0 -0
  82. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/claude/claude-skills-overview.md +0 -0
  83. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/claude/claude-skills-sources.md +0 -0
  84. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/claude/claude-skills-top-20.md +0 -0
  85. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/comparisons/README.md +0 -0
  86. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/configuration.md +0 -0
  87. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/LANDING.md +0 -0
  88. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/README.md +0 -0
  89. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/agent-skills.md +0 -0
  90. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/agent-vs-llm.md +0 -0
  91. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/agora-workflow-agent.md +0 -0
  92. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/apple-local-gateway-flow.md +0 -0
  93. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/capability-plugins.md +0 -0
  94. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/capability-routing-defaults.md +0 -0
  95. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/deployment-iphone.md +0 -0
  96. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/deployment-topologies.md +0 -0
  97. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/deployment-web.md +0 -0
  98. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/email-integration.md +0 -0
  99. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/event-inbox-agent.md +0 -0
  100. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/flow-and-kg-memory.md +0 -0
  101. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/gateway-security.md +0 -0
  102. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/headless-swarm.md +0 -0
  103. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/process-manager-env-vars.md +0 -0
  104. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/prompt-caching.md +0 -0
  105. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/runtime-artifacts.md +0 -0
  106. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/runtime-scope.md +0 -0
  107. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/scheduled-workflows.md +0 -0
  108. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/summoned-entities.md +0 -0
  109. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/telegram-integration.md +0 -0
  110. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/guide/workflow-bundles.md +0 -0
  111. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/README.md +0 -0
  112. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/components.md +0 -0
  113. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/implementation-plan.md +0 -0
  114. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/operations-and-support.md +0 -0
  115. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/release-and-manifest.md +0 -0
  116. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/security-and-os-blocks.md +0 -0
  117. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/strategy.md +0 -0
  118. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/installers/user-journeys.md +0 -0
  119. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/prompts/agora-collaboration.md +0 -0
  120. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/README.md +0 -0
  121. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/email-inbox-agent.md +0 -0
  122. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
  123. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/offline-coding-assistant.md +0 -0
  124. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/phone-thin-client.md +0 -0
  125. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/specialized-agent-flow.md +0 -0
  126. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
  127. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  128. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/README.md +0 -0
  129. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  130. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  131. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  132. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  133. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/claude-agent-skills-overview.md +0 -0
  134. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/claude-agent-skills-sources.md +0 -0
  135. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
  136. {abstractframework-0.9.6 → abstractframework-0.10.0}/docs/workspace-scripts.md +0 -0
  137. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/af-local.sh +0 -0
  138. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/af.sh +0 -0
  139. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/agora_react_flow_smoke.py +0 -0
  140. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/assistant-local.sh +0 -0
  141. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/assistant.sh +0 -0
  142. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/build.sh +0 -0
  143. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/cache_probe_local_backends.py +0 -0
  144. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/cache_steer_repl.py +0 -0
  145. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/check_identity_sync.py +0 -0
  146. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/clone.sh +0 -0
  147. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/code-local.sh +0 -0
  148. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/code.sh +0 -0
  149. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/commit.sh +0 -0
  150. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/console-local.sh +0 -0
  151. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/console.sh +0 -0
  152. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/core_operator_drive.py +0 -0
  153. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/deps.sh +0 -0
  154. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/entity-local.sh +0 -0
  155. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/entity.sh +0 -0
  156. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/event_inbox_flow_smoke.py +0 -0
  157. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/flow-local.sh +0 -0
  158. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/flow.sh +0 -0
  159. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/gateway-flow-local.sh +0 -0
  160. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/gateway-flow.sh +0 -0
  161. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/gateway-local.sh +0 -0
  162. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/gateway.sh +0 -0
  163. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/gen_llms_full.py +0 -0
  164. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/headless_fleet_bridge.py +0 -0
  165. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/headless_fleet_demo.py +0 -0
  166. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/headless_steer_repl.py +0 -0
  167. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/af_inventory.py +0 -0
  168. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/af_stack.sh +0 -0
  169. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/af_supervisor.sh +0 -0
  170. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/apps_common.sh +0 -0
  171. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/build_macos_installer.sh +0 -0
  172. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/gateway_user_tokens.py +0 -0
  173. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/lib/repo_groups.sh +0 -0
  174. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/meet_castor.sh +0 -0
  175. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/observer-local.sh +0 -0
  176. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/observer.sh +0 -0
  177. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/plan_walkthrough.py +0 -0
  178. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/pull.sh +0 -0
  179. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/push.sh +0 -0
  180. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/spawn_demo_agent.sh +0 -0
  181. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/start-local.sh +0 -0
  182. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/start.sh +0 -0
  183. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/status.sh +0 -0
  184. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/steer_repl.py +0 -0
  185. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/tests/test_af_supervisor.sh +0 -0
  186. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/tests/test_install_user_path.sh +0 -0
  187. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/tests/test_inventory.sh +0 -0
  188. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/tests/test_repo_scripts.sh +0 -0
  189. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/uninstall.sh +0 -0
  190. {abstractframework-0.9.6 → abstractframework-0.10.0}/scripts/visit_resume_cache_probe.py +0 -0
  191. {abstractframework-0.9.6 → abstractframework-0.10.0}/setup.cfg +0 -0
  192. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_app_upgrade.py +0 -0
  193. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_index_lag.py +0 -0
  194. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_profiles.py +0 -0
  195. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_ps1_gpu_stack.py +0 -0
  196. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_ps1_own_gateway.py +0 -0
  197. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_sh_gpu_stack.py +0 -0
  198. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_install_sh_gpu_twin.py +0 -0
  199. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_llms_full.py +0 -0
  200. {abstractframework-0.9.6 → abstractframework-0.10.0}/tests/test_uv_tool_install_atomicity.py +0 -0
@@ -4,6 +4,95 @@ All notable changes to AbstractFramework will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.10.0] - 2026-10-05
8
+
9
+ ### Added
10
+
11
+ - The gateway serves its OpenAI-compatible API at `http://<host>:<port>/v1` with its own console page,
12
+ **Models → OpenAI API**: status and base URL, your API key (your gateway token, masked with reveal
13
+ and copy), access settings for admins (Protected or Open, and who can connect: this machine, your
14
+ network, your tailnet or anywhere), a per-account **OpenAI API** switch, example requests, and a log
15
+ of recent requests that opens to the recorded request and response. Structured outputs
16
+ (`response_format` `json_object` and `json_schema`) work for every provider the gateway routes to.
17
+ - The gateway web and terminal consoles share one layout: Accounts (users and entities in one list,
18
+ archive and unarchive), Workflows, Skills & MCP, Runtimes, Apps, Providers (local engines included),
19
+ OpenAI API, Models (one list with downloads not in the catalog; delete a downloaded model), Multimodal,
20
+ Resources, Sandbox, Network (every detected address, Tailscale included) and About.
21
+ - Code Web: Automations and Conversations drawers with compact cards, archive and unarchive for
22
+ conversations and automations (`Archived · N`), and a right-hand rail (Activity, Files, Model,
23
+ Workflow, Workspace, Tools, Skills, Voice) whose settings follow the selected conversation or
24
+ automation. The Code terminal client offers the same panels, cards, archive and voice.
25
+ - Voice everywhere through the gateway: the shared Voice settings show the gateway's own default
26
+ engines, let you pick the output device and the microphone, and test both; Code (web and terminal),
27
+ Observer and Entity speak replies and take dictation through the gateway.
28
+ - One About card in every app and console (app, AbstractFramework and gateway versions, links), and a
29
+ shared audio player for audio files.
30
+ - A hung gateway restarts: when its event loop has not run for `--watchdog-seconds` (default 30, `0`
31
+ turns it off), `abstractgateway serve` exits with code 75 and its supervisor starts it again;
32
+ `/api/health` reports the watchdog.
33
+ - Workspaces in two dimensions (AbstractGateway 0.13.0, AbstractRuntime 0.9.0, UI Kit 0.8.1): the
34
+ admin chooses a posture, **Deny everything, allow listed workspaces** (the default) or **Allow
35
+ everything, refuse listed workspaces** (with a Read-only or Read & write default for everything
36
+ else), one **Shared workspace** (always Read & write) and workspaces that are Read-only, Read &
37
+ write or Refused, in one modal at the top of **Accounts**. Each account can only narrow them, from
38
+ its **Workspace** row action or the Workspace settings of AbstractCode, Observer, Flow and the
39
+ Assistant, which share one chooser and one wording with the gateway's one-line summary.
40
+ - The agent is told its workspaces: every tool-using call lists its working directory, the shared
41
+ workspace and each allowed workspace with its mode. A file it writes without a full path lands in
42
+ the conversation's private folder, never in the shared workspace.
43
+ - Shell commands are held to the run's workspaces by the operating system (AbstractCore 2.25.0,
44
+ AbstractRuntime 0.9.0, AbstractAgent 0.3.18, AbstractGateway 0.13.0): `execute_command`, the
45
+ persistent shell session, local helpers and `execute_python` run inside an OS sandbox built from the
46
+ same workspaces the file tools get (macOS `sandbox-exec`; Linux bubblewrap, or Landlock for **Deny
47
+ everything, allow listed workspaces**), with the gateway's environment stripped of tokens and keys.
48
+ A host with no sandbox refuses commands with one sentence and the run continues;
49
+ `abstractgateway serve --unsandboxed-commands` allows them again (audited). The run ledger records
50
+ the sandbox and the enforced paths of every command; the Assistant and Code tool settings show the
51
+ state (**Sandboxed to this run's workspaces**), and the Observer and Code run views show one
52
+ `Sandbox: …` line per command. The Linux sandbox is verified in CI (bubblewrap on Ubuntu).
53
+ - The console's top bar shows memory used, GPU load and the number of loaded models (refreshed every
54
+ 5 seconds, a click opens **Resources**); every address, with **Copy**, is on **Network**.
55
+ - The tray's Workflows submenu lists running runs first, then runs waiting for a person or an event,
56
+ then the runs finished in the last 24 hours, each opening in Observer.
57
+ - Themed tooltips on every icon button of the consoles and apps (UI Kit 0.8.1).
58
+ - Sound effects and music take a length in seconds: AbstractCore's `/v1/audio/music` `seconds`, the
59
+ gateway Sandbox's **Length (seconds)** field and the Assistant's media requests ("a 3 s laser
60
+ sound"); a sound effect runs the Stable Audio 3 SFX checkpoint and lasts 5 seconds by default,
61
+ music 30.
62
+ - AbstractAssistant 0.13.0: **New automation** opens the same schedule form as AbstractCode and
63
+ Observer; Settings → **Workflow** is its own page (**Gateway default** first, **Open in
64
+ AbstractFlow**); Settings → Tools groups tools in collapsible categories; Settings → Appearance
65
+ shows the Accessibility permission with **Configure**; the Voice page shows the gateway's engines
66
+ read-only with **Change under Models**.
67
+
68
+ ### Changed
69
+
70
+ - A gateway upgraded from 0.12 converts its workspace settings once at its first start: the old access
71
+ modes, per-user allow and deny lists, launch-folder trust and "Any folder (old clients)" become the
72
+ posture and rows above; the old settings keys and routes are refused afterwards. A fresh gateway's
73
+ shared workspace is `<data dir>/workspace`; an existing install keeps its current one.
74
+ - The gateway terminal console's **Workspaces** page says workspaces are managed from Accounts in the
75
+ web console for this release.
76
+ - **Apps → Assistant** reports, opens and watches the same Assistant: the installed package, else the
77
+ app bundle. When the other one is running, the card and the tray say so.
78
+ - **Apps** shows an available update on every row: the browser apps and the Assistant offer **Update
79
+ to x.y.z** (the Assistant is quit and opened again on the new version when the gateway started it);
80
+ an app started elsewhere or installed from a source checkout shows **Latest x.y.z** with where to
81
+ update it. An update whose version did not land fails and restarts nothing. The web and terminal
82
+ consoles (`u`) show the same labels; new releases appear within 10 minutes without a restart.
83
+ - Workspace nesting: the most specific workspace wins. Refusing a folder and allowing a folder inside
84
+ it is valid (the inner folder is reachable, the rest stays refused); a refused folder inside an
85
+ allowed one refuses its subtree; built-in protected folders stay refused whatever is listed inside.
86
+ The gateway, the agent's file tools and the command sandbox apply the same rule.
87
+ - `/core/v1` answers with a 308 redirect to `/v1` for this release and is deprecated: point clients at
88
+ `/v1`.
89
+ - Pin AbstractGateway 0.13.0, AbstractCore 2.25.0, AbstractRuntime 0.9.0, AbstractAgent 0.3.18
90
+ (`execute_python` inside the command sandbox), AbstractVoice 0.14.0, AbstractMusic 0.1.16 (the
91
+ sound-effect checkpoint and length fix) and AbstractAssistant 0.13.0;
92
+ the installers install Code Web 0.11.0, Observer 0.7.0, Flow 0.8.0, Continuum 0.7.0 and Entity
93
+ 0.7.0 (built with UI Kit 0.8.1 and Panel Chat 0.4.0 from AbstractUIC), the gateway terminal
94
+ console 0.15.0 and AbstractCode 0.9.0.
95
+
7
96
  ## [0.9.6] - 2026-10-03
8
97
 
9
98
  - Assistant, Code Web and Observer include workflow and tool selection when creating or editing automations, alongside the growing-context budget and Email result recipients.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.9.6
3
+ Version: 0.10.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,24 +23,24 @@ 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.12.0
27
- Requires-Dist: abstractassistant==0.12.3
28
- Requires-Dist: abstractcore==2.24.0
29
- Requires-Dist: AbstractRuntime==0.8.5
30
- Requires-Dist: abstractagent==0.3.17
26
+ Requires-Dist: abstractgateway==0.13.0
27
+ Requires-Dist: abstractassistant==0.13.0
28
+ Requires-Dist: abstractcore==2.25.0
29
+ Requires-Dist: AbstractRuntime==0.9.0
30
+ Requires-Dist: abstractagent==0.3.18
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.13.2
34
+ Requires-Dist: abstractvoice==0.14.0
35
35
  Requires-Dist: abstractvision==0.3.33
36
- Requires-Dist: abstractmusic==0.1.15
36
+ Requires-Dist: abstractmusic==0.1.16
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.12.0; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.12.3; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.13.0; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.13.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.12.0; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.12.3; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.13.0; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.13.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -121,8 +121,9 @@ pip install abstractcore && abstractcore serve # http://127.0.0.1:8000/co
121
121
  pip install abstractgateway && abstractgateway serve # http://127.0.0.1:8080/console#claim=…
122
122
  ```
123
123
 
124
- Both consoles have **Models** (browse models that fit this machine, download, delete) and
125
- **Engines** (detect and install local engines) tabs; every action also shows its command-line
124
+ Both consoles let you browse models that fit this machine, download and delete them (**Models**),
125
+ and detect and install local engines (**Engines** in the Core console, **Providers** in the gateway
126
+ console); every action also shows its command-line
126
127
  equivalent (`abstractcore models …`, `abstractcore engines …`, `abstractgateway models …`).
127
128
 
128
129
  ---
@@ -208,7 +209,8 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
208
209
  sign-in token.
209
210
 
210
211
  Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
211
- page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
212
+ page installs, opens and updates the browser apps and the Assistant (**Update to x.y.z** when a newer
213
+ release exists); the browser apps are served by the gateway at `/apps/<app>/`
212
214
  (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
213
215
 
214
216
  ```bash
@@ -219,7 +221,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
219
221
  ```
220
222
 
221
223
  Container images are published for the gateway and the AbstractCore server:
222
- `ghcr.io/lpalbou/abstractgateway:0.12.0` and `ghcr.io/lpalbou/abstractcore-server:2.24.0`.
224
+ `ghcr.io/lpalbou/abstractgateway:0.13.0` and `ghcr.io/lpalbou/abstractcore-server:2.25.0`.
223
225
 
224
226
  For artifact and runtime-resource investigation, see
225
227
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -232,10 +234,13 @@ chats with agents through the same gateway rules:
232
234
  - **One default agent workflow.** The gateway decides which workflow answers each agent interface
233
235
  (`agents.default_workflow.<interface>`; the shipped `basic-agent` for AbstractCode until you
234
236
  choose another). Clients list **Gateway default** first and follow a change at the next turn.
235
- - **A workspace you can see, with built-in protection.** An agent works in a folder on the
236
- gateway's computer; AbstractCode's **Files** tab and `/files` show its absolute path and
237
- preview its files. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder are
238
- denied to every run.
237
+ - **A workspace you can see, with built-in protection.** An agent works in its conversation's
238
+ private folder on the gateway's computer; AbstractCode's **Files** tab and `/files` show its
239
+ absolute path and preview its files. The admin chooses a posture (**Deny everything, allow
240
+ listed workspaces** or **Allow everything, refuse listed workspaces**), one **Shared workspace**
241
+ (always Read & write) and workspaces that are Read-only, Read & write or Refused; each account
242
+ can only narrow them. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder
243
+ are denied to every run.
239
244
  - **Curated skills.** The skill shelf that ships with `abstractskill` is copied into the gateway's
240
245
  data folder at each start, without overwriting your edits (`skills.shelf` points elsewhere).
241
246
  - **Live replies.** Watch answers as the model writes them: the gateway's
@@ -369,7 +374,7 @@ pip install "abstractframework[gpu]"
369
374
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
370
375
  | 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+) |
371
376
 
372
- ### Release matrix (abstractframework 0.9.6)
377
+ ### Release matrix (abstractframework 0.10.0)
373
378
 
374
379
  `abstractframework` pins every Python package with `==`, so one version of the
375
380
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -378,29 +383,29 @@ and tested together.
378
383
 
379
384
  | Registry | Package | Version |
380
385
  |---|---|---|
381
- | PyPI | `abstractgateway` | 0.12.0 |
382
- | PyPI | `abstractassistant` | 0.12.3 |
383
- | PyPI | `abstractcore` | 2.24.0 |
384
- | PyPI | `AbstractRuntime` | 0.8.5 |
385
- | PyPI | `abstractagent` | 0.3.17 |
386
+ | PyPI | `abstractgateway` | 0.13.0 |
387
+ | PyPI | `abstractassistant` | 0.13.0 |
388
+ | PyPI | `abstractcore` | 2.25.0 |
389
+ | PyPI | `AbstractRuntime` | 0.9.0 |
390
+ | PyPI | `abstractagent` | 0.3.18 |
386
391
  | PyPI | `abstractskill` | 0.3.0 |
387
392
  | PyPI | `AbstractMemory` | 0.3.0 |
388
393
  | PyPI | `abstractsemantics` | 0.0.5 |
389
- | PyPI | `abstractvoice` | 0.13.2 |
394
+ | PyPI | `abstractvoice` | 0.14.0 |
390
395
  | PyPI | `abstractvision` | 0.3.33 |
391
- | PyPI | `abstractmusic` | 0.1.15 |
396
+ | PyPI | `abstractmusic` | 0.1.16 |
392
397
  | PyPI | `abstract3d` | 0.3.2 |
393
- | npm | `@abstractframework/flow` | 0.7.0 |
394
- | npm | `@abstractframework/code` | 0.10.3 |
395
- | npm | `@abstractframework/observer` | 0.6.2 |
396
- | npm | `@abstractframework/continuum` | 0.6.0 |
397
- | npm | `@abstractframework/entity` | 0.6.0 |
398
- | crates.io | `abstractcode` | 0.8.0 |
399
- | crates.io | `abstractgateway-console` | 0.14.0 |
400
- | crates.io | `abstractcore-console` | 0.7.0 |
398
+ | npm | `@abstractframework/flow` | 0.8.0 |
399
+ | npm | `@abstractframework/code` | 0.11.0 |
400
+ | npm | `@abstractframework/observer` | 0.7.0 |
401
+ | npm | `@abstractframework/continuum` | 0.7.0 |
402
+ | npm | `@abstractframework/entity` | 0.7.0 |
403
+ | crates.io | `abstractcode` | 0.9.0 |
404
+ | crates.io | `abstractgateway-console` | 0.15.0 |
405
+ | crates.io | `abstractcore-console` | 0.8.0 |
401
406
  | crates.io | `abstracttui` | 0.6.0 |
402
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.12.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.24.0 |
407
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.13.0 (`gpu-latest` / `<version>-gpu` experimental) |
408
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.25.0 |
404
409
 
405
410
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
406
411
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -76,8 +76,9 @@ pip install abstractcore && abstractcore serve # http://127.0.0.1:8000/co
76
76
  pip install abstractgateway && abstractgateway serve # http://127.0.0.1:8080/console#claim=…
77
77
  ```
78
78
 
79
- Both consoles have **Models** (browse models that fit this machine, download, delete) and
80
- **Engines** (detect and install local engines) tabs; every action also shows its command-line
79
+ Both consoles let you browse models that fit this machine, download and delete them (**Models**),
80
+ and detect and install local engines (**Engines** in the Core console, **Providers** in the gateway
81
+ console); every action also shows its command-line
81
82
  equivalent (`abstractcore models …`, `abstractcore engines …`, `abstractgateway models …`).
82
83
 
83
84
  ---
@@ -163,7 +164,8 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
163
164
  sign-in token.
164
165
 
165
166
  Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
166
- page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
167
+ page installs, opens and updates the browser apps and the Assistant (**Update to x.y.z** when a newer
168
+ release exists); the browser apps are served by the gateway at `/apps/<app>/`
167
169
  (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
168
170
 
169
171
  ```bash
@@ -174,7 +176,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
174
176
  ```
175
177
 
176
178
  Container images are published for the gateway and the AbstractCore server:
177
- `ghcr.io/lpalbou/abstractgateway:0.12.0` and `ghcr.io/lpalbou/abstractcore-server:2.24.0`.
179
+ `ghcr.io/lpalbou/abstractgateway:0.13.0` and `ghcr.io/lpalbou/abstractcore-server:2.25.0`.
178
180
 
179
181
  For artifact and runtime-resource investigation, see
180
182
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -187,10 +189,13 @@ chats with agents through the same gateway rules:
187
189
  - **One default agent workflow.** The gateway decides which workflow answers each agent interface
188
190
  (`agents.default_workflow.<interface>`; the shipped `basic-agent` for AbstractCode until you
189
191
  choose another). Clients list **Gateway default** first and follow a change at the next turn.
190
- - **A workspace you can see, with built-in protection.** An agent works in a folder on the
191
- gateway's computer; AbstractCode's **Files** tab and `/files` show its absolute path and
192
- preview its files. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder are
193
- denied to every run.
192
+ - **A workspace you can see, with built-in protection.** An agent works in its conversation's
193
+ private folder on the gateway's computer; AbstractCode's **Files** tab and `/files` show its
194
+ absolute path and preview its files. The admin chooses a posture (**Deny everything, allow
195
+ listed workspaces** or **Allow everything, refuse listed workspaces**), one **Shared workspace**
196
+ (always Read & write) and workspaces that are Read-only, Read & write or Refused; each account
197
+ can only narrow them. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder
198
+ are denied to every run.
194
199
  - **Curated skills.** The skill shelf that ships with `abstractskill` is copied into the gateway's
195
200
  data folder at each start, without overwriting your edits (`skills.shelf` points elsewhere).
196
201
  - **Live replies.** Watch answers as the model writes them: the gateway's
@@ -324,7 +329,7 @@ pip install "abstractframework[gpu]"
324
329
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
325
330
  | 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+) |
326
331
 
327
- ### Release matrix (abstractframework 0.9.6)
332
+ ### Release matrix (abstractframework 0.10.0)
328
333
 
329
334
  `abstractframework` pins every Python package with `==`, so one version of the
330
335
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -333,29 +338,29 @@ and tested together.
333
338
 
334
339
  | Registry | Package | Version |
335
340
  |---|---|---|
336
- | PyPI | `abstractgateway` | 0.12.0 |
337
- | PyPI | `abstractassistant` | 0.12.3 |
338
- | PyPI | `abstractcore` | 2.24.0 |
339
- | PyPI | `AbstractRuntime` | 0.8.5 |
340
- | PyPI | `abstractagent` | 0.3.17 |
341
+ | PyPI | `abstractgateway` | 0.13.0 |
342
+ | PyPI | `abstractassistant` | 0.13.0 |
343
+ | PyPI | `abstractcore` | 2.25.0 |
344
+ | PyPI | `AbstractRuntime` | 0.9.0 |
345
+ | PyPI | `abstractagent` | 0.3.18 |
341
346
  | PyPI | `abstractskill` | 0.3.0 |
342
347
  | PyPI | `AbstractMemory` | 0.3.0 |
343
348
  | PyPI | `abstractsemantics` | 0.0.5 |
344
- | PyPI | `abstractvoice` | 0.13.2 |
349
+ | PyPI | `abstractvoice` | 0.14.0 |
345
350
  | PyPI | `abstractvision` | 0.3.33 |
346
- | PyPI | `abstractmusic` | 0.1.15 |
351
+ | PyPI | `abstractmusic` | 0.1.16 |
347
352
  | PyPI | `abstract3d` | 0.3.2 |
348
- | npm | `@abstractframework/flow` | 0.7.0 |
349
- | npm | `@abstractframework/code` | 0.10.3 |
350
- | npm | `@abstractframework/observer` | 0.6.2 |
351
- | npm | `@abstractframework/continuum` | 0.6.0 |
352
- | npm | `@abstractframework/entity` | 0.6.0 |
353
- | crates.io | `abstractcode` | 0.8.0 |
354
- | crates.io | `abstractgateway-console` | 0.14.0 |
355
- | crates.io | `abstractcore-console` | 0.7.0 |
353
+ | npm | `@abstractframework/flow` | 0.8.0 |
354
+ | npm | `@abstractframework/code` | 0.11.0 |
355
+ | npm | `@abstractframework/observer` | 0.7.0 |
356
+ | npm | `@abstractframework/continuum` | 0.7.0 |
357
+ | npm | `@abstractframework/entity` | 0.7.0 |
358
+ | crates.io | `abstractcode` | 0.9.0 |
359
+ | crates.io | `abstractgateway-console` | 0.15.0 |
360
+ | crates.io | `abstractcore-console` | 0.8.0 |
356
361
  | crates.io | `abstracttui` | 0.6.0 |
357
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.12.0 (`gpu-latest` / `<version>-gpu` experimental) |
358
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.24.0 |
362
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.13.0 (`gpu-latest` / `<version>-gpu` experimental) |
363
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.25.0 |
359
364
 
360
365
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
361
366
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -10,23 +10,23 @@ Most implementation functionality still lives in component projects.
10
10
 
11
11
  from __future__ import annotations
12
12
 
13
- __version__ = "0.9.6"
13
+ __version__ = "0.10.0"
14
14
  __author__ = "Laurent-Philippe Albou"
15
15
  __license__ = "MIT"
16
16
 
17
17
  RELEASE_VERSIONS: dict[str, str] = {
18
- "abstractcore": "2.24.0",
19
- "abstractruntime": "0.8.5",
20
- "abstractagent": "0.3.17",
21
- "abstractgateway": "0.12.0",
18
+ "abstractcore": "2.25.0",
19
+ "abstractruntime": "0.9.0",
20
+ "abstractagent": "0.3.18",
21
+ "abstractgateway": "0.13.0",
22
22
  "abstractskill": "0.3.0",
23
23
  "abstractmemory": "0.3.0",
24
24
  "abstractsemantics": "0.0.5",
25
- "abstractvoice": "0.13.2",
25
+ "abstractvoice": "0.14.0",
26
26
  "abstractvision": "0.3.33",
27
- "abstractmusic": "0.1.15",
27
+ "abstractmusic": "0.1.16",
28
28
  "abstract3d": "0.3.2",
29
- "abstractassistant": "0.12.3",
29
+ "abstractassistant": "0.13.0",
30
30
  }
31
31
 
32
32
  PACKAGE_DISTRIBUTIONS: dict[str, str] = {
@@ -45,11 +45,11 @@ PACKAGE_DISTRIBUTIONS: dict[str, str] = {
45
45
  }
46
46
 
47
47
  NPM_RELEASE_VERSIONS: dict[str, str] = {
48
- "@abstractframework/flow": "0.7.0",
49
- "@abstractframework/code": "0.10.3",
50
- "@abstractframework/observer": "0.6.2",
51
- "@abstractframework/continuum": "0.6.0",
52
- "@abstractframework/entity": "0.6.0",
48
+ "@abstractframework/flow": "0.8.0",
49
+ "@abstractframework/code": "0.11.0",
50
+ "@abstractframework/observer": "0.7.0",
51
+ "@abstractframework/continuum": "0.7.0",
52
+ "@abstractframework/entity": "0.7.0",
53
53
  }
54
54
 
55
55
  # Terminal tools published on crates.io alongside this release (installed with `cargo install`,
@@ -58,9 +58,9 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
58
58
  # `abstractcore serve`, and the gateway's terminal console already carries its Models and
59
59
  # Engines screens; it is listed here as a release version only.
60
60
  CRATE_RELEASE_VERSIONS: dict[str, str] = {
61
- "abstractgateway-console": "0.14.0",
62
- "abstractcore-console": "0.7.0",
63
- "abstractcode": "0.8.0",
61
+ "abstractgateway-console": "0.15.0",
62
+ "abstractcore-console": "0.8.0",
63
+ "abstractcode": "0.9.0",
64
64
  "abstracttui": "0.6.0",
65
65
  }
66
66
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: abstractframework
3
- Version: 0.9.6
3
+ Version: 0.10.0
4
4
  Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
5
5
  Author-email: Laurent-Philippe Albou <contact@abstractframework.ai>
6
6
  License: MIT
@@ -23,24 +23,24 @@ 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.12.0
27
- Requires-Dist: abstractassistant==0.12.3
28
- Requires-Dist: abstractcore==2.24.0
29
- Requires-Dist: AbstractRuntime==0.8.5
30
- Requires-Dist: abstractagent==0.3.17
26
+ Requires-Dist: abstractgateway==0.13.0
27
+ Requires-Dist: abstractassistant==0.13.0
28
+ Requires-Dist: abstractcore==2.25.0
29
+ Requires-Dist: AbstractRuntime==0.9.0
30
+ Requires-Dist: abstractagent==0.3.18
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.13.2
34
+ Requires-Dist: abstractvoice==0.14.0
35
35
  Requires-Dist: abstractvision==0.3.33
36
- Requires-Dist: abstractmusic==0.1.15
36
+ Requires-Dist: abstractmusic==0.1.16
37
37
  Requires-Dist: abstract3d==0.3.2
38
38
  Provides-Extra: apple
39
- Requires-Dist: abstractgateway[apple]==0.12.0; extra == "apple"
40
- Requires-Dist: abstractassistant[apple]==0.12.3; platform_system == "Darwin" and extra == "apple"
39
+ Requires-Dist: abstractgateway[apple]==0.13.0; extra == "apple"
40
+ Requires-Dist: abstractassistant[apple]==0.13.0; platform_system == "Darwin" and extra == "apple"
41
41
  Provides-Extra: gpu
42
- Requires-Dist: abstractgateway[gpu]==0.12.0; extra == "gpu"
43
- Requires-Dist: abstractassistant[gpu]==0.12.3; extra == "gpu"
42
+ Requires-Dist: abstractgateway[gpu]==0.13.0; extra == "gpu"
43
+ Requires-Dist: abstractassistant[gpu]==0.13.0; extra == "gpu"
44
44
  Dynamic: license-file
45
45
 
46
46
  # AbstractFramework
@@ -121,8 +121,9 @@ pip install abstractcore && abstractcore serve # http://127.0.0.1:8000/co
121
121
  pip install abstractgateway && abstractgateway serve # http://127.0.0.1:8080/console#claim=…
122
122
  ```
123
123
 
124
- Both consoles have **Models** (browse models that fit this machine, download, delete) and
125
- **Engines** (detect and install local engines) tabs; every action also shows its command-line
124
+ Both consoles let you browse models that fit this machine, download and delete them (**Models**),
125
+ and detect and install local engines (**Engines** in the Core console, **Providers** in the gateway
126
+ console); every action also shows its command-line
126
127
  equivalent (`abstractcore models …`, `abstractcore engines …`, `abstractgateway models …`).
127
128
 
128
129
  ---
@@ -208,7 +209,8 @@ AbstractFlow, AbstractCode Web or AbstractObserver, or to the console without a
208
209
  sign-in token.
209
210
 
210
211
  Monitor runs from a browser, or from a terminal with the gateway console. The console's **Apps**
211
- page installs and opens the browser apps, served by the gateway at `/apps/<app>/`
212
+ page installs, opens and updates the browser apps and the Assistant (**Update to x.y.z** when a newer
213
+ release exists); the browser apps are served by the gateway at `/apps/<app>/`
212
214
  (`http://127.0.0.1:8080/apps/observer/`), so one address (and one SSH tunnel) reaches them all:
213
215
 
214
216
  ```bash
@@ -219,7 +221,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
219
221
  ```
220
222
 
221
223
  Container images are published for the gateway and the AbstractCore server:
222
- `ghcr.io/lpalbou/abstractgateway:0.12.0` and `ghcr.io/lpalbou/abstractcore-server:2.24.0`.
224
+ `ghcr.io/lpalbou/abstractgateway:0.13.0` and `ghcr.io/lpalbou/abstractcore-server:2.25.0`.
223
225
 
224
226
  For artifact and runtime-resource investigation, see
225
227
  [Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
@@ -232,10 +234,13 @@ chats with agents through the same gateway rules:
232
234
  - **One default agent workflow.** The gateway decides which workflow answers each agent interface
233
235
  (`agents.default_workflow.<interface>`; the shipped `basic-agent` for AbstractCode until you
234
236
  choose another). Clients list **Gateway default** first and follow a change at the next turn.
235
- - **A workspace you can see, with built-in protection.** An agent works in a folder on the
236
- gateway's computer; AbstractCode's **Files** tab and `/files` show its absolute path and
237
- preview its files. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder are
238
- denied to every run.
237
+ - **A workspace you can see, with built-in protection.** An agent works in its conversation's
238
+ private folder on the gateway's computer; AbstractCode's **Files** tab and `/files` show its
239
+ absolute path and preview its files. The admin chooses a posture (**Deny everything, allow
240
+ listed workspaces** or **Allow everything, refuse listed workspaces**), one **Shared workspace**
241
+ (always Read & write) and workspaces that are Read-only, Read & write or Refused; each account
242
+ can only narrow them. Credential folders (`~/.ssh`, `~/.aws`, …) and the gateway's data folder
243
+ are denied to every run.
239
244
  - **Curated skills.** The skill shelf that ships with `abstractskill` is copied into the gateway's
240
245
  data folder at each start, without overwriting your edits (`skills.shelf` points elsewhere).
241
246
  - **Live replies.** Watch answers as the model writes them: the gateway's
@@ -369,7 +374,7 @@ pip install "abstractframework[gpu]"
369
374
  | Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
370
375
  | 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+) |
371
376
 
372
- ### Release matrix (abstractframework 0.9.6)
377
+ ### Release matrix (abstractframework 0.10.0)
373
378
 
374
379
  `abstractframework` pins every Python package with `==`, so one version of the
375
380
  meta-package always installs the same stack. The browser apps and Rust tools are
@@ -378,29 +383,29 @@ and tested together.
378
383
 
379
384
  | Registry | Package | Version |
380
385
  |---|---|---|
381
- | PyPI | `abstractgateway` | 0.12.0 |
382
- | PyPI | `abstractassistant` | 0.12.3 |
383
- | PyPI | `abstractcore` | 2.24.0 |
384
- | PyPI | `AbstractRuntime` | 0.8.5 |
385
- | PyPI | `abstractagent` | 0.3.17 |
386
+ | PyPI | `abstractgateway` | 0.13.0 |
387
+ | PyPI | `abstractassistant` | 0.13.0 |
388
+ | PyPI | `abstractcore` | 2.25.0 |
389
+ | PyPI | `AbstractRuntime` | 0.9.0 |
390
+ | PyPI | `abstractagent` | 0.3.18 |
386
391
  | PyPI | `abstractskill` | 0.3.0 |
387
392
  | PyPI | `AbstractMemory` | 0.3.0 |
388
393
  | PyPI | `abstractsemantics` | 0.0.5 |
389
- | PyPI | `abstractvoice` | 0.13.2 |
394
+ | PyPI | `abstractvoice` | 0.14.0 |
390
395
  | PyPI | `abstractvision` | 0.3.33 |
391
- | PyPI | `abstractmusic` | 0.1.15 |
396
+ | PyPI | `abstractmusic` | 0.1.16 |
392
397
  | PyPI | `abstract3d` | 0.3.2 |
393
- | npm | `@abstractframework/flow` | 0.7.0 |
394
- | npm | `@abstractframework/code` | 0.10.3 |
395
- | npm | `@abstractframework/observer` | 0.6.2 |
396
- | npm | `@abstractframework/continuum` | 0.6.0 |
397
- | npm | `@abstractframework/entity` | 0.6.0 |
398
- | crates.io | `abstractcode` | 0.8.0 |
399
- | crates.io | `abstractgateway-console` | 0.14.0 |
400
- | crates.io | `abstractcore-console` | 0.7.0 |
398
+ | npm | `@abstractframework/flow` | 0.8.0 |
399
+ | npm | `@abstractframework/code` | 0.11.0 |
400
+ | npm | `@abstractframework/observer` | 0.7.0 |
401
+ | npm | `@abstractframework/continuum` | 0.7.0 |
402
+ | npm | `@abstractframework/entity` | 0.7.0 |
403
+ | crates.io | `abstractcode` | 0.9.0 |
404
+ | crates.io | `abstractgateway-console` | 0.15.0 |
405
+ | crates.io | `abstractcore-console` | 0.8.0 |
401
406
  | crates.io | `abstracttui` | 0.6.0 |
402
- | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.12.0 (`gpu-latest` / `<version>-gpu` experimental) |
403
- | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.24.0 |
407
+ | GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.13.0 (`gpu-latest` / `<version>-gpu` experimental) |
408
+ | GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.25.0 |
404
409
 
405
410
  `abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
406
411
  not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
@@ -0,0 +1,22 @@
1
+ abstractgateway==0.13.0
2
+ abstractassistant==0.13.0
3
+ abstractcore==2.25.0
4
+ AbstractRuntime==0.9.0
5
+ abstractagent==0.3.18
6
+ abstractskill==0.3.0
7
+ AbstractMemory==0.3.0
8
+ abstractsemantics==0.0.5
9
+ abstractvoice==0.14.0
10
+ abstractvision==0.3.33
11
+ abstractmusic==0.1.16
12
+ abstract3d==0.3.2
13
+
14
+ [apple]
15
+ abstractgateway[apple]==0.13.0
16
+
17
+ [apple:platform_system == "Darwin"]
18
+ abstractassistant[apple]==0.13.0
19
+
20
+ [gpu]
21
+ abstractgateway[gpu]==0.13.0
22
+ abstractassistant[gpu]==0.13.0