Skip to content

Init Guided Mode#734

Merged
lbedner merged 1 commit into
mainfrom
init-wizard-mode
Jun 12, 2026
Merged

Init Guided Mode#734
lbedner merged 1 commit into
mainfrom
init-wizard-mode

Conversation

@lbedner

@lbedner lbedner commented Jun 12, 2026

Copy link
Copy Markdown
Owner

No description provided.

Copilot AI review requested due to automatic review settings June 12, 2026 21:33

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 init guided mode renderer (Rich alternate-screen UI) plus shared BuildPlan resolution and build progress reporting (BuildReporter).
  • Add docs_path / long_description to 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 database component. 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 supports database[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"))

Comment thread .copier-answers.yml Outdated
@lbedner lbedner force-pushed the init-wizard-mode branch from 6afcd45 to ffa14cc Compare June 12, 2026 22:48
@lbedner lbedner merged commit 4366723 into main Jun 12, 2026
8 checks passed
@lbedner lbedner deleted the init-wizard-mode branch June 12, 2026 23:05
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants