Init Blueprints - #960
Merged
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
The template finance importer has a mis-indented asyncio.to_thread(...) call that will produce a SyntaxError and must be fixed before merging.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds “blueprints” (named preset stacks) to the Aegis Stack CLI so users can start aegis init from a curated configuration, while keeping the preset behavior identical to answering the existing selection engine screens by hand.
Changes:
- Introduces the blueprint registry/spec +
aegis blueprintscommand andaegis init --blueprint/-bflag, plus guided UI “starting point” + gallery flow. - Updates project map rendering to derive the
services/section from the service registry (and adds map labels for newly surfaced services). - Improves generated-project template behavior around finance imports/recurring review UX and avoids blocking the event loop for several sync/CPU-heavy operations (with new tests).
File summaries
| File | Description |
|---|---|
| tests/core/test_project_map.py | New tests ensuring all registered services render in the project map with short labels. |
| tests/core/test_module_size_budget.py | Updates ratcheted size budget for a finance importer module. |
| tests/cli/test_guided.py | Adjusts guided-init key drives for the new starting-point screen. |
| tests/cli/test_blueprints.py | New test suite covering blueprint registry, CLI, guided seeding behavior, and equivalence guarantees. |
| pyrightconfig.json | Adds Pyright config and excludes template/generated project directories from type checking. |
| pyproject.toml | Extends tooling excludes to ignore additional generated demo directories. |
| docs/cli-reference.md | Documents aegis blueprints and the --blueprint flag + guided flow changes. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_client.py | Adds tests pinning longer timeout usage for finance import upload endpoints. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_system_jobs.py | Adds tests asserting DB backup/restore subprocess calls run off the event loop. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_import.py | Adds tests asserting finance import parsing runs in a worker thread. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_attach.py | Adds coverage for improved recurring-match candidate filtering edge cases. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_agent.py | Adds test asserting usage recorder runs off the event loop. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_finance_endpoints.py | Adds tests for the new recurring review-queue batch endpoint. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/backup.py.jinja | Moves pg_dump/psql subprocess work to asyncio.to_thread to avoid blocking the loop. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/queries.py | Adds query helper to infer effective member category id for matching logic. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/matching.py | Enhances match candidate filtering to avoid sibling-claimed/identified-as-other noise. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/imports.py | Moves CSV/OFX/QIF parsing off the event loop and refactors extension parsing into base. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/base.py | New shared parsing helpers + UnsupportedFileTypeError. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/chat_kit/agent.py | Runs synchronous usage recording in a thread to protect streaming latency. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/tab.py | Adds a “Review” button for overdue recurring items and keeps count updated. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/shared.py | Adds past_due/needs_review helpers used across UI surfaces. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/rows.py | Displays “Overdue” based on due-date truth (not grace) to match review semantics. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/dialogs.py | Adds multi-step recurring review queue UX and reuses existing match dialog. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/imports_flow.py | Adds import-specific longer timeout for in-request preview/import endpoints. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/recurring.py | Adds /recurring/review-queue endpoint and shares candidate-enrichment logic. |
| aegis/i18n/locales/en.py | Adds new blueprint/init help strings and project-map labels for added services. |
| aegis/i18n/locales/de.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/es.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/fr.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/ja.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/ko.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/ru.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/zh.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/i18n/locales/zh_hant.py | Stubs new blueprint/init keys and project-map labels. |
| aegis/core/project_map.py | Derives services/ section from SERVICES registry and adds service label fallback logic. |
| aegis/commands/init.py | Adds --blueprint/-b and blueprint expansion + guided pass-through. |
| aegis/commands/blueprints.py | New aegis blueprints command implementation. |
| aegis/main.py | Registers the new blueprints command on the root Typer app. |
| aegis/cli/callbacks.py | Extracts reusable service option-handler application for bracket syntax. |
| aegis/cli/guided.py | Adds blueprint-aware guided init flow, sidebar rules, and starting-point integration. |
| aegis/cli/guided_chrome.py | New shared guided UI chrome module (key reader, styles, helpers). |
| aegis/cli/guided_blueprints.py | New starting-point + blueprint gallery screens for guided init. |
| aegis/blueprints/spec.py | New blueprint data model + adapters for driving the selection engine. |
| aegis/blueprints/finance.py | Adds the initial “finance” blueprint preset. |
| aegis/blueprints/init.py | Adds import-time discovery/registry of blueprint modules. |
| .gitignore | Ignores an additional generated demo directory. |
Review details
- Files reviewed: 45/46 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
lbedner
force-pushed
the
init-blueprints
branch
from
August 21, 2026 20:06
820c940 to
2e05e15
Compare
lbedner
force-pushed
the
init-blueprints
branch
from
August 21, 2026 20:19
2e05e15 to
958d6c2
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.