abstractframework 0.6.2__tar.gz → 0.7.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.
- {abstractframework-0.6.2 → abstractframework-0.7.0}/CHANGELOG.md +226 -0
- {abstractframework-0.6.2/abstractframework.egg-info → abstractframework-0.7.0}/PKG-INFO +38 -30
- {abstractframework-0.6.2 → abstractframework-0.7.0}/README.md +26 -18
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework/__init__.py +12 -12
- {abstractframework-0.6.2 → abstractframework-0.7.0/abstractframework.egg-info}/PKG-INFO +38 -30
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework.egg-info/SOURCES.txt +3 -0
- abstractframework-0.7.0/abstractframework.egg-info/requires.txt +22 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/README.md +3 -3
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/api.md +8 -8
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/automations.md +66 -9
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/configuration.md +23 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/faq.md +43 -4
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/getting-started.md +6 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/install.md +154 -28
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/implementation-plan.md +1 -1
- {abstractframework-0.6.2 → abstractframework-0.7.0}/llms-full.txt +359 -100
- {abstractframework-0.6.2 → abstractframework-0.7.0}/llms.txt +5 -5
- {abstractframework-0.6.2 → abstractframework-0.7.0}/pyproject.toml +12 -12
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/install.sh +562 -18
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/tests/test_install_user_path.sh +242 -9
- {abstractframework-0.6.2 → abstractframework-0.7.0}/tests/test_install_profiles.py +25 -8
- abstractframework-0.7.0/tests/test_install_ps1_gpu_stack.py +432 -0
- abstractframework-0.7.0/tests/test_install_ps1_own_gateway.py +295 -0
- abstractframework-0.7.0/tests/test_install_sh_gpu_stack.py +306 -0
- abstractframework-0.6.2/abstractframework.egg-info/requires.txt +0 -22
- {abstractframework-0.6.2 → abstractframework-0.7.0}/LICENSE +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/MANIFEST.in +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework/__main__.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework/cli.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework/install_manifest.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework/py.typed +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework.egg-info/dependency_links.txt +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework.egg-info/entry_points.txt +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/abstractframework.egg-info/top_level.txt +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0001-layered-architecture.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0002-effect-system-design.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0003-tool-system-architecture.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0004-observability-strategy.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0005-memory-architecture.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0006-durable-tool-execution.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0008-token-terminology.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0012-portable-workflowartifact.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0035-capability-routing-defaults.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0036-artifact-descriptor-contract.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0037-hosted-file-source-contract-and-workspacepath-authority.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/0038-script-bootstrap-and-gateway-console-install.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/memory-recall-levels.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/agent-sessions.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/architecture.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/claude/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/claude/abstractframework-fit.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/claude/claude-skills-overview.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/claude/claude-skills-sources.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/claude/claude-skills-top-20.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/comparisons/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/glossary.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/LANDING.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/agent-skills.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/agent-vs-llm.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/agora-workflow-agent.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/apple-local-gateway-flow.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/capability-plugins.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/capability-routing-defaults.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/deployment-iphone.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/deployment-topologies.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/deployment-web.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/email-integration.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/event-inbox-agent.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/flow-and-kg-memory.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/gateway-security.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/headless-swarm.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/process-manager-env-vars.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/prompt-caching.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/runtime-artifacts.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/runtime-scope.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/scheduled-workflows.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/summoned-entities.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/telegram-integration.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/guide/workflow-bundles.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/components.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/operations-and-support.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/release-and-manifest.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/security-and-os-blocks.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/strategy.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/installers/user-journeys.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/prompts/agora-collaboration.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/email-inbox-agent.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/gateway-first-local-dev.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/offline-coding-assistant.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/phone-thin-client.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/specialized-agent-flow.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/telegram-permanent-contact.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/README.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/claude-agent-skills-overview.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/claude-agent-skills-sources.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/skills/claude-agent-skills-top-20.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/troubleshooting.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/docs/workspace-scripts.md +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/af-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/af.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/agora_react_flow_smoke.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/assistant-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/assistant.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/build.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/cache_probe_local_backends.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/cache_steer_repl.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/check_identity_sync.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/clone.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/code-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/code.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/commit.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/console-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/console.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/core_operator_drive.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/deps.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/entity-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/entity.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/event_inbox_flow_smoke.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/flow-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/flow.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/gateway-flow-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/gateway-flow.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/gateway-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/gateway.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/gen_llms_full.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/headless_fleet_bridge.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/headless_fleet_demo.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/headless_steer_repl.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/af_inventory.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/af_stack.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/af_supervisor.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/apps_common.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/build_macos_installer.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/gateway_user_tokens.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/lib/repo_groups.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/meet_castor.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/observer-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/observer.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/plan_walkthrough.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/pull.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/push.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/spawn_demo_agent.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/start-local.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/start.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/status.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/steer_repl.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/tests/test_af_supervisor.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/tests/test_inventory.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/tests/test_repo_scripts.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/uninstall.sh +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/scripts/visit_resume_cache_probe.py +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/setup.cfg +0 -0
- {abstractframework-0.6.2 → abstractframework-0.7.0}/tests/test_llms_full.py +0 -0
|
@@ -4,6 +4,232 @@ All notable changes to AbstractFramework will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.7.0] - 2026-09-30
|
|
8
|
+
|
|
9
|
+
Email for each user, and installer fixes. Pins: AbstractCore 2.20.1, AbstractRuntime 0.8.0,
|
|
10
|
+
AbstractGateway 0.8.0 and AbstractAssistant 0.10.0; the terminal consoles are
|
|
11
|
+
`abstractgateway-console` 0.12.0 and `abstractcore-console` 0.5.0, and the browser apps
|
|
12
|
+
AbstractCode web 0.7.0 and AbstractObserver 0.3.0 (built on AbstractUIC ui-kit 0.2.0 and panel-chat
|
|
13
|
+
0.1.21). Every other version is unchanged from 0.6.3.
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- **Your own mailbox on the gateway.** Each user connects their own email account (IMAP/SMTP with a
|
|
18
|
+
password or app password, or OAuth2 for Google and Microsoft) in the web console (**Users → My
|
|
19
|
+
email**), the terminal console (`@` on the Users screen) or `PUT /api/gateway/me/email`. The
|
|
20
|
+
account is tested before it is saved, stored in the user's own data folder with its credentials
|
|
21
|
+
encrypted, and every connection verifies TLS. The mailbox is read-only. Each user sets a recipient
|
|
22
|
+
policy (allowlist or denylist of addresses and domains) and send limits (20 per hour and 100 per
|
|
23
|
+
day by default); every send passes them. AbstractCore on its own gets the same account, one per
|
|
24
|
+
install: `abstractcore email ...`, the core web console's **Email** tab and the core terminal
|
|
25
|
+
console's Email screen. See [Configuration](docs/configuration.md#email-accounts).
|
|
26
|
+
`abstractcore email connect --password-stdin` (and `--client-secret-stdin` for OAuth) reads the
|
|
27
|
+
secret from stdin, so it never appears on a command line (AbstractCore 2.20.1).
|
|
28
|
+
- **Email automations.** The Assistant, the Observer and AbstractCode's browser client offer **When
|
|
29
|
+
an email arrives** (the `email.received@1` trigger: typed filters on sender, recipient, subject and
|
|
30
|
+
attachments; hourly batches by default for automations that run a model, never more often than
|
|
31
|
+
every 60 seconds; each message read once), **Email me the result**, and the recipients an
|
|
32
|
+
automation may email without asking (only you, by default). Inbound mail reaches the agent as
|
|
33
|
+
untrusted data in a fixed frame; an email-triggered automation never follows links from an email
|
|
34
|
+
(`fetch_url` and `browser_probe` ask) unless you name those tools. See
|
|
35
|
+
[Email automations](docs/automations.md#email-automations).
|
|
36
|
+
- **Email notifications**, off until you turn them on in **My email → Notifications**: automation
|
|
37
|
+
results and failures (for automations set to email you), a run waiting for your approval, and
|
|
38
|
+
runs started with an email notice. Each notice is sent once from a durable outbox, through your
|
|
39
|
+
own account, to your registered address.
|
|
40
|
+
- **Sign-in by email**: "Forgot your token?" and "Email me a sign-in code" on the gateway's sign-in
|
|
41
|
+
page for users with a connected account (single-use codes, 10-minute expiry).
|
|
42
|
+
- **What administrators decide**: whether email, agent email tools and sign-in by email are
|
|
43
|
+
available, gateway-wide and per user. Agent email tools are off by default: an agent gets the
|
|
44
|
+
email tools only when an administrator made them available, the user's account is connected, and
|
|
45
|
+
the user turned them on. Administrators see a user's mailbox state, never mail.
|
|
46
|
+
|
|
47
|
+
### Removed
|
|
48
|
+
|
|
49
|
+
- The `ABSTRACT_EMAIL_*` environment variables, the email accounts file and the gateway's email
|
|
50
|
+
bridge. A gateway or an AbstractCore install that still has them imports that account once into
|
|
51
|
+
the new settings; afterwards each variable still set is named at startup with the setting that
|
|
52
|
+
replaced it.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- **One gateway per data directory when you re-run the installer.** A gateway of this install that
|
|
57
|
+
you started yourself (for example with the summary's Start line) is recognized: it listens on the
|
|
58
|
+
install's port and serves the same data directory, as its serve record
|
|
59
|
+
(`<data dir>/run/gateway-serve.json`) or its `--data-dir` says. `install.sh` and `install.ps1` now
|
|
60
|
+
keep that port and replace the gateway with their own start, instead of moving to the next port
|
|
61
|
+
and starting a second gateway on the same data. A gateway of this install started by hand on
|
|
62
|
+
another port is stopped too. The replacement starts the way the installer starts every gateway, so
|
|
63
|
+
it binds as the gateway's Network setting says (for example 127.0.0.1), not with the `--host` the
|
|
64
|
+
hand-started one was given. With `--no-start` (`-NoStart`, the console's Update) it keeps
|
|
65
|
+
running and the summary says a restart is due. A program that is not this install's gateway
|
|
66
|
+
keeps the port, as before.
|
|
67
|
+
- **The installers signal only this install's gateway.** Before any stop, the process must belong
|
|
68
|
+
to your user, run `abstractgateway serve` and serve this data directory; the identity is checked
|
|
69
|
+
again right before the signal (and before a SIGKILL). A `gateway.pid` or serve record left behind
|
|
70
|
+
that names another program (a reused pid) is left alone and said so.
|
|
71
|
+
- **Known limit on Windows with start at login on:** Windows does not tell the installer which
|
|
72
|
+
process the login item started, so a gateway of this data directory that you started yourself on
|
|
73
|
+
the install's port is taken for the login item and left running. Stop it and re-run the
|
|
74
|
+
installer to get the login item's gateway.
|
|
75
|
+
- **A release published minutes earlier installs at once.** The installers pass
|
|
76
|
+
`--refresh-package` for `abstractgateway` and every package of the release matrix to
|
|
77
|
+
`uv tool install`, so uv asks PyPI again instead of using its cached index page (which could say
|
|
78
|
+
"no version of abstractgateway[gpu]==<pin>" until `uv cache clean abstractgateway`).
|
|
79
|
+
|
|
80
|
+
### Changed
|
|
81
|
+
|
|
82
|
+
- **Launch flags in the commands the installers print.** The summary's Start line and the
|
|
83
|
+
background start's command (the "same steps by hand" list) read
|
|
84
|
+
`abstractgateway serve --data-dir <data dir>` (plus `--host`/`--port` when the gateway has no
|
|
85
|
+
Network setting) instead of `ABSTRACTGATEWAY_DATA_DIR=... ABSTRACTGATEWAY_USER_AUTH=1 ...`; the
|
|
86
|
+
gateway starts with user auth on by itself. The installers themselves still pass the data dir to
|
|
87
|
+
the gateway commands they run (`network`, `service install`, `claim-url`) through
|
|
88
|
+
`ABSTRACTGATEWAY_DATA_DIR`. Gateways before 0.3 (`--pin`) keep the environment form.
|
|
89
|
+
|
|
90
|
+
## [0.6.3] - 2026-09-29
|
|
91
|
+
|
|
92
|
+
The `gpu` setting on NVIDIA machines, speech-to-text in the fresh setup, and loaded image models
|
|
93
|
+
that are reused. Pins: AbstractGateway 0.7.4, AbstractCore 2.19.2, AbstractRuntime 0.7.3,
|
|
94
|
+
AbstractVoice 0.13.2, AbstractVision 0.3.33 and Abstract3D 0.3.2; the gateway's terminal console is
|
|
95
|
+
`abstractgateway-console` 0.11.2, and the browser client AbstractCode web is 0.6.2. Every other
|
|
96
|
+
version, and the other terminal clients, are unchanged from 0.6.2.
|
|
97
|
+
|
|
98
|
+
### Added
|
|
99
|
+
|
|
100
|
+
- **The `gpu` setting on Linux + NVIDIA, rehearsed on real hardware with this release.** On
|
|
101
|
+
Ubuntu 26.04 with a Quadro RTX 5000 (16 GB, driver 595.91.07, CUDA 13.2; 4 vCPU, 26 GB RAM),
|
|
102
|
+
`install.sh` installed this release's candidate versions from PyPI in 3 min 1 s (AbstractGateway
|
|
103
|
+
0.7.3, AbstractCore 2.19.1, AbstractRuntime 0.7.2, AbstractVoice 0.13.1 and AbstractVision 0.3.32;
|
|
104
|
+
the patch releases listed under Fixed came after this run). The previous
|
|
105
|
+
install had been removed with `uninstall.sh --yes --purge` and uv's download cache cleared; model
|
|
106
|
+
weights, LM Studio and a Rust toolchain were already on the machine. The Python packages took 39 s
|
|
107
|
+
(about 5.8 GB of wheels), llama.cpp's `cu130` build 18 s (726 MB), compiling the two terminal
|
|
108
|
+
clients with cargo 110 s, and the start and health check 5 s. The install added 14.2 GB on disk.
|
|
109
|
+
Its checks reported PyTorch 2.11.0 on CUDA 13.0, llama.cpp 0.3.35 (`cu130`) with GPU offload and
|
|
110
|
+
Whisper on the GPU. Run again, it reported "already up to date" in 10 s. With **Use recommended
|
|
111
|
+
defaults** and the model weights already downloaded:
|
|
112
|
+
- text with LM Studio (`qwen/qwen3.5-9b`, Q4_K_M, 6.5 GB on the GPU): the first gateway request
|
|
113
|
+
took 23 s including loading the model, the next 12 s for a 318-token answer (308 of them
|
|
114
|
+
reasoning); from AbstractCore in Python about 41 tokens/s;
|
|
115
|
+
- text-to-speech with Supertonic, on the processor: 1.1 to 1.4 s per sentence (3.2 s for the
|
|
116
|
+
first gateway request);
|
|
117
|
+
- image generation with FLUX.2 [klein] 4B through Diffusers, with model CPU offload (7.8 GB
|
|
118
|
+
peak): 41 s to load the model, then 15 to 16 s per 1024x1024 image. Each gateway image request
|
|
119
|
+
loads the model again, so one request takes 54 to 59 s;
|
|
120
|
+
- speech-to-text did not work as installed; see Known issues below.
|
|
121
|
+
|
|
122
|
+
vLLM 0.22.1 installs with the gpu setting but was not validated: it needs a C compiler
|
|
123
|
+
(`build-essential`) the first time it starts a model, and on GPUs older than compute capability
|
|
124
|
+
8.0 the `--attention-backend TRITON_ATTN` option. See
|
|
125
|
+
[GPU on Linux (NVIDIA)](docs/install.md#gpu-on-linux-nvidia).
|
|
126
|
+
- **`install.sh` on Linux + NVIDIA** installs llama.cpp's CUDA build that matches PyTorch's CUDA
|
|
127
|
+
(PyPI's PyTorch for Linux is a CUDA 13 build, which needs NVIDIA driver 580 or newer; with an
|
|
128
|
+
older driver PyTorch and llama.cpp run on the processor) and keeps it only when it
|
|
129
|
+
loads and offloads to the GPU; otherwise the CPU build goes back and the summary says why. At the
|
|
130
|
+
end it checks that PyTorch sees the GPU and which device Whisper uses (`PyTorch:`, `GGUF:` and
|
|
131
|
+
`Voice:` summary lines), and warns when no C compiler is found for vLLM.
|
|
132
|
+
- **`install.ps1` on Windows + NVIDIA** picks the GPU stack from `nvidia-smi` (CUDA 13 with driver
|
|
133
|
+
580 or newer and compute capability 7.5 or newer, CUDA 12 with driver 525 or newer, otherwise the
|
|
134
|
+
CPU), installs PyTorch's CUDA build and llama.cpp's matching prebuilt build (CUDA, then Vulkan,
|
|
135
|
+
then CPU), and ends with GPU checks that replace any part that does not work with one that does.
|
|
136
|
+
The Windows gpu setting is implemented and tested with simulated drivers and wheel-only
|
|
137
|
+
resolves, but it has **not yet been validated on real NVIDIA hardware**. See
|
|
138
|
+
[GPU on Windows (NVIDIA)](docs/install.md#gpu-on-windows-nvidia).
|
|
139
|
+
- **Live installer progress.** Both installers show uv's output as it comes, with a
|
|
140
|
+
`still working (… elapsed; last: …)` line after 15 seconds of silence, so a multi-GB download no
|
|
141
|
+
longer looks frozen. `install.ps1` announces the big downloads before they start.
|
|
142
|
+
|
|
143
|
+
### Changed
|
|
144
|
+
|
|
145
|
+
- **Only the three install settings in hints.** Every install hint across the framework names
|
|
146
|
+
light (`pip install -U abstractcore`), `abstractcore[apple]` or `abstractcore[gpu]`, or says that
|
|
147
|
+
a capability is not available on this machine, never a bare package or a plugin's own extra
|
|
148
|
+
(AbstractCore 2.19.1, AbstractGateway 0.7.3, AbstractVoice 0.13.1, AbstractRuntime 0.7.2,
|
|
149
|
+
Abstract3D 0.3.2).
|
|
150
|
+
- **Smaller gpu setting.** The gpu setting no longer installs MLX-Gen (AbstractVision 0.3.32):
|
|
151
|
+
about 2.1 GB less on Linux, and it installs on Linux distributions with an older glibc.
|
|
152
|
+
- **`abstractcore[gpu]` installs on Windows with wheels only** (vLLM is Linux only;
|
|
153
|
+
stable-diffusion.cpp and llama.cpp are left to the installer's prebuilt builds on Windows).
|
|
154
|
+
- **Recommendations on NVIDIA machines.** **Use recommended defaults** picks FLUX.2 [klein] 4B
|
|
155
|
+
through Diffusers for image generation on an NVIDIA GPU (it fits a 16 GB card), and the LM Studio
|
|
156
|
+
text download is `qwen/qwen3.5-9b@q4_k_m`, which LM Studio offers on Linux and Windows.
|
|
157
|
+
- **AbstractRuntime depends on AbstractCore's three settings** (`abstractcore`, `[apple]`, `[gpu]`),
|
|
158
|
+
and `openai` 2.x is allowed across the stack, so the gpu setting resolves a current vLLM.
|
|
159
|
+
|
|
160
|
+
### Fixed
|
|
161
|
+
|
|
162
|
+
- **The approval gate shows in every client.** When the agent's tool call waits for approval, a
|
|
163
|
+
browser or phone that opens the same conversation later now shows the same Allow / Deny card and
|
|
164
|
+
"Approval needed" as the client that started the turn, instead of "Running a tool" and a Steer box
|
|
165
|
+
(AbstractCode web 0.6.2 with `@abstractframework/panel-chat` 0.1.20; two-browser end-to-end test).
|
|
166
|
+
- **Speech-to-text without an OpenAI key.** Transcription runs on the configured `input.voice`
|
|
167
|
+
route (for example local Whisper) and no longer needs TTS credentials (AbstractCore 2.19.1,
|
|
168
|
+
AbstractVoice 0.13.1).
|
|
169
|
+
- **Speech-to-text in the fresh setup.** The fresh-install defaults and **Use recommended defaults**
|
|
170
|
+
set speech input (`input.voice`: faster-whisper, model `base`) with text, voice and images, so a
|
|
171
|
+
new install transcribes locally without an OpenAI key (AbstractCore 2.19.2, AbstractGateway
|
|
172
|
+
0.7.4). An install that earlier release defaults seeded gains the route once, when it is empty; a
|
|
173
|
+
route you set yourself is kept. PyAV is held below 19, which faster-whisper 1.2.1 needs to read
|
|
174
|
+
audio files (AbstractVoice 0.13.2).
|
|
175
|
+
- **Use recommended defaults saves every route it reports**, including on a fresh install right
|
|
176
|
+
after the console read the routes (AbstractCore 2.19.2).
|
|
177
|
+
- **Whisper on NVIDIA GPUs.** faster-whisper uses CUDA only when CUDA 12 cuBLAS loads (installed
|
|
178
|
+
with the gpu setting on Linux and Windows), and otherwise runs on the CPU with a warning.
|
|
179
|
+
- **llama.cpp on CUDA** loads without importing PyTorch first on Linux, and a GGUF model too large
|
|
180
|
+
for the GPU at its full context tries smaller contexts on the GPU before falling back to the CPU.
|
|
181
|
+
- **Image generation on smaller GPUs.** A Diffusers pipeline that does not fit the GPU's free
|
|
182
|
+
memory loads with model CPU offload instead of failing with CUDA out of memory. When even the
|
|
183
|
+
largest component does not fit (for example next to a loaded text model), it falls back to
|
|
184
|
+
sequential CPU offload, which uses much less GPU memory and is slower per step (AbstractVision
|
|
185
|
+
0.3.33). On the Quadro RTX 5000, FLUX.2 [klein] 4B at 768x768 and 4 steps peaked near 1.4 GB and
|
|
186
|
+
took 10.9 to 15.6 s, against 13.4 to 18.5 s with model CPU offload; at about 2.3 s per step
|
|
187
|
+
against 1.5 s, models that run many steps are slower with it.
|
|
188
|
+
- **A loaded image model is reused.** After **Load** in the console (or `POST /models/load`), image
|
|
189
|
+
and video requests for that model run on the loaded pipeline instead of loading the model again
|
|
190
|
+
for each request (AbstractRuntime 0.7.3, AbstractGateway 0.7.4). On the rehearsal machine,
|
|
191
|
+
FLUX.2 [klein] 4B images through the gateway took 17 to 19 s each instead of 54 to 59 s. A model
|
|
192
|
+
that was not loaded still runs each request in its own process.
|
|
193
|
+
- **Unloading an image model frees its memory.** On CUDA, FLUX.2 [klein] 4B with model CPU offload
|
|
194
|
+
left 16.3 GB held after an unload; it now leaves 0.86 GB (AbstractVision 0.3.33).
|
|
195
|
+
|
|
196
|
+
### Security
|
|
197
|
+
|
|
198
|
+
- **Email connections verify TLS.** AbstractCore's mail tools (`list_emails`, `read_email`,
|
|
199
|
+
`send_email`) and the gateway's email bridge check the server certificate and host name, and refuse
|
|
200
|
+
before login when the check fails; a server signed by a private CA is trusted with the new
|
|
201
|
+
`ca_file` field of an account (AbstractCore 2.19.2, AbstractGateway 0.7.4).
|
|
202
|
+
- **Automations no longer email anyone the model chooses.** With the default automatic tool
|
|
203
|
+
approval, message-sending tools are no longer pre-approved: a `send_email` to your registered
|
|
204
|
+
email runs unattended, any other recipient waits for your approval (AbstractRuntime 0.7.3,
|
|
205
|
+
AbstractGateway 0.7.4).
|
|
206
|
+
- A `password_env_var` / `imap_password_env_var` that is not an environment variable name is refused
|
|
207
|
+
instead of being read as the password (AbstractCore 2.19.2, AbstractGateway 0.7.4).
|
|
208
|
+
|
|
209
|
+
### Found in the rehearsal
|
|
210
|
+
|
|
211
|
+
Found in the rehearsal on the Quadro RTX 5000 described above, which ran the candidate versions. The
|
|
212
|
+
Fixed entries above address each one.
|
|
213
|
+
|
|
214
|
+
- **Speech-to-text failed on a fresh gpu install**, for two reasons:
|
|
215
|
+
- **Use recommended defaults** did not set the speech input route (`input.voice`). With no route,
|
|
216
|
+
transcription used OpenAI and failed with "OpenAI audio requires OPENAI_API_KEY".
|
|
217
|
+
- PyAV 19.0.0, released on 2026-09-29, removed an option that faster-whisper 1.2.1 uses to read
|
|
218
|
+
audio files. Every transcription through the gateway then failed with `open() got an unexpected
|
|
219
|
+
keyword argument 'metadata_errors'`.
|
|
220
|
+
|
|
221
|
+
With the route set to faster-whisper `base` by hand and PyAV 18, faster-whisper transcribed on the
|
|
222
|
+
GPU with no OpenAI key: 1.0 to 2.3 s per gateway request, and 0.3 GB of GPU memory.
|
|
223
|
+
- **An image next to a loaded text model ran out of GPU memory on a 16 GB card.** LM Studio's
|
|
224
|
+
`qwen/qwen3.5-9b` keeps 6.5 GB on the GPU while it is loaded. FLUX.2 [klein] needed 7.8 GB even
|
|
225
|
+
with model CPU offload, so the image request failed with CUDA out of memory after three attempts
|
|
226
|
+
(about 2.5 minutes). With the text model unloaded (`lms unload --all`, or the console's model
|
|
227
|
+
list), the same request worked. In this case AbstractVision 0.3.33 falls back to sequential CPU
|
|
228
|
+
offload (see Fixed above).
|
|
229
|
+
- **Use recommended defaults could skip the image route on a fresh install.** On an NVIDIA machine,
|
|
230
|
+
if the button was used within a few seconds of the console reading the routes, it could report the
|
|
231
|
+
image route as already set without saving it. Using it again saved it.
|
|
232
|
+
|
|
7
233
|
## [0.6.2] - 2026-09-29
|
|
8
234
|
|
|
9
235
|
One line installs, upgrades and repairs AbstractFramework, and **Update** in the consoles and the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractframework
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.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.
|
|
27
|
-
Requires-Dist: abstractassistant==0.
|
|
28
|
-
Requires-Dist: abstractcore==2.
|
|
29
|
-
Requires-Dist: AbstractRuntime==0.
|
|
26
|
+
Requires-Dist: abstractgateway==0.8.0
|
|
27
|
+
Requires-Dist: abstractassistant==0.10.0
|
|
28
|
+
Requires-Dist: abstractcore==2.20.1
|
|
29
|
+
Requires-Dist: AbstractRuntime==0.8.0
|
|
30
30
|
Requires-Dist: abstractagent==0.3.17
|
|
31
31
|
Requires-Dist: abstractskill==0.3.0
|
|
32
32
|
Requires-Dist: AbstractMemory==0.3.0
|
|
33
33
|
Requires-Dist: abstractsemantics==0.0.5
|
|
34
|
-
Requires-Dist: abstractvoice==0.13.
|
|
35
|
-
Requires-Dist: abstractvision==0.3.
|
|
34
|
+
Requires-Dist: abstractvoice==0.13.2
|
|
35
|
+
Requires-Dist: abstractvision==0.3.33
|
|
36
36
|
Requires-Dist: abstractmusic==0.1.15
|
|
37
|
-
Requires-Dist: abstract3d==0.3.
|
|
37
|
+
Requires-Dist: abstract3d==0.3.2
|
|
38
38
|
Provides-Extra: apple
|
|
39
|
-
Requires-Dist: abstractgateway[apple]==0.
|
|
40
|
-
Requires-Dist: abstractassistant[apple]==0.
|
|
39
|
+
Requires-Dist: abstractgateway[apple]==0.8.0; 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.
|
|
43
|
-
Requires-Dist: abstractassistant[gpu]==0.
|
|
42
|
+
Requires-Dist: abstractgateway[gpu]==0.8.0; extra == "gpu"
|
|
43
|
+
Requires-Dist: abstractassistant[gpu]==0.10.0; extra == "gpu"
|
|
44
44
|
Dynamic: license-file
|
|
45
45
|
|
|
46
46
|
# AbstractFramework
|
|
@@ -89,6 +89,13 @@ once: it reads your earlier options from what is installed (or repeat them once)
|
|
|
89
89
|
button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
|
|
90
90
|
[Upgrade](docs/install.md#upgrade).
|
|
91
91
|
|
|
92
|
+
On Linux or Windows with an NVIDIA GPU (`nvidia-smi` works), the installer picks the `gpu` profile:
|
|
93
|
+
PyTorch and llama.cpp on CUDA, Whisper on the GPU, Diffusers image generation. On Linux it needs
|
|
94
|
+
NVIDIA driver 580 or newer. Its release candidate was rehearsed on a Quadro RTX 5000 on Ubuntu
|
|
95
|
+
26.04; the measured results, and what the final versions changed, are in GPU on Linux. The Windows gpu install is
|
|
96
|
+
implemented but not yet validated on real NVIDIA hardware. See [GPU on Linux](docs/install.md#gpu-on-linux-nvidia) and
|
|
97
|
+
[GPU on Windows](docs/install.md#gpu-on-windows-nvidia).
|
|
98
|
+
|
|
92
99
|
The installer sets up the gateway in your user account (no admin password, no system Python),
|
|
93
100
|
with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
|
|
94
101
|
at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
|
|
@@ -161,7 +168,8 @@ Start here if you're building persistent AI applications — agents that run for
|
|
|
161
168
|
|
|
162
169
|
- Durable execution that survives crashes and restarts
|
|
163
170
|
- Append-only ledger (replay-first) for auditability
|
|
164
|
-
- 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))
|
|
165
173
|
- Multi-client: terminal, browser, tray, Telegram, email
|
|
166
174
|
- Start on one device, continue on another
|
|
167
175
|
|
|
@@ -209,7 +217,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
|
|
|
209
217
|
```
|
|
210
218
|
|
|
211
219
|
Container images are published for the gateway and the AbstractCore server:
|
|
212
|
-
`ghcr.io/lpalbou/abstractgateway:0.
|
|
220
|
+
`ghcr.io/lpalbou/abstractgateway:0.8.0` and `ghcr.io/lpalbou/abstractcore-server:2.20.1`.
|
|
213
221
|
|
|
214
222
|
For artifact and runtime-resource investigation, see
|
|
215
223
|
[Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
|
|
@@ -353,9 +361,9 @@ pip install "abstractframework[gpu]"
|
|
|
353
361
|
|---|---|---|---|
|
|
354
362
|
| Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
|
|
355
363
|
| Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
|
|
356
|
-
| GPU | `pip install "abstractframework[gpu]"` | Linux
|
|
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+) |
|
|
357
365
|
|
|
358
|
-
### Release matrix (abstractframework 0.
|
|
366
|
+
### Release matrix (abstractframework 0.7.0)
|
|
359
367
|
|
|
360
368
|
`abstractframework` pins every Python package with `==`, so one version of the
|
|
361
369
|
meta-package always installs the same stack. The browser apps and Rust tools are
|
|
@@ -364,32 +372,32 @@ and tested together.
|
|
|
364
372
|
|
|
365
373
|
| Registry | Package | Version |
|
|
366
374
|
|---|---|---|
|
|
367
|
-
| PyPI | `abstractgateway` | 0.
|
|
368
|
-
| PyPI | `abstractassistant` | 0.
|
|
369
|
-
| PyPI | `abstractcore` | 2.
|
|
370
|
-
| PyPI | `AbstractRuntime` | 0.
|
|
375
|
+
| PyPI | `abstractgateway` | 0.8.0 |
|
|
376
|
+
| PyPI | `abstractassistant` | 0.10.0 |
|
|
377
|
+
| PyPI | `abstractcore` | 2.20.1 |
|
|
378
|
+
| PyPI | `AbstractRuntime` | 0.8.0 |
|
|
371
379
|
| PyPI | `abstractagent` | 0.3.17 |
|
|
372
380
|
| PyPI | `abstractskill` | 0.3.0 |
|
|
373
381
|
| PyPI | `AbstractMemory` | 0.3.0 |
|
|
374
382
|
| PyPI | `abstractsemantics` | 0.0.5 |
|
|
375
|
-
| PyPI | `abstractvoice` | 0.13.
|
|
376
|
-
| PyPI | `abstractvision` | 0.3.
|
|
383
|
+
| PyPI | `abstractvoice` | 0.13.2 |
|
|
384
|
+
| PyPI | `abstractvision` | 0.3.33 |
|
|
377
385
|
| PyPI | `abstractmusic` | 0.1.15 |
|
|
378
|
-
| PyPI | `abstract3d` | 0.3.
|
|
386
|
+
| PyPI | `abstract3d` | 0.3.2 |
|
|
379
387
|
| npm | `@abstractframework/flow` | 0.4.0 |
|
|
380
|
-
| npm | `@abstractframework/code` | 0.
|
|
381
|
-
| npm | `@abstractframework/observer` | 0.
|
|
388
|
+
| npm | `@abstractframework/code` | 0.7.0 |
|
|
389
|
+
| npm | `@abstractframework/observer` | 0.3.0 |
|
|
382
390
|
| npm | `@abstractframework/continuum` | 0.4.0 |
|
|
383
391
|
| npm | `@abstractframework/entity` | 0.3.0 |
|
|
384
392
|
| crates.io | `abstractcode` | 0.7.1 |
|
|
385
|
-
| crates.io | `abstractgateway-console` | 0.
|
|
386
|
-
| crates.io | `abstractcore-console` | 0.
|
|
393
|
+
| crates.io | `abstractgateway-console` | 0.12.0 |
|
|
394
|
+
| crates.io | `abstractcore-console` | 0.5.0 |
|
|
387
395
|
| crates.io | `abstracttui` | 0.6.0 |
|
|
388
|
-
| GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.
|
|
389
|
-
| GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.
|
|
396
|
+
| GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.0 (`gpu-latest` / `<version>-gpu` experimental) |
|
|
397
|
+
| GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.1 |
|
|
390
398
|
|
|
391
399
|
`abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
|
|
392
|
-
not part of any profile installs separately: `pip install abstractcamera` (0.2.
|
|
400
|
+
not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
|
|
393
401
|
comes with the gateway, which carries its curated skill shelf; install it on its own with
|
|
394
402
|
`pip install abstractskill`.
|
|
395
403
|
|
|
@@ -44,6 +44,13 @@ once: it reads your earlier options from what is installed (or repeat them once)
|
|
|
44
44
|
button of gateway 0.7.1 cannot upgrade. Gateway only, apps, and version checks:
|
|
45
45
|
[Upgrade](docs/install.md#upgrade).
|
|
46
46
|
|
|
47
|
+
On Linux or Windows with an NVIDIA GPU (`nvidia-smi` works), the installer picks the `gpu` profile:
|
|
48
|
+
PyTorch and llama.cpp on CUDA, Whisper on the GPU, Diffusers image generation. On Linux it needs
|
|
49
|
+
NVIDIA driver 580 or newer. Its release candidate was rehearsed on a Quadro RTX 5000 on Ubuntu
|
|
50
|
+
26.04; the measured results, and what the final versions changed, are in GPU on Linux. The Windows gpu install is
|
|
51
|
+
implemented but not yet validated on real NVIDIA hardware. See [GPU on Linux](docs/install.md#gpu-on-linux-nvidia) and
|
|
52
|
+
[GPU on Windows](docs/install.md#gpu-on-windows-nvidia).
|
|
53
|
+
|
|
47
54
|
The installer sets up the gateway in your user account (no admin password, no system Python),
|
|
48
55
|
with local voice (Supertonic text-to-speech and Whisper speech-to-text), asks whether to start it
|
|
49
56
|
at login (Enter = yes; an unattended install leaves it off and says how to turn it on), starts it
|
|
@@ -116,7 +123,8 @@ Start here if you're building persistent AI applications — agents that run for
|
|
|
116
123
|
|
|
117
124
|
- Durable execution that survives crashes and restarts
|
|
118
125
|
- Append-only ledger (replay-first) for auditability
|
|
119
|
-
- 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))
|
|
120
128
|
- Multi-client: terminal, browser, tray, Telegram, email
|
|
121
129
|
- Start on one device, continue on another
|
|
122
130
|
|
|
@@ -164,7 +172,7 @@ abstractgateway-console --gateway-url http://127.0.0.1:8080 --token <admin token
|
|
|
164
172
|
```
|
|
165
173
|
|
|
166
174
|
Container images are published for the gateway and the AbstractCore server:
|
|
167
|
-
`ghcr.io/lpalbou/abstractgateway:0.
|
|
175
|
+
`ghcr.io/lpalbou/abstractgateway:0.8.0` and `ghcr.io/lpalbou/abstractcore-server:2.20.1`.
|
|
168
176
|
|
|
169
177
|
For artifact and runtime-resource investigation, see
|
|
170
178
|
[Runtime artifacts and retrieval](docs/guide/runtime-artifacts.md).
|
|
@@ -308,9 +316,9 @@ pip install "abstractframework[gpu]"
|
|
|
308
316
|
|---|---|---|---|
|
|
309
317
|
| Light | `pip install abstractframework` | macOS, Linux, Windows | 3.10–3.13 |
|
|
310
318
|
| Apple | `pip install "abstractframework[apple]"` | macOS 14+ on Apple Silicon | 3.10–3.13 (F5-TTS voice cloning needs 3.11+) |
|
|
311
|
-
| GPU | `pip install "abstractframework[gpu]"` | Linux
|
|
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+) |
|
|
312
320
|
|
|
313
|
-
### Release matrix (abstractframework 0.
|
|
321
|
+
### Release matrix (abstractframework 0.7.0)
|
|
314
322
|
|
|
315
323
|
`abstractframework` pins every Python package with `==`, so one version of the
|
|
316
324
|
meta-package always installs the same stack. The browser apps and Rust tools are
|
|
@@ -319,32 +327,32 @@ and tested together.
|
|
|
319
327
|
|
|
320
328
|
| Registry | Package | Version |
|
|
321
329
|
|---|---|---|
|
|
322
|
-
| PyPI | `abstractgateway` | 0.
|
|
323
|
-
| PyPI | `abstractassistant` | 0.
|
|
324
|
-
| PyPI | `abstractcore` | 2.
|
|
325
|
-
| PyPI | `AbstractRuntime` | 0.
|
|
330
|
+
| PyPI | `abstractgateway` | 0.8.0 |
|
|
331
|
+
| PyPI | `abstractassistant` | 0.10.0 |
|
|
332
|
+
| PyPI | `abstractcore` | 2.20.1 |
|
|
333
|
+
| PyPI | `AbstractRuntime` | 0.8.0 |
|
|
326
334
|
| PyPI | `abstractagent` | 0.3.17 |
|
|
327
335
|
| PyPI | `abstractskill` | 0.3.0 |
|
|
328
336
|
| PyPI | `AbstractMemory` | 0.3.0 |
|
|
329
337
|
| PyPI | `abstractsemantics` | 0.0.5 |
|
|
330
|
-
| PyPI | `abstractvoice` | 0.13.
|
|
331
|
-
| PyPI | `abstractvision` | 0.3.
|
|
338
|
+
| PyPI | `abstractvoice` | 0.13.2 |
|
|
339
|
+
| PyPI | `abstractvision` | 0.3.33 |
|
|
332
340
|
| PyPI | `abstractmusic` | 0.1.15 |
|
|
333
|
-
| PyPI | `abstract3d` | 0.3.
|
|
341
|
+
| PyPI | `abstract3d` | 0.3.2 |
|
|
334
342
|
| npm | `@abstractframework/flow` | 0.4.0 |
|
|
335
|
-
| npm | `@abstractframework/code` | 0.
|
|
336
|
-
| npm | `@abstractframework/observer` | 0.
|
|
343
|
+
| npm | `@abstractframework/code` | 0.7.0 |
|
|
344
|
+
| npm | `@abstractframework/observer` | 0.3.0 |
|
|
337
345
|
| npm | `@abstractframework/continuum` | 0.4.0 |
|
|
338
346
|
| npm | `@abstractframework/entity` | 0.3.0 |
|
|
339
347
|
| crates.io | `abstractcode` | 0.7.1 |
|
|
340
|
-
| crates.io | `abstractgateway-console` | 0.
|
|
341
|
-
| crates.io | `abstractcore-console` | 0.
|
|
348
|
+
| crates.io | `abstractgateway-console` | 0.12.0 |
|
|
349
|
+
| crates.io | `abstractcore-console` | 0.5.0 |
|
|
342
350
|
| crates.io | `abstracttui` | 0.6.0 |
|
|
343
|
-
| GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.
|
|
344
|
-
| GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.
|
|
351
|
+
| GHCR | `ghcr.io/lpalbou/abstractgateway` | 0.8.0 (`gpu-latest` / `<version>-gpu` experimental) |
|
|
352
|
+
| GHCR | `ghcr.io/lpalbou/abstractcore-server` | 2.20.1 |
|
|
345
353
|
|
|
346
354
|
`abstract3d` (pinned above) comes with AbstractCore in every profile. The optional add-on that is
|
|
347
|
-
not part of any profile installs separately: `pip install abstractcamera` (0.2.
|
|
355
|
+
not part of any profile installs separately: `pip install abstractcamera` (0.2.1). `abstractskill` (pinned above)
|
|
348
356
|
comes with the gateway, which carries its curated skill shelf; install it on its own with
|
|
349
357
|
`pip install abstractskill`.
|
|
350
358
|
|
|
@@ -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.
|
|
13
|
+
__version__ = "0.7.0"
|
|
14
14
|
__author__ = "Laurent-Philippe Albou"
|
|
15
15
|
__license__ = "MIT"
|
|
16
16
|
|
|
17
17
|
RELEASE_VERSIONS: dict[str, str] = {
|
|
18
|
-
"abstractcore": "2.
|
|
19
|
-
"abstractruntime": "0.
|
|
18
|
+
"abstractcore": "2.20.1",
|
|
19
|
+
"abstractruntime": "0.8.0",
|
|
20
20
|
"abstractagent": "0.3.17",
|
|
21
|
-
"abstractgateway": "0.
|
|
21
|
+
"abstractgateway": "0.8.0",
|
|
22
22
|
"abstractskill": "0.3.0",
|
|
23
23
|
"abstractmemory": "0.3.0",
|
|
24
24
|
"abstractsemantics": "0.0.5",
|
|
25
|
-
"abstractvoice": "0.13.
|
|
26
|
-
"abstractvision": "0.3.
|
|
25
|
+
"abstractvoice": "0.13.2",
|
|
26
|
+
"abstractvision": "0.3.33",
|
|
27
27
|
"abstractmusic": "0.1.15",
|
|
28
|
-
"abstract3d": "0.3.
|
|
29
|
-
"abstractassistant": "0.
|
|
28
|
+
"abstract3d": "0.3.2",
|
|
29
|
+
"abstractassistant": "0.10.0",
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
PACKAGE_DISTRIBUTIONS: dict[str, str] = {
|
|
@@ -46,8 +46,8 @@ 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.
|
|
50
|
-
"@abstractframework/observer": "0.
|
|
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
|
}
|
|
@@ -55,8 +55,8 @@ NPM_RELEASE_VERSIONS: dict[str, str] = {
|
|
|
55
55
|
# Terminal tools published on crates.io alongside this release (installed with `cargo install`,
|
|
56
56
|
# or by the bootstrap scripts: the gateway console and abstractcode by default).
|
|
57
57
|
CRATE_RELEASE_VERSIONS: dict[str, str] = {
|
|
58
|
-
"abstractgateway-console": "0.
|
|
59
|
-
"abstractcore-console": "0.
|
|
58
|
+
"abstractgateway-console": "0.12.0",
|
|
59
|
+
"abstractcore-console": "0.5.0",
|
|
60
60
|
"abstractcode": "0.7.1",
|
|
61
61
|
"abstracttui": "0.6.0",
|
|
62
62
|
}
|