Conversation
eddd040 to
c5b2079
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new Insights (analytics/adoption metrics) service to the Aegis Stack generator, including bracket-syntax source selection and end-to-end template/doc/test integration.
Changes:
- Introduces
insights[...]bracket syntax parsing + validation and wires it into service resolution and template context. - Adds Insights service spec/answer keys/copier prompts plus generated-project templates (collectors, health, scheduler hooks, frontend card/modal wiring).
- Expands documentation + mkdocs nav and adds tests covering parser, resolver, registry, and template context flags.
Reviewed changes
Copilot reviewed 81 out of 90 changed files in this pull request and generated 9 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/core/test_template_generator.py | Tests template-context flags for Insights + source selection. |
| tests/core/test_services.py | Verifies Insights exists in SERVICES and uses constants for components. |
| tests/core/test_service_resolver.py | Tests dependency resolution + bracket validation for Insights. |
| tests/core/test_insights_service_parser.py | Unit tests for insights[...] parsing rules. |
| mkdocs.yml | Adds Insights docs section to site navigation. |
| docs/services/insights/index.md | Adds Insights service overview + architecture + setup guidance. |
| docs/services/insights/examples.md | Adds usage examples and workflows. |
| docs/services/insights/data-sources.md | Documents supported data sources and what’s collected. |
| docs/services/insights/dashboard.md | Documents Overseer dashboard integration for Insights. |
| docs/services/insights/configuration.md | Documents environment variables and collection intervals. |
| docs/services/insights/cli.md | Documents Insights CLI commands. |
| docs/services/index.md | Adds Insights to services overview/diagrams and updates service table. |
| docs/overseer/index.md | Mentions Insights as a service card in Overseer docs. |
| docs/components/index.md | Updates “Services vs Components” examples to include Insights. |
| copier.yml | Adds include_insights and per-source toggles for Copier prompts. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_service.py | Adds generated-project tests for collector orchestration. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_reddit.py | Adds generated-project tests for Reddit collector behavior. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_pypi.py | Adds generated-project tests for PyPI collector behavior. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_github_stars.py | Adds generated-project tests for GitHub stars collector behavior. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_github_events.py | Adds generated-project tests for GitHub events collector behavior. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/ui.py.jinja | Adds Insights service label/subtitle formatting in UI helpers. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/seed.py.jinja | Adds idempotent seed data for Insight sources + metric types. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas.py | Adds Pydantic metadata schemas for stored JSON metadata shapes. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/query_service.py | Adds sync query layer for dashboard queries. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/models.py | Adds SQLModel tables for insight sources/metrics/events/records. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/jobs.py.jinja | Adds scheduler job functions for collectors. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/health.py.jinja | Adds Insights health check for Overseer. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/constants.py | Adds source/metric/period constants for Insights. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/reddit.py.jinja | Adds Reddit collector template implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/reddit.py | Adds Reddit collector implementation used in generated project. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/pypi.py | Adds PyPI collector implementation used in generated project. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/plausible.py.jinja | Adds Plausible collector template implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/plausible.py | Adds Plausible collector implementation used in generated project. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/github_traffic.py.jinja | Adds GitHub traffic collector template implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/github_traffic.py | Adds GitHub traffic collector implementation used in generated project. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/github_stars.py.jinja | Adds GitHub stars collector template implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/github_stars.py | Adds GitHub stars collector implementation used in generated project. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/github_events.py.jinja | Adds GitHub events collector template implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/base.py | Adds base collector helpers + upsert semantics + ClickHouse helper. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/collectors/init.py | Package init for collectors. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/init.py | Package init for insights service. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/en.py | Adds English CLI strings for Insights commands. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/config.py.jinja | Adds Insights environment variable settings to generated project config. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/main.py.jinja | Registers Insights collection jobs in scheduler component. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/main.py.jinja | Adds Insights card routing in frontend component. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/status_overview.py.jinja | Adds Insights display info in status overview. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/task_history_section.py | Refactors timestamp/duration formatting helpers into shared module. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/scheduler_modal.py | Adjusts scheduler modal status indicator logic and wording. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections.py | Adds shared formatting helpers + milestone/metric UI enhancements. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/init.py.jinja | Exports Insights detail modal when Insights enabled. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/diagram_node.py | Enables subtitle rendering for service_insights in diagram nodes. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/insights_card.py | Adds Insights dashboard card implementation. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils.py.jinja | Registers Insights modal + disables caching for data-heavy Insights modal. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/init.py.jinja | Exports Insights card when Insights enabled. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/activity_feed.py | Tweaks relative-time formatting for midnight timestamps. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/database_init.py.jinja | Seeds insights lookup tables at startup (idempotent). |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/component_health.py.jinja | Registers Insights service health check. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/deps.py.jinja | Adds DI providers for Insights services. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/main.py.jinja | Conditionally registers insights CLI module. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/env.py.jinja | Includes Insights models in Alembic metadata when enabled. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/README.md.jinja | Adds generated-project README section listing included services. |
| aegis/templates/copier-aegis-project/{{ project_slug }}/.env.example.jinja | Adds Insights env var examples in generated .env.example. |
| aegis/core/template_generator.py | Adds Insights parsing + template-context flags for include/source selection. |
| aegis/core/services.py | Registers Insights service spec and migrates required components to ComponentNames constants. |
| aegis/core/service_resolver.py | Validates Insights bracket syntax. |
| aegis/core/post_gen_tasks.py | Adds Insights files to generated-project include/remove mapping and migration retention rules. |
| aegis/core/insights_service_parser.py | Implements Insights bracket syntax parser. |
| aegis/core/copier_manager.py | Passes Insights flags through Copier data mapping and migration decisions. |
| aegis/constants.py | Adds AnswerKeys entries for Insights and per-source toggles. |
| aegis/commands/add_service.py | Supports aegis add-service insights[...] source flag propagation. |
| aegis/cli/callbacks.py | Adds CLI parsing feedback/validation for Insights bracket syntax. |
| README.md | Mentions Insights in top-level project README service list. |
c5b2079 to
1d88c5f
Compare
1d88c5f to
2fab368
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.