abstractframework 0.1.6__tar.gz → 0.1.7__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.1.6 → abstractframework-0.1.7}/CHANGELOG.md +26 -0
- {abstractframework-0.1.6/abstractframework.egg-info → abstractframework-0.1.7}/PKG-INFO +5 -1
- {abstractframework-0.1.6 → abstractframework-0.1.7}/README.md +4 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework/__init__.py +27 -30
- abstractframework-0.1.7/abstractframework/__main__.py +5 -0
- abstractframework-0.1.7/abstractframework/cli.py +214 -0
- abstractframework-0.1.7/abstractframework/install_manifest.py +145 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7/abstractframework.egg-info}/PKG-INFO +5 -1
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/SOURCES.txt +12 -0
- abstractframework-0.1.7/abstractframework.egg-info/entry_points.txt +2 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/README.md +2 -1
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/api.md +21 -0
- abstractframework-0.1.7/docs/backlog/completed/0158_installer_repository_extraction.md +77 -0
- abstractframework-0.1.7/docs/backlog/completed/0159_generated_install_manifest_contract.md +79 -0
- abstractframework-0.1.7/docs/backlog/completed/0160_framework_doctor_and_launch_cli.md +73 -0
- abstractframework-0.1.7/docs/backlog/completed/0161_three_path_public_install_guide.md +77 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/overview.md +12 -0
- abstractframework-0.1.7/docs/backlog/proposed/installers/0162_signed_installer_ci_and_distribution.md +64 -0
- abstractframework-0.1.7/docs/backlog/proposed/installers/0163_cpu_local_inference_install_profile.md +66 -0
- abstractframework-0.1.7/docs/backlog/proposed/installers/README.md +33 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/faq.md +4 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/getting-started.md +2 -0
- abstractframework-0.1.7/docs/install.md +134 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/README.md +5 -3
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/release-and-manifest.md +10 -1
- {abstractframework-0.1.6 → abstractframework-0.1.7}/llms-full.txt +1061 -32
- {abstractframework-0.1.6 → abstractframework-0.1.7}/llms.txt +3 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/pyproject.toml +4 -1
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/build.sh +12 -10
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gateway-flow-local.sh +12 -6
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gen_llms_full.py +10 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/tests/test_install_profiles.py +50 -24
- {abstractframework-0.1.6 → abstractframework-0.1.7}/LICENSE +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/MANIFEST.in +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework/py.typed +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/dependency_links.txt +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/requires.txt +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/top_level.txt +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0001-layered-architecture.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0002-effect-system-design.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0003-tool-system-architecture.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0004-observability-strategy.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0005-memory-architecture.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0006-durable-tool-execution.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0008-token-terminology.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0012-portable-workflowartifact.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0035-capability-routing-defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/memory-recall-levels.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/architecture.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/001_documentation_overhaul.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/002_clone_and_build_scripts.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/003_cross_package_documentation_review.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/005_abstractmusic_music_generation_capability_plugin.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/006_abstractmusic_docs_clarify_llm_vs_music_backend.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/007_abstractmusic_local_inprocess_generation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/008_abstractmusic_cli_and_repl.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/009_abstractcore_music_endpoints_and_abstractmusic_mps_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/010_abstractmusic_mps_fallback_reload_cpu_float32.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/011_investigate_acestep_mps_support.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/012_abstractmusic_acestep_v15_local_backend.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0139_unified_framework_capability_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/013_abstractmusic_cli_common_flags_after_subcommand.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0140_abstract_release_skill.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0141_flow_browser_session_gateway_auth.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0149_cross_app_gateway_auth_defaults_convergence.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/014_abstractmusic_acestep_vendor_hf_transformers_code_no_trust_remote_code.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0154_multi_user_security_release_blockers.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0156_retained_runtime_admin_lifecycle.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0157_gateway_provider_endpoint_profiles.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/015_abstractmusic_acestep_v15_meta_tensor_load_fix_and_vendor_quantizer.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/016_abstractmusic_acestep_mps_memory_budget_and_fp16_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/017_abstractmusic_acestep_mps_dtype_alignment_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/018_abstractmusic_acestep_audio_quality_dc_offset_and_lyrics_null_handling.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/019_abstractmusic_acestep_default_infer_method_sde_for_stability.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/020_abstractmusic_acestep_upstream_alignment_nonfinite_and_src_latents.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/021_acestep_latent_channels_unbound_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/022_acestep_vae_cpu_fallback_dtype_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/023_acestep_mps_memory_cap_12gb.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/024_acestep_mps_watermark_validation_and_warning_fixes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/025_reduce_acestep_startup_warnings.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/026_acestep_mps_oom_and_warning_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/027_acestep_warning_and_fallback_fixes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/028_acestep_warning_meta_and_vae_load_fixes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/029_acestep_mps_fraction_and_fallback_sync.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/031_telegram_media_reset_typing.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/032_gateway_default_model_from_config.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/033_agent_default_model_from_config.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/034_agent_default_pins_marker.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/035_abstractcore_model_registry_docs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/035_telegram_media_artifact_resolution.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/036_commit_per_package_script.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/039_abstractobserver_observe_ui_redesign.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/040_abstractobserver_launch_ui_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/041_abstractobserver_inbox_backlog_feature_flags.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/042_abstractobserver_header_observe_toolbar_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/043_package_by_package_architecture_review.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/043_update_abstractobserver_docs_flags.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/044_state_of_the_art_package_comparisons.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/045_abstractflow_gateway_thin_client_refactor.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/046_abstractassistant_gateway_thin_client_refactor.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/046_abstractflow_gateway_thin_client_plan.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/047_abstractassistant_gateway_thin_client_reassessment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/047_abstractflow_gateway_thin_client_migration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/048_abstractassistant_gateway_vs_abstractcode_web.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/049_abstractassistant_react_tray_rewrite_assessment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/050_abstractassistant_thin_client_strategy_assessment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/051_gateway_local_remote_tradeoffs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/052_gateway_assistant_design_and_scaffold.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/053_gateway_assistant_phase1_gateway_run.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/054_gateway_assistant_gateway_mode_no_local_core.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/055_tray_animation_smoothness.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/056_tray_click_activation_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/057_gateway_subworkflow_follow.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/058_gateway_run_follow_streaming.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/059_gateway_run_history_resume.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/060_gateway_audio_pipeline.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/061_gateway_workflow_picker.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/062_gateway_artifacts_and_tool_results.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/063_gateway_discovery_cache.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/064_gateway_state_machine_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/065_gateway_offline_reconnect.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/066_gateway_docs_and_adr.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/067_gateway_assistant_cleanup_refactor.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/067_smartnote_systray_notes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_abstractvoice_default.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_claude_skills_research_and_fit.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_smartnote_src_layout.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/069_claude_shareable_skills_research.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/069_smartnote_tray_quick_note_ui.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/070_agent_skills_ecosystem_scan_and_framework_deep_dive.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/071_smartnote_gateway_integration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/072_smartnote_ingest_overrides_and_attachment_provenance.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/073_lmstudio_model_discovery_validation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/073_smartnote_specialized_workflow_doc.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/074_smartnote_specialized_workflow_doc_location.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/074_subworkflow_wait_ui_clarity.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_abstractcore_installer_wizard_parity.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_flow_ui_subrun_stream_and_output_formatting.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_reasoning_model_temperature_parameter_handling.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_remove_root_specialized_workflow_doc.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_abstractcore_installer_rebuild_docs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_assistant_window_positioning.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_flow_ui_resume_layout_and_output.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_smartnote_auto_bundle_startup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_installer_wizard_clarity_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_smartnote_artifact_first_graph_plan.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_tray_voice_meter_and_animation_smoothing.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/078_framework_installer_guides.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/078_tool_policy_selector_shared.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/079_voice_meter_bands_and_duplicate_response_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/080_assistant_visibility_state_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/080_flow_agent_trace_and_tool_allowlist_fixes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/081_flow_agent_non_agency_and_max_iterations_default.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/081_tool_dialog_grouping_and_voice_stop_behavior.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/082_run_107f199c_workspace_root_analysis.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/082_tool_mode_indicator_and_policy_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/083_tool_policy_enforcement_and_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/083_workspace_policy_prompt_alignment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/084_runtime_workspace_gating_confirmation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/084_tool_approval_dialog_improvements.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/085_block_ui_open_when_running.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/085_run_5bec2a17_workspace_policy_failure.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/086_gateway_stream_idle_watchdog.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/086_run_98531c5a_path_refusal.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/087_tool_approval_dialog_visibility_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/087_workspace_policy_recheck.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/088_execute_snake_game_flow.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/088_pending_wait_rehydrate_and_tool_approval_detection.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/089_execute_snake_game_flow_restart.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/089_gateway_reattach_wait_visibility_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/090_follow_latest_subworkflow_wait.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/090_run_modal_follow_up_button.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/091_follow_up_session_id_input.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/091_font_warning_and_runtime_policy_investigation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/092_tool_approval_approve_all.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/092_tray_click_visibility_source_of_truth.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/093_follow_up_context_persistence.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/093_gateway_tts_pause_resume_support.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/094_gateway_tts_pause_readiness.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/095_gateway_voice_state_sync_on_stop.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/096_app_visibility_state_rewrite.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/097_macos_framework_installer_manager.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/098_macos_installer_ui_fixes.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/099_macos_installer_tauri_global_api.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/100_macos_installer_progress_ui.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/101_macos_installer_bridge_fallback.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/102_macos_installer_event_acl.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/103_macos_installer_python_prereq_modal.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/104_follow_up_inline_resume_modal.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/104_macos_installer_python_auto_download.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/105_macos_installer_python_detection_paths.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/105_toolbar_duplicate_button.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/106_ledger_jsonl_recovery_and_locking.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/106_macos_installer_python_retry_and_logs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/107_macos_installer_pypi_version_fallback.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/107_tool_approval_preserved_on_subworkflow_wait.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/108_history_view_tool_approval_visibility.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/108_macos_installer_setup_wizard_ui.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/109_macos_installer_log_dedup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/110_macos_installer_setup_wizard_steps.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/111_approve_all_root_run_scope.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/111_macos_installer_provider_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/112_macos_installer_full_step_wizard.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/112_run_history_root_only_limit.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/113_macos_installer_fit_frame.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/113_run_history_workflow_id_filter.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/114_abstractcode_wait_resolution_stale_wait.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/114_macos_installer_api_key_explanation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/115_macos_installer_finish_and_nav.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/115_react_tool_result_dedupe_and_run_failure_feedback.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/116_macos_installer_install_panel_wrap.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/116_tool_calls_idempotency_call_id_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/117_macos_installer_choice_alignment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/118_macos_installer_log_visibility.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/119_macos_installer_env_var_apply.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/120_macos_installer_env_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/121_macos_tray_ready_click_fallback.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/122_macos_tray_menu_artifact_removal.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/123_full_voice_tray_listening_and_tool_set_announcement.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/124_macos_ready_click_show_race_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/125_full_voice_mic_reactive_listening_and_start_button.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/126_listening_meter_gain_and_modal_visibility_followup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/127_tool_approval_modal_crash_hardening.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/128_tool_approval_dialog_quit_on_close.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/129_prompt_cache_capability_contract_and_provider_parity.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/131_prompt_cache_cross_package_capability_followup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/132_prompt_cache_abstraction_review_and_gateway_readiness.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/133_gguf_prompt_cache_local_control_plane_parity.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/136_ai_space_portable_semantic_retrieval_and_graph.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/2026-05-08_adr_refresh_for_install_profiles_and_config_boundaries.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/004_abstractassistant_model_discovery_and_dev_build_fix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/0142_gateway_tenant_isolation_and_shared_runtime.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/0143_shared_gateway_per_principal_runtime_router.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/035_abstractcore_model_registry_docs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/036_commit_per_package_script.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/037_telegram_bot_access_control.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/038_framework_config_wizard.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/039_tool_argument_type_coercion.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/041_abstractobserver_inbox_backlog_feature_flags.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/042_abstractobserver_header_observe_toolbar_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/043_update_abstractobserver_docs_flags.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/074_agent_skills_integration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/074_agent_skills_integration_plan.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/076_openai_responses_api_integration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/102_macos_installer_event_acl.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/103_macos_installer_python_prereq_modal.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/104_macos_installer_python_auto_download.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/105_macos_installer_python_detection_paths.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/106_macos_installer_python_retry_and_logs.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/107_macos_installer_pypi_version_fallback.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/108_macos_installer_setup_wizard_ui.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/109_macos_installer_log_dedup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/110_macos_installer_setup_wizard_steps.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/111_macos_installer_provider_cleanup.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/112_macos_installer_full_step_wizard.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/113_macos_installer_fit_frame.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/114_macos_installer_api_key_explanation.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/115_macos_installer_finish_and_nav.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/116_macos_installer_install_panel_wrap.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/117_macos_installer_choice_alignment.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/118_macos_installer_log_visibility.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/119_macos_installer_env_var_apply.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/119_tool_calls_invocation_nonce_for_non_llm.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/120_macos_installer_env_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/130_react_scratchpad_prompt_flow_and_best_practice_review.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/134_mlx_local_cache_model_resolution_short_names.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/135_abstractflow_exec_fanin_joinexec_and_path_mux.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/137_ai_space_multimodal_media_blocs_and_prefix_cache.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/138_scoped_provider_model_pin_types.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0145_gateway_admin_console_bootstrap.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0146_gateway_rbac_scope_policy_matrix.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0147_gateway_per_principal_config_secrets_defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0148_gateway_workflow_registry_acl.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0150_observer_manager_responsibility_split.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0153_gateway_browser_session_security_contract.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/0144_user_profile_context_grounding.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/2026-05-08_unified_install_profiles_and_config_entrypoints.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0151_runtime_explorer_contract.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0152_abstractmanager_package_extraction.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0155_hosted_proxy_shared_helper_extraction.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/abstractframework-fit.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-overview.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-sources.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-top-20.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/comparisons/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/configuration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/glossary.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/agent-skills.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/agent-vs-llm.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/apple-local-gateway-flow.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/capability-plugins.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/capability-routing-defaults.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-iphone.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-topologies.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-web.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/email-integration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/flow-and-kg-memory.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/gateway-security.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/process-manager-env-vars.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/prompt-caching.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/runtime-scope.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/scheduled-workflows.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/telegram-integration.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/workflow-bundles.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/components.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/implementation-plan.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/operations-and-support.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/security-and-os-blocks.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/strategy.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/user-journeys.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/reports/history-acore.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/email-inbox-agent.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/gateway-first-local-dev.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/offline-coding-assistant.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/phone-thin-client.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/specialized-agent-flow.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/telegram-permanent-contact.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/README.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-overview.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-sources.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-top-20.md +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/clone.sh +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/commit.sh +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gateway-flow.sh +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/install.sh +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/status.sh +0 -0
- {abstractframework-0.1.6 → abstractframework-0.1.7}/setup.cfg +0 -0
|
@@ -4,6 +4,32 @@ All notable changes to AbstractFramework will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.1.7] - 2026-05-31
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- Added the `abstractframework` CLI with `doctor` checks for Python/package
|
|
12
|
+
version consistency and `manifest` commands for installer manifest generation
|
|
13
|
+
and drift checks.
|
|
14
|
+
- Added a generated installer manifest and schema under `docs/installers/`,
|
|
15
|
+
derived from the root release pins and covering the Light, Apple, and GPU
|
|
16
|
+
profiles.
|
|
17
|
+
- Added a public install chooser that explains Light as the remote-first full
|
|
18
|
+
framework profile, with Apple and GPU as hardware-local profiles.
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
|
|
22
|
+
- Moved installer application source out of the root framework repository into
|
|
23
|
+
the standalone `AbstractInstallers` repository. The root package remains the
|
|
24
|
+
release profile, documentation hub, and manifest source of truth.
|
|
25
|
+
- Updated local source helper scripts to use `--light` as the canonical
|
|
26
|
+
remote-first profile name while keeping `--base` as a compatibility alias.
|
|
27
|
+
|
|
28
|
+
### Removed
|
|
29
|
+
|
|
30
|
+
- Removed the tracked `abstractinstallers/` prototype source tree from the root
|
|
31
|
+
`AbstractFramework` repository and package source distribution.
|
|
32
|
+
|
|
7
33
|
## [0.1.6] - 2026-05-31
|
|
8
34
|
|
|
9
35
|
### Changed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractframework
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
|
|
5
5
|
Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
6
6
|
License: MIT
|
|
@@ -177,6 +177,9 @@ pip install "abstractframework[apple]"
|
|
|
177
177
|
pip install "abstractframework[gpu]"
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
+
See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv guidance,
|
|
181
|
+
`abstractframework doctor`, and the generated installer manifest contract.
|
|
182
|
+
|
|
180
183
|
---
|
|
181
184
|
|
|
182
185
|
## Documentation
|
|
@@ -184,6 +187,7 @@ pip install "abstractframework[gpu]"
|
|
|
184
187
|
| Page | What it covers |
|
|
185
188
|
|---|---|
|
|
186
189
|
| [docs/README.md](docs/README.md) | Documentation hub — pick your starting point |
|
|
190
|
+
| [docs/install.md](docs/install.md) | Light / Apple / GPU install chooser and first checks |
|
|
187
191
|
| [docs/getting-started.md](docs/getting-started.md) | Two entry points + first end-to-end run |
|
|
188
192
|
| [docs/architecture.md](docs/architecture.md) | Layered model, durable execution primitives, comparisons |
|
|
189
193
|
| [docs/configuration.md](docs/configuration.md) | Minimal config, where defaults live, Core vs Gateway |
|
|
@@ -131,6 +131,9 @@ pip install "abstractframework[apple]"
|
|
|
131
131
|
pip install "abstractframework[gpu]"
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv guidance,
|
|
135
|
+
`abstractframework doctor`, and the generated installer manifest contract.
|
|
136
|
+
|
|
134
137
|
---
|
|
135
138
|
|
|
136
139
|
## Documentation
|
|
@@ -138,6 +141,7 @@ pip install "abstractframework[gpu]"
|
|
|
138
141
|
| Page | What it covers |
|
|
139
142
|
|---|---|
|
|
140
143
|
| [docs/README.md](docs/README.md) | Documentation hub — pick your starting point |
|
|
144
|
+
| [docs/install.md](docs/install.md) | Light / Apple / GPU install chooser and first checks |
|
|
141
145
|
| [docs/getting-started.md](docs/getting-started.md) | Two entry points + first end-to-end run |
|
|
142
146
|
| [docs/architecture.md](docs/architecture.md) | Layered model, durable execution primitives, comparisons |
|
|
143
147
|
| [docs/configuration.md](docs/configuration.md) | Minimal config, where defaults live, Core vs Gateway |
|
|
@@ -10,7 +10,7 @@ Most implementation functionality still lives in component projects.
|
|
|
10
10
|
|
|
11
11
|
from __future__ import annotations
|
|
12
12
|
|
|
13
|
-
__version__ = "0.1.
|
|
13
|
+
__version__ = "0.1.7"
|
|
14
14
|
__author__ = "Laurent-Philippe Albou"
|
|
15
15
|
__license__ = "MIT"
|
|
16
16
|
|
|
@@ -29,6 +29,27 @@ RELEASE_VERSIONS: dict[str, str] = {
|
|
|
29
29
|
"abstractassistant": "0.4.8",
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
+
PACKAGE_DISTRIBUTIONS: dict[str, str] = {
|
|
33
|
+
"abstractcore": "abstractcore",
|
|
34
|
+
"abstractruntime": "AbstractRuntime",
|
|
35
|
+
"abstractagent": "abstractagent",
|
|
36
|
+
"abstractflow": "abstractflow",
|
|
37
|
+
"abstractcode": "abstractcode",
|
|
38
|
+
"abstractgateway": "abstractgateway",
|
|
39
|
+
"abstractmemory": "AbstractMemory",
|
|
40
|
+
"abstractsemantics": "abstractsemantics",
|
|
41
|
+
"abstractvoice": "abstractvoice",
|
|
42
|
+
"abstractvision": "abstractvision",
|
|
43
|
+
"abstractmusic": "abstractmusic",
|
|
44
|
+
"abstractassistant": "abstractassistant",
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
NPM_RELEASE_VERSIONS: dict[str, str] = {
|
|
48
|
+
"@abstractframework/flow": "0.3.17",
|
|
49
|
+
"@abstractframework/code": "0.3.8",
|
|
50
|
+
"@abstractframework/observer": "0.1.10",
|
|
51
|
+
}
|
|
52
|
+
|
|
32
53
|
CORE_DEFAULT_EXTRAS = [
|
|
33
54
|
"remote",
|
|
34
55
|
"tools",
|
|
@@ -69,9 +90,11 @@ def get_release_profile() -> dict[str, object]:
|
|
|
69
90
|
return {
|
|
70
91
|
"abstractframework": __version__,
|
|
71
92
|
"packages": RELEASE_VERSIONS.copy(),
|
|
93
|
+
"distributions": PACKAGE_DISTRIBUTIONS.copy(),
|
|
94
|
+
"npm_packages": NPM_RELEASE_VERSIONS.copy(),
|
|
72
95
|
"core_extras": list(CORE_DEFAULT_EXTRAS),
|
|
73
96
|
"install_profiles": {
|
|
74
|
-
"
|
|
97
|
+
"light": "pip install abstractframework",
|
|
75
98
|
"apple": 'pip install "abstractframework[apple]"',
|
|
76
99
|
"gpu": 'pip install "abstractframework[gpu]"',
|
|
77
100
|
},
|
|
@@ -90,20 +113,7 @@ def get_installed_packages() -> dict[str, str]:
|
|
|
90
113
|
except Exception:
|
|
91
114
|
return
|
|
92
115
|
|
|
93
|
-
for name in
|
|
94
|
-
"abstractcore",
|
|
95
|
-
"abstractruntime",
|
|
96
|
-
"abstractagent",
|
|
97
|
-
"abstractflow",
|
|
98
|
-
"abstractcode",
|
|
99
|
-
"abstractgateway",
|
|
100
|
-
"abstractmemory",
|
|
101
|
-
"abstractsemantics",
|
|
102
|
-
"abstractvoice",
|
|
103
|
-
"abstractvision",
|
|
104
|
-
"abstractmusic",
|
|
105
|
-
"abstractassistant",
|
|
106
|
-
]:
|
|
116
|
+
for name in PACKAGE_DISTRIBUTIONS:
|
|
107
117
|
_maybe_add(name)
|
|
108
118
|
|
|
109
119
|
return packages
|
|
@@ -113,20 +123,7 @@ def print_status() -> None:
|
|
|
113
123
|
"""Print installation status of the main AbstractFramework Python packages."""
|
|
114
124
|
|
|
115
125
|
installed = get_installed_packages()
|
|
116
|
-
all_packages =
|
|
117
|
-
"abstractcore",
|
|
118
|
-
"abstractruntime",
|
|
119
|
-
"abstractagent",
|
|
120
|
-
"abstractflow",
|
|
121
|
-
"abstractcode",
|
|
122
|
-
"abstractgateway",
|
|
123
|
-
"abstractmemory",
|
|
124
|
-
"abstractsemantics",
|
|
125
|
-
"abstractvoice",
|
|
126
|
-
"abstractvision",
|
|
127
|
-
"abstractmusic",
|
|
128
|
-
"abstractassistant",
|
|
129
|
-
]
|
|
126
|
+
all_packages = list(PACKAGE_DISTRIBUTIONS)
|
|
130
127
|
|
|
131
128
|
print("AbstractFramework installation status")
|
|
132
129
|
print("=" * 40)
|
|
@@ -0,0 +1,214 @@
|
|
|
1
|
+
"""Command line helpers for the AbstractFramework meta-package."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import argparse
|
|
6
|
+
import importlib.metadata
|
|
7
|
+
import json
|
|
8
|
+
import platform
|
|
9
|
+
import shutil
|
|
10
|
+
import subprocess
|
|
11
|
+
import sys
|
|
12
|
+
from dataclasses import dataclass
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Sequence
|
|
15
|
+
|
|
16
|
+
from . import PACKAGE_DISTRIBUTIONS, RELEASE_VERSIONS, __version__
|
|
17
|
+
from .install_manifest import check_install_manifest, manifest_json, write_install_manifest
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
@dataclass(frozen=True)
|
|
21
|
+
class Check:
|
|
22
|
+
id: str
|
|
23
|
+
status: str
|
|
24
|
+
message: str
|
|
25
|
+
detail: str | None = None
|
|
26
|
+
|
|
27
|
+
def as_dict(self) -> dict[str, str]:
|
|
28
|
+
data = {"id": self.id, "status": self.status, "message": self.message}
|
|
29
|
+
if self.detail:
|
|
30
|
+
data["detail"] = self.detail
|
|
31
|
+
return data
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _distribution_version(distribution: str) -> str | None:
|
|
35
|
+
try:
|
|
36
|
+
return importlib.metadata.version(distribution)
|
|
37
|
+
except importlib.metadata.PackageNotFoundError:
|
|
38
|
+
return None
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _command_version(command: str) -> str | None:
|
|
42
|
+
executable = shutil.which(command)
|
|
43
|
+
if not executable:
|
|
44
|
+
return None
|
|
45
|
+
try:
|
|
46
|
+
result = subprocess.run(
|
|
47
|
+
[executable, "--version"],
|
|
48
|
+
check=False,
|
|
49
|
+
capture_output=True,
|
|
50
|
+
text=True,
|
|
51
|
+
timeout=5,
|
|
52
|
+
)
|
|
53
|
+
except Exception:
|
|
54
|
+
return "available"
|
|
55
|
+
text = (result.stdout or result.stderr).strip().splitlines()
|
|
56
|
+
return text[0] if text else "available"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def build_doctor_report(include_environment: bool = True) -> dict[str, object]:
|
|
60
|
+
"""Return a doctor report without importing heavy local inference stacks."""
|
|
61
|
+
|
|
62
|
+
checks: list[Check] = []
|
|
63
|
+
|
|
64
|
+
python_version = ".".join(str(part) for part in sys.version_info[:3])
|
|
65
|
+
if sys.version_info >= (3, 10):
|
|
66
|
+
checks.append(Check("python", "ok", f"Python {python_version} satisfies >=3.10"))
|
|
67
|
+
else:
|
|
68
|
+
checks.append(Check("python", "error", f"Python {python_version} is below required >=3.10"))
|
|
69
|
+
|
|
70
|
+
installed_framework = _distribution_version("abstractframework")
|
|
71
|
+
if installed_framework in {None, __version__}:
|
|
72
|
+
status = "ok" if installed_framework == __version__ else "warn"
|
|
73
|
+
message = (
|
|
74
|
+
f"abstractframework {installed_framework} matches release profile"
|
|
75
|
+
if installed_framework
|
|
76
|
+
else "abstractframework distribution metadata is not installed"
|
|
77
|
+
)
|
|
78
|
+
checks.append(Check("abstractframework", status, message))
|
|
79
|
+
else:
|
|
80
|
+
checks.append(
|
|
81
|
+
Check(
|
|
82
|
+
"abstractframework",
|
|
83
|
+
"error",
|
|
84
|
+
f"abstractframework {installed_framework} does not match {__version__}",
|
|
85
|
+
)
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
for package_id, expected in RELEASE_VERSIONS.items():
|
|
89
|
+
distribution = PACKAGE_DISTRIBUTIONS[package_id]
|
|
90
|
+
actual = _distribution_version(distribution)
|
|
91
|
+
if actual is None:
|
|
92
|
+
checks.append(
|
|
93
|
+
Check(
|
|
94
|
+
f"package:{package_id}",
|
|
95
|
+
"error",
|
|
96
|
+
f"{distribution} is not installed",
|
|
97
|
+
f"Expected {distribution}=={expected}",
|
|
98
|
+
)
|
|
99
|
+
)
|
|
100
|
+
elif actual == expected:
|
|
101
|
+
checks.append(Check(f"package:{package_id}", "ok", f"{distribution}=={actual}"))
|
|
102
|
+
else:
|
|
103
|
+
checks.append(
|
|
104
|
+
Check(
|
|
105
|
+
f"package:{package_id}",
|
|
106
|
+
"error",
|
|
107
|
+
f"{distribution}=={actual} does not match pinned {expected}",
|
|
108
|
+
)
|
|
109
|
+
)
|
|
110
|
+
|
|
111
|
+
if include_environment:
|
|
112
|
+
node_version = _command_version("node")
|
|
113
|
+
npm_version = _command_version("npm")
|
|
114
|
+
if node_version:
|
|
115
|
+
checks.append(Check("node", "ok", f"Node is available: {node_version}"))
|
|
116
|
+
else:
|
|
117
|
+
checks.append(Check("node", "warn", "Node is not available; browser UIs need Node/npm"))
|
|
118
|
+
if npm_version:
|
|
119
|
+
checks.append(Check("npm", "ok", f"npm is available: {npm_version}"))
|
|
120
|
+
else:
|
|
121
|
+
checks.append(Check("npm", "warn", "npm is not available; browser UIs need npm/npx"))
|
|
122
|
+
|
|
123
|
+
system = platform.system()
|
|
124
|
+
machine = platform.machine().lower()
|
|
125
|
+
if system == "Darwin" and machine in {"arm64", "aarch64"}:
|
|
126
|
+
checks.append(Check("hardware:apple", "ok", "Apple Silicon local profile can be used"))
|
|
127
|
+
elif system == "Darwin":
|
|
128
|
+
checks.append(
|
|
129
|
+
Check("hardware:apple", "warn", "Apple local profile expects Apple Silicon")
|
|
130
|
+
)
|
|
131
|
+
else:
|
|
132
|
+
checks.append(Check("hardware:apple", "warn", "Apple local profile is macOS-only"))
|
|
133
|
+
|
|
134
|
+
if shutil.which("nvidia-smi"):
|
|
135
|
+
checks.append(Check("hardware:gpu", "ok", "nvidia-smi is available"))
|
|
136
|
+
else:
|
|
137
|
+
checks.append(
|
|
138
|
+
Check(
|
|
139
|
+
"hardware:gpu",
|
|
140
|
+
"warn",
|
|
141
|
+
"No nvidia-smi found; GPU profile may still work with another supported stack",
|
|
142
|
+
)
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
status_rank = {"error": 2, "warn": 1, "ok": 0}
|
|
146
|
+
worst = max((status_rank[check.status] for check in checks), default=0)
|
|
147
|
+
status = "error" if worst == 2 else "warn" if worst == 1 else "ok"
|
|
148
|
+
return {
|
|
149
|
+
"abstractframework": __version__,
|
|
150
|
+
"status": status,
|
|
151
|
+
"checks": [check.as_dict() for check in checks],
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def _print_doctor(report: dict[str, object]) -> None:
|
|
156
|
+
print(f"AbstractFramework doctor ({report['status']})")
|
|
157
|
+
print("=" * 40)
|
|
158
|
+
for raw in report["checks"]: # type: ignore[index]
|
|
159
|
+
check = raw # type: ignore[assignment]
|
|
160
|
+
marker = {"ok": "OK", "warn": "WARN", "error": "ERROR"}[check["status"]]
|
|
161
|
+
print(f"[{marker}] {check['message']}")
|
|
162
|
+
if check.get("detail"):
|
|
163
|
+
print(f" {check['detail']}")
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
def _doctor(args: argparse.Namespace) -> int:
|
|
167
|
+
report = build_doctor_report(include_environment=not args.no_environment)
|
|
168
|
+
if args.json:
|
|
169
|
+
print(json.dumps(report, indent=2, sort_keys=True))
|
|
170
|
+
else:
|
|
171
|
+
_print_doctor(report)
|
|
172
|
+
return 1 if report["status"] == "error" else 0
|
|
173
|
+
|
|
174
|
+
|
|
175
|
+
def _manifest(args: argparse.Namespace) -> int:
|
|
176
|
+
if args.write:
|
|
177
|
+
write_install_manifest(args.write)
|
|
178
|
+
print(f"Wrote {args.write}")
|
|
179
|
+
return 0
|
|
180
|
+
if args.check:
|
|
181
|
+
ok, message = check_install_manifest(args.check)
|
|
182
|
+
print(message)
|
|
183
|
+
return 0 if ok else 1
|
|
184
|
+
print(manifest_json(), end="")
|
|
185
|
+
return 0
|
|
186
|
+
|
|
187
|
+
|
|
188
|
+
def main(argv: Sequence[str] | None = None) -> int:
|
|
189
|
+
parser = argparse.ArgumentParser(prog="abstractframework")
|
|
190
|
+
subparsers = parser.add_subparsers(dest="command")
|
|
191
|
+
|
|
192
|
+
doctor = subparsers.add_parser("doctor", help="Check install health and profile consistency")
|
|
193
|
+
doctor.add_argument("--json", action="store_true", help="Emit machine-readable JSON")
|
|
194
|
+
doctor.add_argument(
|
|
195
|
+
"--no-environment",
|
|
196
|
+
action="store_true",
|
|
197
|
+
help="Skip Node/npm/hardware probes and only check Python package profile consistency",
|
|
198
|
+
)
|
|
199
|
+
doctor.set_defaults(func=_doctor)
|
|
200
|
+
|
|
201
|
+
manifest = subparsers.add_parser("manifest", help="Print or validate the install manifest")
|
|
202
|
+
manifest.add_argument("--write", type=Path, help="Write the generated manifest to a path")
|
|
203
|
+
manifest.add_argument("--check", type=Path, help="Check a manifest file against the generator")
|
|
204
|
+
manifest.set_defaults(func=_manifest)
|
|
205
|
+
|
|
206
|
+
args = parser.parse_args(argv)
|
|
207
|
+
if not hasattr(args, "func"):
|
|
208
|
+
parser.print_help()
|
|
209
|
+
return 0
|
|
210
|
+
return args.func(args)
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
if __name__ == "__main__": # pragma: no cover
|
|
214
|
+
raise SystemExit(main())
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"""Generated install manifest helpers for AbstractFramework."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
from typing import Any
|
|
8
|
+
|
|
9
|
+
from . import NPM_RELEASE_VERSIONS, PACKAGE_DISTRIBUTIONS, RELEASE_VERSIONS, __version__
|
|
10
|
+
|
|
11
|
+
MANIFEST_SCHEMA_VERSION = 1
|
|
12
|
+
MINIMUM_INSTALLER_VERSION = "0.1.0"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _python_packages() -> list[dict[str, str]]:
|
|
16
|
+
return [
|
|
17
|
+
{
|
|
18
|
+
"id": package_id,
|
|
19
|
+
"distribution": PACKAGE_DISTRIBUTIONS[package_id],
|
|
20
|
+
"version": version,
|
|
21
|
+
"registry": "pypi",
|
|
22
|
+
}
|
|
23
|
+
for package_id, version in RELEASE_VERSIONS.items()
|
|
24
|
+
]
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _npm_apps() -> list[dict[str, str]]:
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
"id": package_name.rsplit("/", 1)[-1],
|
|
31
|
+
"package": package_name,
|
|
32
|
+
"version": version,
|
|
33
|
+
"registry": "npm",
|
|
34
|
+
"command": f"npx {package_name}",
|
|
35
|
+
}
|
|
36
|
+
for package_name, version in NPM_RELEASE_VERSIONS.items()
|
|
37
|
+
]
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def build_install_manifest() -> dict[str, Any]:
|
|
41
|
+
"""Build the installer-consumable manifest from root release pins."""
|
|
42
|
+
|
|
43
|
+
return {
|
|
44
|
+
"schema_version": MANIFEST_SCHEMA_VERSION,
|
|
45
|
+
"minimum_installer_version": MINIMUM_INSTALLER_VERSION,
|
|
46
|
+
"framework": {
|
|
47
|
+
"id": "abstractframework",
|
|
48
|
+
"name": "AbstractFramework",
|
|
49
|
+
"distribution": "abstractframework",
|
|
50
|
+
"version": __version__,
|
|
51
|
+
"registry": "pypi",
|
|
52
|
+
"python_requires": ">=3.10",
|
|
53
|
+
},
|
|
54
|
+
"source": {
|
|
55
|
+
"repository": "https://github.com/lpalbou/AbstractFramework",
|
|
56
|
+
"release_profile": "abstractframework.RELEASE_VERSIONS",
|
|
57
|
+
},
|
|
58
|
+
"profiles": [
|
|
59
|
+
{
|
|
60
|
+
"id": "light",
|
|
61
|
+
"name": "Light",
|
|
62
|
+
"summary": (
|
|
63
|
+
"Remote-first install. Full framework functionality is available through "
|
|
64
|
+
"remote or OpenAI-compatible endpoints; no local MLX, CUDA, Diffusers, or "
|
|
65
|
+
"model-runtime stacks are installed by this profile."
|
|
66
|
+
),
|
|
67
|
+
"pip_requirements": [f"abstractframework=={__version__}"],
|
|
68
|
+
"local_inference": False,
|
|
69
|
+
"platforms": ["macos", "linux", "windows"],
|
|
70
|
+
"prerequisites": ["python>=3.10", "network"],
|
|
71
|
+
"best_for": [
|
|
72
|
+
"cloud APIs",
|
|
73
|
+
"LM Studio, Ollama, vLLM, llama.cpp, or other endpoint servers",
|
|
74
|
+
"lowest-friction install",
|
|
75
|
+
],
|
|
76
|
+
"excludes": ["local MLX engines", "local CUDA/ROCm engines"],
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"id": "apple",
|
|
80
|
+
"name": "Apple",
|
|
81
|
+
"summary": (
|
|
82
|
+
"Native Apple Silicon profile. Adds local MLX/Metal-capable stacks on top "
|
|
83
|
+
"of the same framework interfaces and endpoint providers."
|
|
84
|
+
),
|
|
85
|
+
"pip_requirements": [f"abstractframework[apple]=={__version__}"],
|
|
86
|
+
"local_inference": True,
|
|
87
|
+
"platforms": ["macos"],
|
|
88
|
+
"prerequisites": ["python>=3.10", "apple-silicon", "network"],
|
|
89
|
+
"best_for": ["Mac users who want local Apple Silicon inferencers"],
|
|
90
|
+
"excludes": ["CUDA/ROCm engines"],
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "gpu",
|
|
94
|
+
"name": "GPU",
|
|
95
|
+
"summary": (
|
|
96
|
+
"Native GPU profile. Adds CUDA/ROCm-oriented local stacks on top of the "
|
|
97
|
+
"same framework interfaces and endpoint providers."
|
|
98
|
+
),
|
|
99
|
+
"pip_requirements": [f"abstractframework[gpu]=={__version__}"],
|
|
100
|
+
"local_inference": True,
|
|
101
|
+
"platforms": ["linux", "windows"],
|
|
102
|
+
"prerequisites": ["python>=3.10", "gpu-driver", "network"],
|
|
103
|
+
"best_for": ["workstations or servers with supported discrete GPUs"],
|
|
104
|
+
"excludes": ["Apple MLX-only engines"],
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
"python_packages": _python_packages(),
|
|
108
|
+
"npm_apps": _npm_apps(),
|
|
109
|
+
"post_install": {
|
|
110
|
+
"doctor": ["abstractframework", "doctor"],
|
|
111
|
+
"core_config": ["abstractcore", "--config"],
|
|
112
|
+
"gateway_flow": {
|
|
113
|
+
"gateway": ["abstractgateway", "serve"],
|
|
114
|
+
"flow": ["npx", "@abstractframework/flow"],
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
"security": {
|
|
118
|
+
"secrets_in_manifest": False,
|
|
119
|
+
"native_artifacts_signed": False,
|
|
120
|
+
"notes": "Prototype manifest; production installer artifacts must add signatures.",
|
|
121
|
+
},
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
def manifest_json(indent: int = 2) -> str:
|
|
126
|
+
"""Return the install manifest as stable JSON."""
|
|
127
|
+
|
|
128
|
+
return json.dumps(build_install_manifest(), indent=indent, sort_keys=True) + "\n"
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
def write_install_manifest(path: str | Path) -> None:
|
|
132
|
+
"""Write the generated install manifest to a path."""
|
|
133
|
+
|
|
134
|
+
Path(path).write_text(manifest_json(), encoding="utf-8")
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
def check_install_manifest(path: str | Path) -> tuple[bool, str]:
|
|
138
|
+
"""Compare a checked-in manifest file with the generated manifest."""
|
|
139
|
+
|
|
140
|
+
manifest_path = Path(path)
|
|
141
|
+
expected = manifest_json()
|
|
142
|
+
actual = manifest_path.read_text(encoding="utf-8")
|
|
143
|
+
if actual == expected:
|
|
144
|
+
return True, f"{manifest_path} is up to date"
|
|
145
|
+
return False, f"{manifest_path} differs from generated AbstractFramework install manifest"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: abstractframework
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.7
|
|
4
4
|
Summary: Unified installer and documentation hub for the AbstractFramework ecosystem
|
|
5
5
|
Author-email: Laurent-Philippe Albou <contact@abstractcore.ai>
|
|
6
6
|
License: MIT
|
|
@@ -177,6 +177,9 @@ pip install "abstractframework[apple]"
|
|
|
177
177
|
pip install "abstractframework[gpu]"
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
+
See [docs/install.md](docs/install.md) for the full install chooser, `uv`/venv guidance,
|
|
181
|
+
`abstractframework doctor`, and the generated installer manifest contract.
|
|
182
|
+
|
|
180
183
|
---
|
|
181
184
|
|
|
182
185
|
## Documentation
|
|
@@ -184,6 +187,7 @@ pip install "abstractframework[gpu]"
|
|
|
184
187
|
| Page | What it covers |
|
|
185
188
|
|---|---|
|
|
186
189
|
| [docs/README.md](docs/README.md) | Documentation hub — pick your starting point |
|
|
190
|
+
| [docs/install.md](docs/install.md) | Light / Apple / GPU install chooser and first checks |
|
|
187
191
|
| [docs/getting-started.md](docs/getting-started.md) | Two entry points + first end-to-end run |
|
|
188
192
|
| [docs/architecture.md](docs/architecture.md) | Layered model, durable execution primitives, comparisons |
|
|
189
193
|
| [docs/configuration.md](docs/configuration.md) | Minimal config, where defaults live, Core vs Gateway |
|
|
@@ -6,10 +6,14 @@ llms-full.txt
|
|
|
6
6
|
llms.txt
|
|
7
7
|
pyproject.toml
|
|
8
8
|
abstractframework/__init__.py
|
|
9
|
+
abstractframework/__main__.py
|
|
10
|
+
abstractframework/cli.py
|
|
11
|
+
abstractframework/install_manifest.py
|
|
9
12
|
abstractframework/py.typed
|
|
10
13
|
abstractframework.egg-info/PKG-INFO
|
|
11
14
|
abstractframework.egg-info/SOURCES.txt
|
|
12
15
|
abstractframework.egg-info/dependency_links.txt
|
|
16
|
+
abstractframework.egg-info/entry_points.txt
|
|
13
17
|
abstractframework.egg-info/requires.txt
|
|
14
18
|
abstractframework.egg-info/top_level.txt
|
|
15
19
|
docs/README.md
|
|
@@ -19,6 +23,7 @@ docs/configuration.md
|
|
|
19
23
|
docs/faq.md
|
|
20
24
|
docs/getting-started.md
|
|
21
25
|
docs/glossary.md
|
|
26
|
+
docs/install.md
|
|
22
27
|
docs/adr/0001-layered-architecture.md
|
|
23
28
|
docs/adr/0002-effect-system-design.md
|
|
24
29
|
docs/adr/0003-tool-system-architecture.md
|
|
@@ -85,7 +90,11 @@ docs/backlog/completed/014_abstractmusic_acestep_vendor_hf_transformers_code_no_
|
|
|
85
90
|
docs/backlog/completed/0154_multi_user_security_release_blockers.md
|
|
86
91
|
docs/backlog/completed/0156_retained_runtime_admin_lifecycle.md
|
|
87
92
|
docs/backlog/completed/0157_gateway_provider_endpoint_profiles.md
|
|
93
|
+
docs/backlog/completed/0158_installer_repository_extraction.md
|
|
94
|
+
docs/backlog/completed/0159_generated_install_manifest_contract.md
|
|
88
95
|
docs/backlog/completed/015_abstractmusic_acestep_v15_meta_tensor_load_fix_and_vendor_quantizer.md
|
|
96
|
+
docs/backlog/completed/0160_framework_doctor_and_launch_cli.md
|
|
97
|
+
docs/backlog/completed/0161_three_path_public_install_guide.md
|
|
89
98
|
docs/backlog/completed/016_abstractmusic_acestep_mps_memory_budget_and_fp16_defaults.md
|
|
90
99
|
docs/backlog/completed/017_abstractmusic_acestep_mps_dtype_alignment_fix.md
|
|
91
100
|
docs/backlog/completed/018_abstractmusic_acestep_audio_quality_dc_offset_and_lyrics_null_handling.md
|
|
@@ -298,6 +307,9 @@ docs/backlog/proposed/gateway-control-plane/0151_runtime_explorer_contract.md
|
|
|
298
307
|
docs/backlog/proposed/gateway-control-plane/0152_abstractmanager_package_extraction.md
|
|
299
308
|
docs/backlog/proposed/gateway-control-plane/0155_hosted_proxy_shared_helper_extraction.md
|
|
300
309
|
docs/backlog/proposed/gateway-control-plane/README.md
|
|
310
|
+
docs/backlog/proposed/installers/0162_signed_installer_ci_and_distribution.md
|
|
311
|
+
docs/backlog/proposed/installers/0163_cpu_local_inference_install_profile.md
|
|
312
|
+
docs/backlog/proposed/installers/README.md
|
|
301
313
|
docs/claude/README.md
|
|
302
314
|
docs/claude/abstractframework-fit.md
|
|
303
315
|
docs/claude/claude-skills-overview.md
|
|
@@ -76,6 +76,7 @@ Authoring Operations
|
|
|
76
76
|
|
|
77
77
|
| Page | What it covers |
|
|
78
78
|
|---|---|
|
|
79
|
+
| **[Install](install.md)** | Light / Apple / GPU install chooser, `abstractframework doctor`, and installer manifest contract |
|
|
79
80
|
| **[Getting Started](getting-started.md)** | The two entry points + first end-to-end run |
|
|
80
81
|
| **[Architecture](architecture.md)** | Layered model, durable execution primitives, honest comparisons |
|
|
81
82
|
| **[Configuration](configuration.md)** | Minimal config, where defaults live, Core vs Gateway |
|
|
@@ -102,5 +103,5 @@ Authoring Operations
|
|
|
102
103
|
|---|---|
|
|
103
104
|
| [docs/guide/](guide/) | Focused "how it works" notes |
|
|
104
105
|
| [docs/scenarios/](scenarios/) | End-to-end walkthroughs by use case |
|
|
105
|
-
| [docs/installers/](installers/) | Installer strategy and
|
|
106
|
+
| [docs/installers/](installers/) | Installer strategy, manifest contract, and prototype history |
|
|
106
107
|
| [docs/comparisons/](comparisons/) | Trade-offs vs other frameworks |
|
|
@@ -27,6 +27,8 @@ pip install "abstractframework[apple]" # Apple Silicon native stack (MLX/M
|
|
|
27
27
|
pip install "abstractframework[gpu]" # GPU native stack (CUDA/ROCm)
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
+
See [Install AbstractFramework](install.md) for the profile chooser and first health checks.
|
|
31
|
+
|
|
30
32
|
---
|
|
31
33
|
|
|
32
34
|
## Convenience re-exports
|
|
@@ -89,6 +91,25 @@ from abstractframework import print_status
|
|
|
89
91
|
print_status()
|
|
90
92
|
```
|
|
91
93
|
|
|
94
|
+
### `abstractframework doctor`
|
|
95
|
+
|
|
96
|
+
Checks Python version, pinned package versions, Node/npm availability for browser UIs, and local
|
|
97
|
+
hardware indicators for Apple/GPU profiles. It does not import heavy local inference stacks.
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
abstractframework doctor
|
|
101
|
+
abstractframework doctor --json
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### `abstractframework manifest`
|
|
105
|
+
|
|
106
|
+
Prints or validates the installer-facing manifest generated from the root release profile.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
abstractframework manifest
|
|
110
|
+
abstractframework manifest --check docs/installers/install-manifest.json
|
|
111
|
+
```
|
|
112
|
+
|
|
92
113
|
---
|
|
93
114
|
|
|
94
115
|
## Where to find the functional APIs
|