Init Guided Mode#734
Merged
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Adds a new full-screen “guided” experience for aegis init while keeping a single selection/resolution engine shared with the existing quick prompts. The PR also expands plugin metadata (docs paths + longer descriptions), improves build-step progress reporting hooks, and extends generated-blog syndication support.
Changes:
- Introduce
aegis initguided mode renderer (Rich alternate-screen UI) plus sharedBuildPlanresolution and build progress reporting (BuildReporter). - Add
docs_path/long_descriptionto component + service specs, plus tests that enforce docs-path correctness and dependency-derivation display helpers. - Update templates and tests around worker/load-test backend variants, replay-command printing, AI provider defaults, and blog syndication metadata (DB + serialization + UI).
Reviewed changes
Copilot reviewed 53 out of 56 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/core/test_spec_docs_paths.py | New tests ensuring non-empty docs_path values resolve to real docs sources. |
| tests/core/test_pairs_well_with.py | New tests for derived “Requires” / “Pairs well with” display helpers. |
| tests/core/test_file_mapping_derivation.py | Allow legacy generated-only paths in file-manifest derivation tests. |
| tests/cli/test_services_cli.py | Update interactive prompt expectations for additional services. |
| tests/cli/test_scheduler_persistence.py | Update prompt ordering/expectations for scheduler persistence flow. |
| tests/cli/test_replay_command.py | New tests for init replay-command generation and Rich-safe printing. |
| tests/cli/test_post_gen_worker_cleanup.py | Expand cleanup tests to cover load-test worker service variant installation. |
| tests/cli/test_interactive_scheduler.py | Update scheduler interactive tests for new prompt ordering/service list. |
| tests/cli/test_interactive_project_selection.py | Update scripted UI and prompt-order assumptions for the shared engine. |
| tests/cli/test_guided.py | New comprehensive tests driving guided mode via scripted keypresses. |
| tests/cli/test_cli_basic.py | Assert --guided/--quick flags appear in help output. |
| tests/cli/test_ai_configuration.py | Update AI provider defaults and prompt sequencing (service ordering changes). |
| scripts/gen_docs.py | Simplify image path rewriting for README → MkDocs conversion. |
| README.md | Document guided init as the default interactive experience; add demo image. |
| pyproject.toml | Exclude demo-* artifacts from Ruff/Mypy. |
| docs/index.md | Mention guided init default and --quick escape hatch in quickstart. |
| docs/cli-reference.md | Document guided mode behavior, requirements, and keybindings; add screenshot. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_service.py.jinja | Gate load-test service unit tests to ARQ worker backend. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_component_integration.py.jinja | Gate worker-health tests to ARQ backend (mocking assumptions). |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_blog_service.py | Add tests for syndication-targets normalization behavior. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_blog_serialization.py | Add tests for markdown frontmatter syndication fields + roundtrip. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_events.py.jinja | Adjust worker events middleware import expectations in generated tests. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_worker_endpoints.py.jinja | Gate ARQ-specific enqueue tests behind backend condition. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/service_taskiq.py | Update load-test worker imports to new packaged models location. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/service_dramatiq.py | Update load-test worker imports to new packaged models location. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/serialization.py | Add syndication targets + canonical URL to export/import frontmatter. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/schemas.py | Add syndication targets + canonical URL fields to blog schemas. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/models.py | Add syndicate_targets JSON column to blog post model. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/blog_service.py | Normalize syndication targets and inject canonical URL on export; ignore on import. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal.py | Add dashboard UI controls for syndication target selection. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/.env.example.jinja | Clarify AI “public” provider wording and notes. |
| aegis/i18n/locales/zh.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/zh_hant.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/ru.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/ko.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/ja.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/fr.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/es.py | Add new message keys for replay hint + AI provider label. |
| aegis/i18n/locales/en.py | Add new message keys for replay hint + AI provider label + tweak Google provider copy. |
| aegis/i18n/locales/de.py | Add new message keys for replay hint + AI provider label. |
| aegis/core/services.py | Add docs paths + long descriptions to service registry specs. |
| aegis/core/post_gen_tasks.py | Add optional build-step reporting events and fix load-test worker variant renames. |
| aegis/core/plugins/spec.py | Add long_description/docs_path to specs and new dependency-display helpers. |
| aegis/core/copier_manager.py | Thread optional build-step reporter through copier generation pipeline. |
| aegis/core/components.py | Add docs paths + long descriptions to component registry specs; adjust worker manifest notes. |
| aegis/core/build_reporter.py | New BuildReporter protocol for step-granularity build progress. |
| aegis/constants.py | Add DOCS_BASE_URL, adjust interactive infrastructure order, update AI provider defaults/info. |
| aegis/commands/init.py | Add guided init flow, replay command printing, and shared build-plan resolution. |
| aegis/cli/interactive.py | Extend SelectionUI protocol to carry spec context; refactor service prompting by type; add scheduler-backend selection seam. |
| aegis/cli/guided.py | New full-screen guided SelectionUI implementation + end-to-end guided init flow. |
| aegis/cli/build_plan.py | New shared plan resolver used by both quick and guided init flows. |
| aegis/cli/brand.py | New CLI brand color constants used by guided UI and replay output. |
| .gitignore | Ignore demo-*/ artifacts. |
| .copier-answers.yml | New answers file added at repo root (appears to be a generated artifact). |
Comments suppressed due to low confidence (1)
aegis/cli/interactive.py:387
- Selecting the Database component interactively never asks which engine to use, and always records the plain
databasecomponent. That makes it impossible to choose PostgreSQL in interactive (quick/guided) mode unless you also pick Scheduler persistence or AI DB-backed storage, even though the CLI supportsdatabase[postgres]and there is an existing engine picker (select_database_engine).
state.components.append(ComponentNames.DATABASE)
if ComponentNames.SCHEDULER in state.components:
ui.echo(f"\n{t('interactive.bonus_backup')}")
ui.success(t("interactive.backup_desc"))
6afcd45 to
ffa14cc
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.