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.
Files changed (372) hide show
  1. {abstractframework-0.1.6 → abstractframework-0.1.7}/CHANGELOG.md +26 -0
  2. {abstractframework-0.1.6/abstractframework.egg-info → abstractframework-0.1.7}/PKG-INFO +5 -1
  3. {abstractframework-0.1.6 → abstractframework-0.1.7}/README.md +4 -0
  4. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework/__init__.py +27 -30
  5. abstractframework-0.1.7/abstractframework/__main__.py +5 -0
  6. abstractframework-0.1.7/abstractframework/cli.py +214 -0
  7. abstractframework-0.1.7/abstractframework/install_manifest.py +145 -0
  8. {abstractframework-0.1.6 → abstractframework-0.1.7/abstractframework.egg-info}/PKG-INFO +5 -1
  9. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/SOURCES.txt +12 -0
  10. abstractframework-0.1.7/abstractframework.egg-info/entry_points.txt +2 -0
  11. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/README.md +2 -1
  12. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/api.md +21 -0
  13. abstractframework-0.1.7/docs/backlog/completed/0158_installer_repository_extraction.md +77 -0
  14. abstractframework-0.1.7/docs/backlog/completed/0159_generated_install_manifest_contract.md +79 -0
  15. abstractframework-0.1.7/docs/backlog/completed/0160_framework_doctor_and_launch_cli.md +73 -0
  16. abstractframework-0.1.7/docs/backlog/completed/0161_three_path_public_install_guide.md +77 -0
  17. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/overview.md +12 -0
  18. abstractframework-0.1.7/docs/backlog/proposed/installers/0162_signed_installer_ci_and_distribution.md +64 -0
  19. abstractframework-0.1.7/docs/backlog/proposed/installers/0163_cpu_local_inference_install_profile.md +66 -0
  20. abstractframework-0.1.7/docs/backlog/proposed/installers/README.md +33 -0
  21. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/faq.md +4 -0
  22. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/getting-started.md +2 -0
  23. abstractframework-0.1.7/docs/install.md +134 -0
  24. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/README.md +5 -3
  25. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/release-and-manifest.md +10 -1
  26. {abstractframework-0.1.6 → abstractframework-0.1.7}/llms-full.txt +1061 -32
  27. {abstractframework-0.1.6 → abstractframework-0.1.7}/llms.txt +3 -0
  28. {abstractframework-0.1.6 → abstractframework-0.1.7}/pyproject.toml +4 -1
  29. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/build.sh +12 -10
  30. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gateway-flow-local.sh +12 -6
  31. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gen_llms_full.py +10 -0
  32. {abstractframework-0.1.6 → abstractframework-0.1.7}/tests/test_install_profiles.py +50 -24
  33. {abstractframework-0.1.6 → abstractframework-0.1.7}/LICENSE +0 -0
  34. {abstractframework-0.1.6 → abstractframework-0.1.7}/MANIFEST.in +0 -0
  35. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework/py.typed +0 -0
  36. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/dependency_links.txt +0 -0
  37. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/requires.txt +0 -0
  38. {abstractframework-0.1.6 → abstractframework-0.1.7}/abstractframework.egg-info/top_level.txt +0 -0
  39. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0001-layered-architecture.md +0 -0
  40. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0002-effect-system-design.md +0 -0
  41. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0003-tool-system-architecture.md +0 -0
  42. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0004-observability-strategy.md +0 -0
  43. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0005-memory-architecture.md +0 -0
  44. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0006-durable-tool-execution.md +0 -0
  45. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0007-active-context-and-memory-provenance.md +0 -0
  46. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0008-token-terminology.md +0 -0
  47. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0009-connected-memory-recall-and-provenance.md +0 -0
  48. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0010-runtime-owned-node-traces.md +0 -0
  49. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0011-ledger-subscriptions-and-event-bridge.md +0 -0
  50. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0012-portable-workflowartifact.md +0 -0
  51. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0013-durable-run-controls-pause-resume-cancel.md +0 -0
  52. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0014-runtime-authority-timeouts.md +0 -0
  53. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0015-execution-targets-and-remote-tool-workers.md +0 -0
  54. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0016-tool-calling-pipeline-and-responsibility-boundaries.md +0 -0
  55. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0017-host-ui-events-and-durable-prompts.md +0 -0
  56. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0018-durable-run-gateway-and-remote-host-control-plane.md +0 -0
  57. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0019-testing-strategy-and-levels.md +0 -0
  58. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0020-agent-host-pool-and-orchestrator-placement.md +0 -0
  59. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0021-deployment-topologies-and-supported-scenarios.md +0 -0
  60. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0022-orchestrator-host-and-runtime-daemonization.md +0 -0
  61. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0023-file-attachment-path-resolution-and-authorization.md +0 -0
  62. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0024-attachment-placeholders-and-compaction-invariants.md +0 -0
  63. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0025-kg-entity-normalization-and-dedup.md +0 -0
  64. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0026-truncation-policy-and-contract.md +0 -0
  65. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0027-timeout-policy-and-contract.md +0 -0
  66. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0028-capabilities-plugins-and-library-framework-modes.md +0 -0
  67. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0029-permissive-dependency-and-licensing-policy.md +0 -0
  68. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0030-security-test-fixtures-and-isolation.md +0 -0
  69. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0031-workflow-llm-routing-overrides-provider-model-and-base-url.md +0 -0
  70. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0032-package-dependency-boundaries-and-gateway-first-apps.md +0 -0
  71. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0033-install-profiles-config-entrypoints-and-server-boundaries.md +0 -0
  72. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0034-framework-release-sequence-and-gates.md +0 -0
  73. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/0035-capability-routing-defaults.md +0 -0
  74. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/README.md +0 -0
  75. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/memory-recall-levels.md +0 -0
  76. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/001_music_as_capability_plugin_via_acestep_api.md +0 -0
  77. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/002_abstractmusic_inprocess_local_generation.md +0 -0
  78. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/003_abstractmusic_acestep_v15_backend_source_strategy.md +0 -0
  79. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/004_smartnote_thin_client_architecture.md +0 -0
  80. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/005_smartnote_artifact_first_cards.md +0 -0
  81. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_gateway-first-assistant.md +0 -0
  82. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_installer_manager_strategy.md +0 -0
  83. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/adr/reorg/2026-02-21_macos_installer_manager.md +0 -0
  84. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/architecture.md +0 -0
  85. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/001_documentation_overhaul.md +0 -0
  86. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/002_clone_and_build_scripts.md +0 -0
  87. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/003_cross_package_documentation_review.md +0 -0
  88. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/005_abstractmusic_music_generation_capability_plugin.md +0 -0
  89. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/006_abstractmusic_docs_clarify_llm_vs_music_backend.md +0 -0
  90. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/007_abstractmusic_local_inprocess_generation.md +0 -0
  91. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/008_abstractmusic_cli_and_repl.md +0 -0
  92. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/009_abstractcore_music_endpoints_and_abstractmusic_mps_fix.md +0 -0
  93. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/010_abstractmusic_mps_fallback_reload_cpu_float32.md +0 -0
  94. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/011_investigate_acestep_mps_support.md +0 -0
  95. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/012_abstractmusic_acestep_v15_local_backend.md +0 -0
  96. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0139_unified_framework_capability_defaults.md +0 -0
  97. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/013_abstractmusic_cli_common_flags_after_subcommand.md +0 -0
  98. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0140_abstract_release_skill.md +0 -0
  99. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0141_flow_browser_session_gateway_auth.md +0 -0
  100. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0149_cross_app_gateway_auth_defaults_convergence.md +0 -0
  101. {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
  102. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0154_multi_user_security_release_blockers.md +0 -0
  103. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0156_retained_runtime_admin_lifecycle.md +0 -0
  104. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/0157_gateway_provider_endpoint_profiles.md +0 -0
  105. {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
  106. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/016_abstractmusic_acestep_mps_memory_budget_and_fp16_defaults.md +0 -0
  107. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/017_abstractmusic_acestep_mps_dtype_alignment_fix.md +0 -0
  108. {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
  109. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/019_abstractmusic_acestep_default_infer_method_sde_for_stability.md +0 -0
  110. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/020_abstractmusic_acestep_upstream_alignment_nonfinite_and_src_latents.md +0 -0
  111. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/021_acestep_latent_channels_unbound_fix.md +0 -0
  112. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/022_acestep_vae_cpu_fallback_dtype_fix.md +0 -0
  113. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/023_acestep_mps_memory_cap_12gb.md +0 -0
  114. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/024_acestep_mps_watermark_validation_and_warning_fixes.md +0 -0
  115. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/025_reduce_acestep_startup_warnings.md +0 -0
  116. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/026_acestep_mps_oom_and_warning_cleanup.md +0 -0
  117. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/027_acestep_warning_and_fallback_fixes.md +0 -0
  118. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/028_acestep_warning_meta_and_vae_load_fixes.md +0 -0
  119. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/029_acestep_mps_fraction_and_fallback_sync.md +0 -0
  120. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/031_telegram_media_reset_typing.md +0 -0
  121. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/032_gateway_default_model_from_config.md +0 -0
  122. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/033_agent_default_model_from_config.md +0 -0
  123. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/034_agent_default_pins_marker.md +0 -0
  124. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/035_abstractcore_model_registry_docs.md +0 -0
  125. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/035_telegram_media_artifact_resolution.md +0 -0
  126. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/036_commit_per_package_script.md +0 -0
  127. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/039_abstractobserver_observe_ui_redesign.md +0 -0
  128. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/040_abstractobserver_launch_ui_cleanup.md +0 -0
  129. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/041_abstractobserver_inbox_backlog_feature_flags.md +0 -0
  130. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/042_abstractobserver_header_observe_toolbar_cleanup.md +0 -0
  131. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/043_package_by_package_architecture_review.md +0 -0
  132. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/043_update_abstractobserver_docs_flags.md +0 -0
  133. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/044_state_of_the_art_package_comparisons.md +0 -0
  134. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/045_abstractflow_gateway_thin_client_refactor.md +0 -0
  135. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/046_abstractassistant_gateway_thin_client_refactor.md +0 -0
  136. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/046_abstractflow_gateway_thin_client_plan.md +0 -0
  137. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/047_abstractassistant_gateway_thin_client_reassessment.md +0 -0
  138. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/047_abstractflow_gateway_thin_client_migration.md +0 -0
  139. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/048_abstractassistant_gateway_vs_abstractcode_web.md +0 -0
  140. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/049_abstractassistant_react_tray_rewrite_assessment.md +0 -0
  141. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/050_abstractassistant_thin_client_strategy_assessment.md +0 -0
  142. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/051_gateway_local_remote_tradeoffs.md +0 -0
  143. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/052_gateway_assistant_design_and_scaffold.md +0 -0
  144. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/053_gateway_assistant_phase1_gateway_run.md +0 -0
  145. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/054_gateway_assistant_gateway_mode_no_local_core.md +0 -0
  146. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/055_tray_animation_smoothness.md +0 -0
  147. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/056_tray_click_activation_fix.md +0 -0
  148. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/057_gateway_subworkflow_follow.md +0 -0
  149. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/058_gateway_run_follow_streaming.md +0 -0
  150. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/059_gateway_run_history_resume.md +0 -0
  151. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/060_gateway_audio_pipeline.md +0 -0
  152. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/061_gateway_workflow_picker.md +0 -0
  153. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/062_gateway_artifacts_and_tool_results.md +0 -0
  154. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/063_gateway_discovery_cache.md +0 -0
  155. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/064_gateway_state_machine_cleanup.md +0 -0
  156. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/065_gateway_offline_reconnect.md +0 -0
  157. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/066_gateway_docs_and_adr.md +0 -0
  158. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/067_gateway_assistant_cleanup_refactor.md +0 -0
  159. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/067_smartnote_systray_notes.md +0 -0
  160. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_abstractvoice_default.md +0 -0
  161. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_claude_skills_research_and_fit.md +0 -0
  162. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/068_smartnote_src_layout.md +0 -0
  163. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/069_claude_shareable_skills_research.md +0 -0
  164. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/069_smartnote_tray_quick_note_ui.md +0 -0
  165. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/070_agent_skills_ecosystem_scan_and_framework_deep_dive.md +0 -0
  166. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/071_smartnote_gateway_integration.md +0 -0
  167. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/072_smartnote_ingest_overrides_and_attachment_provenance.md +0 -0
  168. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/073_lmstudio_model_discovery_validation.md +0 -0
  169. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/073_smartnote_specialized_workflow_doc.md +0 -0
  170. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/074_smartnote_specialized_workflow_doc_location.md +0 -0
  171. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/074_subworkflow_wait_ui_clarity.md +0 -0
  172. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_abstractcore_installer_wizard_parity.md +0 -0
  173. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_flow_ui_subrun_stream_and_output_formatting.md +0 -0
  174. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_reasoning_model_temperature_parameter_handling.md +0 -0
  175. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/075_remove_root_specialized_workflow_doc.md +0 -0
  176. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_abstractcore_installer_rebuild_docs.md +0 -0
  177. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_assistant_window_positioning.md +0 -0
  178. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_flow_ui_resume_layout_and_output.md +0 -0
  179. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/076_smartnote_auto_bundle_startup.md +0 -0
  180. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_installer_wizard_clarity_defaults.md +0 -0
  181. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_smartnote_artifact_first_graph_plan.md +0 -0
  182. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/077_tray_voice_meter_and_animation_smoothing.md +0 -0
  183. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/078_framework_installer_guides.md +0 -0
  184. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/078_tool_policy_selector_shared.md +0 -0
  185. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/079_voice_meter_bands_and_duplicate_response_fix.md +0 -0
  186. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/080_assistant_visibility_state_cleanup.md +0 -0
  187. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/080_flow_agent_trace_and_tool_allowlist_fixes.md +0 -0
  188. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/081_flow_agent_non_agency_and_max_iterations_default.md +0 -0
  189. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/081_tool_dialog_grouping_and_voice_stop_behavior.md +0 -0
  190. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/082_run_107f199c_workspace_root_analysis.md +0 -0
  191. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/082_tool_mode_indicator_and_policy_defaults.md +0 -0
  192. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/083_tool_policy_enforcement_and_defaults.md +0 -0
  193. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/083_workspace_policy_prompt_alignment.md +0 -0
  194. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/084_runtime_workspace_gating_confirmation.md +0 -0
  195. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/084_tool_approval_dialog_improvements.md +0 -0
  196. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/085_block_ui_open_when_running.md +0 -0
  197. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/085_run_5bec2a17_workspace_policy_failure.md +0 -0
  198. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/086_gateway_stream_idle_watchdog.md +0 -0
  199. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/086_run_98531c5a_path_refusal.md +0 -0
  200. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/087_tool_approval_dialog_visibility_fix.md +0 -0
  201. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/087_workspace_policy_recheck.md +0 -0
  202. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/088_execute_snake_game_flow.md +0 -0
  203. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/088_pending_wait_rehydrate_and_tool_approval_detection.md +0 -0
  204. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/089_execute_snake_game_flow_restart.md +0 -0
  205. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/089_gateway_reattach_wait_visibility_fix.md +0 -0
  206. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/090_follow_latest_subworkflow_wait.md +0 -0
  207. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/090_run_modal_follow_up_button.md +0 -0
  208. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/091_follow_up_session_id_input.md +0 -0
  209. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/091_font_warning_and_runtime_policy_investigation.md +0 -0
  210. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/092_tool_approval_approve_all.md +0 -0
  211. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/092_tray_click_visibility_source_of_truth.md +0 -0
  212. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/093_follow_up_context_persistence.md +0 -0
  213. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/093_gateway_tts_pause_resume_support.md +0 -0
  214. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/094_gateway_tts_pause_readiness.md +0 -0
  215. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/095_gateway_voice_state_sync_on_stop.md +0 -0
  216. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/096_app_visibility_state_rewrite.md +0 -0
  217. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/097_macos_framework_installer_manager.md +0 -0
  218. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/098_macos_installer_ui_fixes.md +0 -0
  219. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/099_macos_installer_tauri_global_api.md +0 -0
  220. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/100_macos_installer_progress_ui.md +0 -0
  221. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/101_macos_installer_bridge_fallback.md +0 -0
  222. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/102_macos_installer_event_acl.md +0 -0
  223. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/103_macos_installer_python_prereq_modal.md +0 -0
  224. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/104_follow_up_inline_resume_modal.md +0 -0
  225. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/104_macos_installer_python_auto_download.md +0 -0
  226. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/105_macos_installer_python_detection_paths.md +0 -0
  227. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/105_toolbar_duplicate_button.md +0 -0
  228. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/106_ledger_jsonl_recovery_and_locking.md +0 -0
  229. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/106_macos_installer_python_retry_and_logs.md +0 -0
  230. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/107_macos_installer_pypi_version_fallback.md +0 -0
  231. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/107_tool_approval_preserved_on_subworkflow_wait.md +0 -0
  232. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/108_history_view_tool_approval_visibility.md +0 -0
  233. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/108_macos_installer_setup_wizard_ui.md +0 -0
  234. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/109_macos_installer_log_dedup.md +0 -0
  235. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/110_macos_installer_setup_wizard_steps.md +0 -0
  236. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/111_approve_all_root_run_scope.md +0 -0
  237. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/111_macos_installer_provider_cleanup.md +0 -0
  238. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/112_macos_installer_full_step_wizard.md +0 -0
  239. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/112_run_history_root_only_limit.md +0 -0
  240. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/113_macos_installer_fit_frame.md +0 -0
  241. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/113_run_history_workflow_id_filter.md +0 -0
  242. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/114_abstractcode_wait_resolution_stale_wait.md +0 -0
  243. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/114_macos_installer_api_key_explanation.md +0 -0
  244. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/115_macos_installer_finish_and_nav.md +0 -0
  245. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/115_react_tool_result_dedupe_and_run_failure_feedback.md +0 -0
  246. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/116_macos_installer_install_panel_wrap.md +0 -0
  247. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/116_tool_calls_idempotency_call_id_fix.md +0 -0
  248. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/117_macos_installer_choice_alignment.md +0 -0
  249. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/118_macos_installer_log_visibility.md +0 -0
  250. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/119_macos_installer_env_var_apply.md +0 -0
  251. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/120_macos_installer_env_defaults.md +0 -0
  252. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/121_macos_tray_ready_click_fallback.md +0 -0
  253. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/122_macos_tray_menu_artifact_removal.md +0 -0
  254. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/123_full_voice_tray_listening_and_tool_set_announcement.md +0 -0
  255. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/124_macos_ready_click_show_race_fix.md +0 -0
  256. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/125_full_voice_mic_reactive_listening_and_start_button.md +0 -0
  257. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/126_listening_meter_gain_and_modal_visibility_followup.md +0 -0
  258. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/127_tool_approval_modal_crash_hardening.md +0 -0
  259. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/128_tool_approval_dialog_quit_on_close.md +0 -0
  260. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/129_prompt_cache_capability_contract_and_provider_parity.md +0 -0
  261. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/131_prompt_cache_cross_package_capability_followup.md +0 -0
  262. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/132_prompt_cache_abstraction_review_and_gateway_readiness.md +0 -0
  263. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/133_gguf_prompt_cache_local_control_plane_parity.md +0 -0
  264. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/completed/136_ai_space_portable_semantic_retrieval_and_graph.md +0 -0
  265. {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
  266. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/004_abstractassistant_model_discovery_and_dev_build_fix.md +0 -0
  267. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/0142_gateway_tenant_isolation_and_shared_runtime.md +0 -0
  268. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/0143_shared_gateway_per_principal_runtime_router.md +0 -0
  269. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/035_abstractcore_model_registry_docs.md +0 -0
  270. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/036_commit_per_package_script.md +0 -0
  271. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/037_telegram_bot_access_control.md +0 -0
  272. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/038_framework_config_wizard.md +0 -0
  273. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/039_tool_argument_type_coercion.md +0 -0
  274. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/041_abstractobserver_inbox_backlog_feature_flags.md +0 -0
  275. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/042_abstractobserver_header_observe_toolbar_cleanup.md +0 -0
  276. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/043_update_abstractobserver_docs_flags.md +0 -0
  277. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/074_agent_skills_integration.md +0 -0
  278. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/074_agent_skills_integration_plan.md +0 -0
  279. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/076_openai_responses_api_integration.md +0 -0
  280. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/102_macos_installer_event_acl.md +0 -0
  281. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/103_macos_installer_python_prereq_modal.md +0 -0
  282. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/104_macos_installer_python_auto_download.md +0 -0
  283. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/105_macos_installer_python_detection_paths.md +0 -0
  284. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/106_macos_installer_python_retry_and_logs.md +0 -0
  285. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/107_macos_installer_pypi_version_fallback.md +0 -0
  286. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/108_macos_installer_setup_wizard_ui.md +0 -0
  287. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/109_macos_installer_log_dedup.md +0 -0
  288. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/110_macos_installer_setup_wizard_steps.md +0 -0
  289. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/111_macos_installer_provider_cleanup.md +0 -0
  290. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/112_macos_installer_full_step_wizard.md +0 -0
  291. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/113_macos_installer_fit_frame.md +0 -0
  292. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/114_macos_installer_api_key_explanation.md +0 -0
  293. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/115_macos_installer_finish_and_nav.md +0 -0
  294. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/116_macos_installer_install_panel_wrap.md +0 -0
  295. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/117_macos_installer_choice_alignment.md +0 -0
  296. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/118_macos_installer_log_visibility.md +0 -0
  297. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/119_macos_installer_env_var_apply.md +0 -0
  298. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/119_tool_calls_invocation_nonce_for_non_llm.md +0 -0
  299. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/120_macos_installer_env_defaults.md +0 -0
  300. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/130_react_scratchpad_prompt_flow_and_best_practice_review.md +0 -0
  301. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/134_mlx_local_cache_model_resolution_short_names.md +0 -0
  302. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/135_abstractflow_exec_fanin_joinexec_and_path_mux.md +0 -0
  303. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/137_ai_space_multimodal_media_blocs_and_prefix_cache.md +0 -0
  304. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/138_scoped_provider_model_pin_types.md +0 -0
  305. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0145_gateway_admin_console_bootstrap.md +0 -0
  306. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0146_gateway_rbac_scope_policy_matrix.md +0 -0
  307. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0147_gateway_per_principal_config_secrets_defaults.md +0 -0
  308. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0148_gateway_workflow_registry_acl.md +0 -0
  309. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0150_observer_manager_responsibility_split.md +0 -0
  310. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/0153_gateway_browser_session_security_contract.md +0 -0
  311. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/planned/gateway-control-plane/README.md +0 -0
  312. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/0144_user_profile_context_grounding.md +0 -0
  313. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/2026-05-08_unified_install_profiles_and_config_entrypoints.md +0 -0
  314. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0151_runtime_explorer_contract.md +0 -0
  315. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0152_abstractmanager_package_extraction.md +0 -0
  316. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/0155_hosted_proxy_shared_helper_extraction.md +0 -0
  317. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/backlog/proposed/gateway-control-plane/README.md +0 -0
  318. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/README.md +0 -0
  319. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/abstractframework-fit.md +0 -0
  320. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-overview.md +0 -0
  321. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-sources.md +0 -0
  322. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/claude/claude-skills-top-20.md +0 -0
  323. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/comparisons/README.md +0 -0
  324. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/configuration.md +0 -0
  325. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/glossary.md +0 -0
  326. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/README.md +0 -0
  327. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/agent-skills.md +0 -0
  328. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/agent-vs-llm.md +0 -0
  329. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/apple-local-gateway-flow.md +0 -0
  330. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/capability-plugins.md +0 -0
  331. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/capability-routing-defaults.md +0 -0
  332. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-iphone.md +0 -0
  333. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-topologies.md +0 -0
  334. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/deployment-web.md +0 -0
  335. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/email-integration.md +0 -0
  336. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/flow-and-kg-memory.md +0 -0
  337. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/gateway-security.md +0 -0
  338. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/process-manager-env-vars.md +0 -0
  339. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/prompt-caching.md +0 -0
  340. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/runtime-scope.md +0 -0
  341. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/scheduled-workflows.md +0 -0
  342. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/telegram-integration.md +0 -0
  343. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/guide/workflow-bundles.md +0 -0
  344. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/components.md +0 -0
  345. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/implementation-plan.md +0 -0
  346. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/operations-and-support.md +0 -0
  347. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/security-and-os-blocks.md +0 -0
  348. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/strategy.md +0 -0
  349. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/installers/user-journeys.md +0 -0
  350. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/reports/history-acore.md +0 -0
  351. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/README.md +0 -0
  352. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/email-inbox-agent.md +0 -0
  353. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/gateway-first-local-dev.md +0 -0
  354. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/offline-coding-assistant.md +0 -0
  355. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/phone-thin-client.md +0 -0
  356. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/specialized-agent-flow.md +0 -0
  357. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/telegram-permanent-contact.md +0 -0
  358. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/scenarios/workflow-bundle-lifecycle.md +0 -0
  359. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/README.md +0 -0
  360. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/abstractframework-agent-skills-fit.md +0 -0
  361. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/abstractframework-architecture-deep-dive.md +0 -0
  362. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/agent-skills-ecosystem-scan.md +0 -0
  363. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/agent-skills-ecosystem-sources.md +0 -0
  364. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-overview.md +0 -0
  365. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-sources.md +0 -0
  366. {abstractframework-0.1.6 → abstractframework-0.1.7}/docs/skills/claude-agent-skills-top-20.md +0 -0
  367. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/clone.sh +0 -0
  368. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/commit.sh +0 -0
  369. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/gateway-flow.sh +0 -0
  370. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/install.sh +0 -0
  371. {abstractframework-0.1.6 → abstractframework-0.1.7}/scripts/status.sh +0 -0
  372. {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.6
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.6"
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
- "base": "pip install abstractframework",
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,5 @@
1
+ from __future__ import annotations
2
+
3
+ from .cli import main
4
+
5
+ raise SystemExit(main())
@@ -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.6
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
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ abstractframework = abstractframework.cli:main
@@ -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 prototypes |
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