aegis-stack 0.13.0__tar.gz → 0.13.2__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.
- aegis_stack-0.13.2/CHANGELOG.md +1760 -0
- aegis_stack-0.13.2/PKG-INFO +319 -0
- aegis_stack-0.13.2/README.md +259 -0
- aegis_stack-0.13.2/aegis/__init__.py +5 -0
- aegis_stack-0.13.2/aegis/commands/add_service.py +653 -0
- aegis_stack-0.13.2/aegis/core/component_files.py +539 -0
- aegis_stack-0.13.2/aegis/core/manual_updater.py +1907 -0
- aegis_stack-0.13.2/aegis/core/migration_generator.py +902 -0
- aegis_stack-0.13.2/aegis/core/post_gen_tasks.py +1306 -0
- aegis_stack-0.13.2/aegis/core/services.py +1340 -0
- aegis_stack-0.13.2/aegis/i18n/locales/de.py +1231 -0
- aegis_stack-0.13.2/aegis/i18n/locales/en.py +1336 -0
- aegis_stack-0.13.2/aegis/i18n/locales/es.py +1235 -0
- aegis_stack-0.13.2/aegis/i18n/locales/fr.py +1236 -0
- aegis_stack-0.13.2/aegis/i18n/locales/ja.py +1216 -0
- aegis_stack-0.13.2/aegis/i18n/locales/ko.py +1181 -0
- aegis_stack-0.13.2/aegis/i18n/locales/ru.py +1198 -0
- aegis_stack-0.13.2/aegis/i18n/locales/zh.py +1068 -0
- aegis_stack-0.13.2/aegis/i18n/locales/zh_hant.py +1068 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/.queryspy-baseline.json +2280 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/record.py.jinja +348 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/migrate_gen.py.jinja +443 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/migrate_owners.py.jinja +128 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/chat.py.jinja +307 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/speech.py.jinja +395 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/status.py.jinja +69 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/documents/pages.py +163 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/documents/router.py +314 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/accounts.py +302 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/analyst.py.jinja +98 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/budgets.py +182 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/categories.py +171 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/changes.py +168 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/connections.py.jinja +346 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/declare.py +273 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/goals.py +420 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/imports.py +207 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/insights.py +62 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/investments.py +334 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/overview.py +158 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/payees.py +282 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/planning.py +154 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/recurring.py +487 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/register.py +379 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/logfire_tracing.py.jinja +207 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/database_init.py.jinja +448 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/schema_recovery.py +216 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/views/legacy_dashboard.py.jinja +79 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/session_health.py +159 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/dialog.py +236 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/system_dashboard.py +272 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/main.py.jinja +237 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/loops.py.jinja +215 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/heartbeat.py +62 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/main.py.jinja +522 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/resilient.py +24 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/macros/form.html +259 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/loops.py +90 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/time.py +28 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/webserver.py +184 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/main.py.jinja +185 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/conversation.py.jinja +447 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/queries.py +270 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/llm_sync_service.py +416 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/queries.py +450 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_usage.py +48 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/usage_recording.py +203 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/deps.py.jinja +25 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/queries.py +201 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/classify.py +437 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/imports.py +224 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/ingest.py +465 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/preview.py +124 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/queries.py +183 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/sync.py +198 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/queries.py +140 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/ai_write_tools.py.jinja +405 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/deps.py.jinja +17 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/deep_dive.py.jinja +280 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/facts.py.jinja +415 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/note.py.jinja +187 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/generate.py +76 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/promote.py +76 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/declare.py +408 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/run.py +273 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/queries.py +186 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/securities.py +426 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/categories.py +431 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/__init__.py +193 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/accounts.py +271 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/categories.py +346 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/merchants.py +246 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/networth.py +288 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/subjects.py +27 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/transactions.py +476 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/transactions.py +450 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/lines.py +236 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/outlook.py +267 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/queries.py +315 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/suggestions.py +309 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/uncovered.py +225 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/queries.py +236 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/queries.py +362 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/streams.py +496 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/curation.py +213 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/queries.py +59 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/seed.py +168 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/categories.py +131 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/deps.py.jinja +27 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/queries.py +37 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.dev.yml.jinja +148 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.yml.jinja +449 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh.jinja +184 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_ai_endpoints.py.jinja +527 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_finance_endpoints.py +3502 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_bootstrap.py +168 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_card_render.py +210 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_scheduler.py +219 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_session_health.py +236 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_webserver_engine.py +326 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_events.py.jinja +421 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/conftest.py.jinja +821 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/core/test_time.py +21 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_llm_pricing_lookup.py +82 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_price_memo.py +153 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_usage_tracking.py.jinja +719 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_conversation_persistence.py.jinja +567 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_category_owner_scope.py +113 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_module_layout.py +746 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_owner_scope_helpers.py +57 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_migration_signatures.py +356 -0
- aegis_stack-0.13.2/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_feedback.py +214 -0
- aegis_stack-0.13.2/pyproject.toml +209 -0
- aegis_stack-0.13.2/tests/cli/test_add_service_auth_regen.py +110 -0
- aegis_stack-0.13.2/tests/cli/test_add_service_is_atomic.py +105 -0
- aegis_stack-0.13.2/tests/cli/test_add_service_migrations.py +568 -0
- aegis_stack-0.13.2/tests/cli/test_cli_init.py +523 -0
- aegis_stack-0.13.2/tests/cli/test_worker_streaming.py +252 -0
- aegis_stack-0.13.2/tests/core/test_app_containers_share_storage.py +85 -0
- aegis_stack-0.13.2/tests/core/test_auto_tracing_scope.py +71 -0
- aegis_stack-0.13.2/tests/core/test_cleared_tables_scope.py +71 -0
- aegis_stack-0.13.2/tests/core/test_compose_healthchecks.py +40 -0
- aegis_stack-0.13.2/tests/core/test_container_limits_fit_the_job.py +74 -0
- aegis_stack-0.13.2/tests/core/test_cross_spec_scope.py +88 -0
- aegis_stack-0.13.2/tests/core/test_dashboard_card_counts_recorded.py +56 -0
- aegis_stack-0.13.2/tests/core/test_entrypoint_render.py +126 -0
- aegis_stack-0.13.2/tests/core/test_link_revision_order.py +56 -0
- aegis_stack-0.13.2/tests/core/test_manual_updater_plugins.py +581 -0
- aegis_stack-0.13.2/tests/core/test_migrate_gen_constraint_kinds.py +95 -0
- aegis_stack-0.13.2/tests/core/test_no_mktemp.py +24 -0
- aegis_stack-0.13.2/tests/fixtures/queryspy/everything.json +2112 -0
- aegis_stack-0.13.2/tests/fixtures/queryspy/finance.json +1434 -0
- aegis_stack-0.13.2/tests/fixtures/queryspy/finance_ai_rbac.json +1722 -0
- aegis_stack-0.13.2/tests/fixtures/queryspy/finance_auth.json +1428 -0
- aegis_stack-0.13.2/tests/fixtures/queryspy-baseline.json +2280 -0
- aegis_stack-0.13.0/CHANGELOG.md +0 -1598
- aegis_stack-0.13.0/PKG-INFO +0 -319
- aegis_stack-0.13.0/README.md +0 -259
- aegis_stack-0.13.0/aegis/__init__.py +0 -5
- aegis_stack-0.13.0/aegis/commands/add_service.py +0 -629
- aegis_stack-0.13.0/aegis/core/component_files.py +0 -518
- aegis_stack-0.13.0/aegis/core/manual_updater.py +0 -1892
- aegis_stack-0.13.0/aegis/core/migration_generator.py +0 -886
- aegis_stack-0.13.0/aegis/core/post_gen_tasks.py +0 -1304
- aegis_stack-0.13.0/aegis/core/services.py +0 -1339
- aegis_stack-0.13.0/aegis/i18n/locales/de.py +0 -1226
- aegis_stack-0.13.0/aegis/i18n/locales/en.py +0 -1331
- aegis_stack-0.13.0/aegis/i18n/locales/es.py +0 -1230
- aegis_stack-0.13.0/aegis/i18n/locales/fr.py +0 -1231
- aegis_stack-0.13.0/aegis/i18n/locales/ja.py +0 -1211
- aegis_stack-0.13.0/aegis/i18n/locales/ko.py +0 -1176
- aegis_stack-0.13.0/aegis/i18n/locales/ru.py +0 -1193
- aegis_stack-0.13.0/aegis/i18n/locales/zh.py +0 -1063
- aegis_stack-0.13.0/aegis/i18n/locales/zh_hant.py +0 -1063
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/.queryspy-baseline.json +0 -2268
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/record.py.jinja +0 -344
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/migrate_gen.py.jinja +0 -483
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/chat.py.jinja +0 -300
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/speech.py.jinja +0 -394
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/status.py.jinja +0 -66
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/documents/pages.py +0 -162
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/documents/router.py +0 -313
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/accounts.py +0 -304
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/analyst.py.jinja +0 -100
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/budgets.py +0 -184
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/categories.py +0 -169
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/changes.py +0 -170
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/connections.py.jinja +0 -348
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/declare.py +0 -275
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/goals.py +0 -422
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/imports.py +0 -209
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/insights.py +0 -64
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/investments.py +0 -336
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/overview.py +0 -160
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/payees.py +0 -284
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/planning.py +0 -156
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/recurring.py +0 -489
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/register.py +0 -381
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/logfire_tracing.py.jinja +0 -204
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/database_init.py.jinja +0 -428
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/schema_recovery.py +0 -188
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/views/legacy_dashboard.py.jinja +0 -75
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/session_health.py +0 -146
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/dialog.py +0 -219
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/system_dashboard.py +0 -298
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/main.py.jinja +0 -238
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/loops.py.jinja +0 -160
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/heartbeat.py +0 -39
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/main.py.jinja +0 -521
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/macros/form.html +0 -255
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/loops.py +0 -84
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/time.py +0 -16
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/webserver.py +0 -175
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/main.py.jinja +0 -185
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/conversation.py.jinja +0 -438
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/queries.py +0 -254
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/llm_sync_service.py +0 -411
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/queries.py +0 -380
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_usage.py +0 -46
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/usage_recording.py +0 -200
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/deps.py.jinja +0 -44
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/queries.py +0 -203
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/classify.py +0 -435
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/imports.py +0 -223
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/ingest.py +0 -459
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/preview.py +0 -123
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/queries.py +0 -183
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/sync.py +0 -199
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/queries.py +0 -141
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/ai_write_tools.py.jinja +0 -403
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/deps.py.jinja +0 -35
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/deep_dive.py.jinja +0 -279
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/facts.py.jinja +0 -414
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/note.py.jinja +0 -186
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/generate.py +0 -75
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/promote.py +0 -75
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/declare.py +0 -408
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/run.py +0 -273
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/queries.py +0 -186
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/securities.py +0 -425
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/categories.py +0 -405
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/__init__.py +0 -193
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/accounts.py +0 -272
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/categories.py +0 -330
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/merchants.py +0 -249
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/networth.py +0 -290
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/subjects.py +0 -28
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/transactions.py +0 -483
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/transactions.py +0 -449
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/lines.py +0 -235
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/outlook.py +0 -267
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/queries.py +0 -318
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/suggestions.py +0 -301
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/uncovered.py +0 -225
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/queries.py +0 -241
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/queries.py +0 -359
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/streams.py +0 -496
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/curation.py +0 -212
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/queries.py +0 -56
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/seed.py +0 -168
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/categories.py +0 -123
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/queries.py +0 -11
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.dev.yml.jinja +0 -146
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.yml.jinja +0 -452
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh.jinja +0 -175
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_ai_endpoints.py.jinja +0 -446
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_finance_endpoints.py +0 -3473
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_bootstrap.py +0 -155
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_card_render.py +0 -210
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_scheduler.py +0 -130
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_session_health.py +0 -183
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_webserver_engine.py +0 -281
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_events.py.jinja +0 -310
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/conftest.py.jinja +0 -806
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_usage_tracking.py.jinja +0 -678
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_conversation_persistence.py.jinja +0 -504
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_module_layout.py +0 -746
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_migration_signatures.py +0 -315
- aegis_stack-0.13.0/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_feedback.py +0 -196
- aegis_stack-0.13.0/pyproject.toml +0 -209
- aegis_stack-0.13.0/tests/cli/test_add_service_auth_regen.py +0 -81
- aegis_stack-0.13.0/tests/cli/test_add_service_migrations.py +0 -540
- aegis_stack-0.13.0/tests/cli/test_cli_init.py +0 -523
- aegis_stack-0.13.0/tests/cli/test_worker_streaming.py +0 -248
- aegis_stack-0.13.0/tests/core/test_entrypoint_render.py +0 -91
- aegis_stack-0.13.0/tests/core/test_manual_updater_plugins.py +0 -581
- aegis_stack-0.13.0/tests/fixtures/queryspy/everything.json +0 -2106
- aegis_stack-0.13.0/tests/fixtures/queryspy/finance.json +0 -1416
- aegis_stack-0.13.0/tests/fixtures/queryspy/finance_ai_rbac.json +0 -1716
- aegis_stack-0.13.0/tests/fixtures/queryspy/finance_auth.json +0 -1416
- aegis_stack-0.13.0/tests/fixtures/queryspy-baseline.json +0 -2268
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/.gitignore +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/LICENSE +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/__main__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/blueprints/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/blueprints/finance.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/blueprints/spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/brand.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/build_plan.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/callbacks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/guided.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/guided_blueprints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/guided_chrome.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/interactive.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/validation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/cli/validators.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/add.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/blueprints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/components.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/deploy.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/ingress.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/init.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/plugins.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/remove.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/remove_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/services.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/update.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/commands/version.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/config/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/config/defaults.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/ai_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/auth_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/behavior_changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/build_reporter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/component_utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/components.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/copier_manager.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/copier_updater.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/dependency_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/file_manifest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/insights_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/migration_spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/option_spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/compat.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/composer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/discovery.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/naming.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/scaffold.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/plugins/template_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/project_map.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/render_diff.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/service_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/template_cleanup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/template_generator.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/verbosity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/core/version_compatibility.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/i18n/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/i18n/locales/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/i18n/registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/add-api-endpoint/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/add-background-job/SKILL.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/add-cli-command/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/add-model-and-migration/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/add-scheduled-job/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/change-the-stack/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.claude/skills/protect-an-endpoint/SKILL.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.copier-answers.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.dockerignore +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.env.deploy.example.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.env.example.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.env.ports +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.github/workflows/ci.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.github/workflows/security.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.gitignore.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.pre-commit-config.yaml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/.python-version.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/CLAUDE.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/Dockerfile.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/Makefile.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/README.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/alembic.ini.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/env.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/script.py.mako +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/versions/.gitkeep +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/_i18n_click.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/agents.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/analytics.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/chat.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/providers.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/session.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/shared.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/speech.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/streaming.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai/voice.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai_rendering.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/api_load_test.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/api_load_test_auth.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/api_load_test_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/api_load_test_store.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/auth.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/bench.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/bench_drivers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/blog.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/blog_posts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/blog_shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/blog_tags.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/blog_transfer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/chat_completer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/comms.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/dns.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/docs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/finance.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/finance_options.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/finance_snaptrade.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/health_display.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/health_messages.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/insights.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/llm.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/llm_rendering.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/load_test.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/load_test_display.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/main.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/marko_table_renderer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/marko_terminal_renderer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/migrate_drift.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/migrate_fix.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/payment.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/payment_e2e.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/payment_views.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/collections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/documents.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/model.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/search.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/rag/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/slash_commands.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/status_line.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/tasks.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/theme.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/analytics.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/memory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/admin.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/oauth.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/sessions.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/blog/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/blog/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/comms/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/comms/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/deps.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/documents/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/finance/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/insights.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/llm/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/llm/routes.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/load_test_api.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/metrics.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/orgs/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/orgs/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/pastebox.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/payment/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/payment/pages.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/payment/router.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/rag/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/rag/routes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/routing.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/scheduler.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/task_history.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/traffic.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/voice/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/voice/router.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/worker.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/worker_dramatiq.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/worker_taskiq.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/hooks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/main.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/cors.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/paste_capture.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/performance.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/session.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/traffic.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/security/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/security/rate_limit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/cleanup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/finance_webhook_tunnel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/payment_webhook_forwarder.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/agent_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/component_health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/finance_webhook_tunnel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/health_backend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/health_components.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/health_metadata.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/job_store.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/llm_active_model.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/llm_catalog.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/migration_signatures.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/payment_webhook_forwarder.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/auth/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/auth/login_view.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/auth/register_view.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/auth/session.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/action_menu.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/auth/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/auth/auth_shell.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/auth/branding_panel.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/auth/oauth_button.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/brand_mark.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/busy_bar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/buttons.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/calendar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/attachments_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/components.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/display_rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/history_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/message.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/model_picker.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/chat/stream.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/data_table/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/data_table/cells.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/data_table/parts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/data_table/table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/debounce.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/dropdown.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/expand_arrow.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/expandable_data_table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/actions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/date.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/dropdown.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/secret.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/form_fields/text.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/inputs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/labeled_divider.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/loading_overlay.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/markdown.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/method_badge.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/pickers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/pickers/field.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/pickers/search.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/pickers/triggers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/provider_icon.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/record_detail.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/section_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/service_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/severity_filter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/snack_bar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/status_dot.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/surface_panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/switch.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/tabs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/tag.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/tech_badge.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/text.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/uploads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/views/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/views/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/routes.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/core/routing.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/activity_feed/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/activity_feed/feed.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/activity_feed/grouping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/activity_feed/rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/card_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/ai_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/auth_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/blog_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_container.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_factory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_metadata.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils/layout.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils/modals.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils/status.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils/timing.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/comms_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/database_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/documents_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/finance_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/ingress_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/insights_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/observability_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/ollama_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/payment_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/redis_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/scheduler_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/server_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/services_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/storage_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/worker_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/diagram_canvas.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/diagram_node.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/diagram_view.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/diagram/layout.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modal_registry.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/agents_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/activity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/sentiment.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/shaping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/stats.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_analytics_tab/tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ai_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/auth_modal.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/auth_orgs_tab.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/auth_sessions_tab.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/auth_users_tab.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/lifecycle_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/performance_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/routes_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/backend_modal/traffic_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/base_detail_popup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/base_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/base_popup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/editor_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/pickers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/posts_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/blog_modal/tags_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/config_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/email_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/comms_modal/twilio_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/migrations.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/overview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/schema.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/database_modal/settings.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/documents_actions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/documents_activity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/documents_detail_pane.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/documents_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/documents_pages.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_attention_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_categories_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/account_header.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/accounts_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_cards/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_cards/budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_cards/goals.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/envelopes_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/goal_editor.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/goals_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/header.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/lines_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/one_time.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/budget_panel/suggestions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/connect.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/connections_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/curation_shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/filters.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/import_preview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/import_summary.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/no_payee_assign.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/no_payee_panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/overview_drilldowns.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/overview_load.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/pending_changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/review_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/sidebar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/stat_details.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/trades_view.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/bulk.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/declare.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/declare_followup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/imports_flow.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/imports_target.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/load.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/manage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/property_details.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/secured_by.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_panel/splits_flow.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/transactions_view.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/uncategorized_cells.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/uncategorized_data.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/uncategorized_panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_modal/uncategorized_staging.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_payees_dialogs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_payees_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/actions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/dialogs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/editor.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/projection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_recurring_tab/tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/finance_settings_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/frontend_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/history_table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ingress_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/charts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/docs_data.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/docs_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/github_traffic_data.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/github_traffic_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/insight_card.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/overview_sections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/pypi_data.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/pypi_sections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/pypi_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/reddit_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/settings_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/stars_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/insights_modal/traffic_tables.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/featured.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/search.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/sections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/llm_catalog_tab/tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/load_tests_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/memory_modules_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/cards.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/chart_bar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/chart_line.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/chart_pie.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/chart_primitives.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/lifecycle.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/modal_sections/sections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/configuration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/exceptions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/overview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/observability_modal/spans.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/activity_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/cells.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/columns.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/model_actions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/models_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/ollama_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/actions_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/disputes_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/overview_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/settings_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/subscriptions_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/payment_modal/transactions_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/rag_tab/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/rag_tab/collections_table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/rag_tab/panels.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/rag_tab/search_preview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/rag_tab/tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/connections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/dialog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/overview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/redis_modal/slow_queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/scheduler_history_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/scheduler_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/storage_modal.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/task_history_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/user_facts_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/controls.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/recorder.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/recorder_agent.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/recorder_capture.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/recorder_state.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/sections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/voice_settings/tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/lifecycle_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/overview_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/queue_health_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/modals/worker_modal/queue_rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/status_overview.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/body.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/cards.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/chrome.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/overseer/refresh.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/projects/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/projects/active_project.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/projects/project_form_view.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/projects/project_list_view.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/projects/project_switcher.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/state/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/state/finance_view_state.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/state/session_state.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/styles.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/theme.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/theme_manager.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/storage/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/storage/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/storage/s3.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/assets.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/build.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/build_watch.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/filters.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/main.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/ranges.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/rendering.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/routes/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/routes/pages.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/routes/partials/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/css/app.css +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/favicon.svg +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/input.css +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/js/app.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/js/auth.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/js/charts.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/static/js/theme.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/base.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/auth_macros.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/landing/features.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/landing/footer.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/landing/hero.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/landing/navbar.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/macros/feedback.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/macros/layout.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/components/macros/table.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/layouts/fragment.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/layouts/page.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/_layout.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/forgot_password.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/login.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/register.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/reset_password.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/verify_email.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/auth/verify_pending.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/web_frontend/templates/pages/landing.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/CLAUDE.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/broker_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/broker_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/constants.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/heartbeat.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/middleware_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/middleware_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/pools.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/pools_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/pools_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queue_discovery.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/load_test.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/load_test_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/load_test_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/media.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/system.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/system_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/system_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/task_history/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/task_history/prune.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/task_history/read.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/task_history/record.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/task_history/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/document_tasks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/load_tasks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/simple_system_tasks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/system_tasks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/audit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/cache.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/chat_transcript.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/client_session.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/concurrency.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/config.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/db.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/encryption.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/graphql.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/log.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/model_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/pastebox.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/route_auth.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/security.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/sse.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/storage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/scheduler.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/worker.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/de.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/en.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/es.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/fr.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/ja.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/ko.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/ru.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/zh.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/locales/zh_hant.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/i18n/registry.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/conversation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/org.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/refresh_token.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/user.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/py.typed +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/agent_loader.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/agent_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/attachments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/builtin_fetchers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/agent.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/history.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/chat_kit/streaming.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/fetchers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/health_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/health_extract.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/llm_catalog_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/memory_modules.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/module_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/prompts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/rag_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/rag_stats_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/readings.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/self_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/sentiment.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/titles.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/tool_telemetry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/tools.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/usage_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/chat/user_memory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/active_model.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/agents.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/clients/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/clients/litellm_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/clients/openrouter_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/lab_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/mappers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/mappers/llm_mapper.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/results.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/upserts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/etl/vendor_metadata.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/llm_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/model_factory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/ollama.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/ollama_activity.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/pollinations_provider.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/provider_management.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/providers.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/llm/public_provider.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/stt/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/stt/config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/stt/providers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/stt/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/tts/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/tts/config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/tts/providers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/domains/voice/tts/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/agent_fixtures.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_catalog/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_catalog/deployments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_catalog/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_catalog/prices.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_catalog/vendors.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/fixtures/llm_fixtures.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/jobs.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/agent.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/agent_tool.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/agent_tool_call.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/agent_user_memory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/memory_module.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/agents/tool.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/large_language_model.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_active_selection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_deployment.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_modality.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_org.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_org_role.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/llm/llm_price.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/sentiment.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models/voice_usage.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/schemas.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/base.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/chat.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/contexts.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/prompt.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/status.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/streaming.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/trace.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/usage.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service/voice.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/deps.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/hooks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/invites.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/jobs.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/memberships.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/orgs.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/refresh_tokens.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_deletion.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_passwords.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_service_base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_verification.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/users.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/middleware_inspector.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/route_inspector.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/deps.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/schemas.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/serialization.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/slugs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/summary.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/tags.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/blog/transfer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/calls.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/email.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/sms.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/twilio.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/comms/webhooks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/dispatch.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/ocr.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/pages.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/pdf.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/domains/extraction/vision.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/documents/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/csv_profiles.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/ofx.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/plan.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/importers/qif.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/common.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_mapping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/lifecycle.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/plaid_sync/transactions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_mapping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_sync/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_sync/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_sync/investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_sync/lifecycle.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/connections/snaptrade_sync/sync.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/plaid.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/adapters/providers/snaptrade.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/ai_tools.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/activity.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/context.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/prompts.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/report.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/sections.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/seeds.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/analyst/shared.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/commitments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/balances.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/recurring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/insights/rules/spending.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/cadence.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/purge.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/detect/streams.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/recurring/resolve.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/adjustments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/categories.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/detect.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/pairing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/payment_history.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/detection/transfers/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/activity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/loader.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/investments/optum.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/merchant_icon.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/merchants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/networth/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/networth/reads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/networth/snapshots.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/payee_aliases.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/properties.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/filters.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/queries/splits.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/series_parsing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/splits.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/subjects.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/ledger/valuations.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/allocation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/details.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/summary.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/budgets/trims.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/envelopes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/goals/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/goals/actions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/goals/meta.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/goals/reads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/insights.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/amounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/forecast.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/matching.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/membership.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/planning/recurring/schedule.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/display.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/executors.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/queue.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/domains/writes/structure.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/jobs.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/analyst.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/base.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/categorization.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/connections.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/imports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/planning.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/reference.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/models/transactions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/budgets.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/categorization.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/goals.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/imports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/properties.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/providers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/recurring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/schemas/transactions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_household.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_plan.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/clear.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/curate.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/shared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/demo_seed/write.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/seeds/seed.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/accounts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/budgets.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/goals.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/imports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/insights.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/merchants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/networth.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/recurring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/service/transactions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/finance/utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/base.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/collection.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/github_events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/github_stars.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/github_traffic.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/plausible.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/pypi.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/adapters/collectors/reddit.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/deps.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/goal_catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/goals.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/metrics.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/domains/projects.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/jobs.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/queries/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/queries/events.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/queries/goals.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/queries/metrics.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/queries/projects.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas/events.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas/goals.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas/projects.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/schemas/views.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/seed.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/docs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/events.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/github.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/overview.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/pypi.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/reddit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/insights/views/stars.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/api/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/api/discovery.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/api/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/api/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/common/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/common/analysis.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/common/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/common/storage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/advice.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/analysis.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/service_dramatiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test/worker/service_taskiq.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test_workloads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/adapters/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/adapters/porkbun.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/adapters/resend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/audit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/email_setup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/protocols.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ops/types.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/constants.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/demo_seed.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/deps.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/disputes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_helpers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/_layout.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/_macros.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/invoice_paid.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/payment_failed.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/refund_processed.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/subscription_canceled.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/subscription_started.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/subscription_updated.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/email_templates/trial_ending_soon.html +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/providers/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/providers/base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/providers/stripe.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/refunds.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/reporting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/schemas.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/seed.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/service_base.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/stripe_events.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/subscriptions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/webhooks_billing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/payment/webhooks_subscription.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/chunking.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/ids.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/loaders.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/models/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/models/knowledge.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/shaping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/rag/vectorstore.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/execution_log.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/orphans.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/scheduled_task_manager.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/task_monitor.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/trigger.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/activity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/alerts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/backup.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/env_config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_cache.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_db.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_db_postgres.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_db_sqlite.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_ingress.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_observability.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_ollama.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_probes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_worker.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_worker_dramatiq.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_worker_rules.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health_worker_taskiq.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/job_relay.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/job_store.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/ui.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57223!aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57224!aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57225!aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57533!aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57534!aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57538!aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57897!aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57898!aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57904!aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58315!aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58316!aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58324!aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58837!aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58838!aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58849!aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-dark.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-square-backup.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/icons/github.svg +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/icons/google.svg +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/assets/overseer.png +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.prod.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/api.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/api-load-testing.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/scheduler.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/development.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/health.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/javascripts/mermaid-config.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/ai/code-mode.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/ai/research-agent.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/comms/api.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/comms/cli.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/comms/index.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/services/comms/setup.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/docs/stylesheets/mermaid.css +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/mkdocs.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/package.json.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/pyproject.toml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/dev_tasks.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/gen_docs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/resolve_ports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/server-setup.sh.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tailwind.config.js +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/_jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/_pdf.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/_sqlite.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/_test_org.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_auth_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_blog_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_comms_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_document_pages.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_documents_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_finance_analyst_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_finance_split_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_health_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_insights_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_insights_projects_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_jobs_api.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_load_test_api_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_metrics_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_oauth_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_org_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_pastebox.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_payment_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_scheduler_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_voice_endpoints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_worker_endpoints.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_agents_cli.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_ai_cli_registration.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_ai_rendering.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_ai_streaming_gate.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_api_load_test_cli.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_bench_cli.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_bench_parsing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_chat_completer.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_conversation_memory.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_docs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_finance_cli.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_llm_cli.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_payment_trigger.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_rag_cli_registration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_slash_commands.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_status_line.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/_fakes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/_payloads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/_tree.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_account_filter_allows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_ai_analytics_utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_base_popup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_bills_default_sort.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_bills_pause_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_budget_grid.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_budget_outlook.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_budget_panel_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_calendar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_card_modal_keys.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_category_picker_create.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_chart_axis.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_chat_components.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_chat_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_chat_panel_revisit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_chat_stream.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_clearable_field.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_copyable_markdown.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_card_reuse.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_surface_reuse.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dashboard_update_component.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_data_table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_debounce.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dialog_handle.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_diverging_line.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_documents_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_dropdown_geometry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_finance_balances.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_finance_connect_menu.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_finance_panel_lifecycle.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_finance_splits_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_finance_view_state.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_follow_job.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_form_date_field.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_global_account_filter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_goals_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_import_preview_body.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_import_upload_wait.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_loading_overlay.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_ollama_model_table.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_payees_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_pending_changes_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_plugin_display.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_projection_layout.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_property_details_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_provider_icon.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_register_columns.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_register_header.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_register_rows.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_row_matches.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_session_restart.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_session_resume.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_stat_details.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_status_dot.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_surface_panel.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_text_selection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_transaction_tags_ui.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_uploads.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/frontend/test_user_facts_section.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_backend_component_health.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_frontend_auth_session.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_frontend_base_view.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_frontend_routing.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_frontend_session_state.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_frontend_snack_bar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_storage_s3.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_web_frontend.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_webserver_reload.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_broker.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_entrypoint.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_heartbeat.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_worker_registry.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/core/test_graphql_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/core/test_sqlite_pragmas.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/_collector_fixtures.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/_finance_factories.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_agent.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_agent_hydration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_code_mode.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_context_streaming.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_history.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_registry_tools.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/chat_kit/test_save_memory_loop.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/conftest.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/test_lab_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/test_litellm_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/test_llm_mapper.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/test_llm_sync_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/etl/test_openrouter_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_active_model.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_agent_attribution.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_agent_loader.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_agent_models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_agent_registry.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_builtin_fetchers.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_chat_attachment_persistence.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_config_validation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_conversation_title.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_fetchers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_langchain_turns.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_llm_catalog_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_llm_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_memory_modules.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_model_id_display.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_module_context.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_ollama_activity.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_one_engine.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_pollinations_provider.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_prompts.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_provider_management.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_provider_registry.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_provider_resolution.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_providers.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_public_provider.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_rag_stats_context.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_self_context.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_sentiment.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_tool_call_ledger.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_tool_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_tool_trace.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_user_memory.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_stt_config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_stt_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_stt_providers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_stt_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_tts_config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_tts_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_tts_providers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/voice/test_tts_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/test_call.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/test_config_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/test_email.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/comms/test_sms.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/conftest.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/optum_hsa_sample.tsv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_amex.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_chase.qfx +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_chase_cc.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_chase_checking.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_quicken.qif +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_quicken_all.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_quicken_all_scheduled.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_quicken_mac.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/finance/fixtures/sample_quicken_register_single.csv +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/test_chunking.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/test_knowledge_models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/test_knowledge_scoping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/test_loaders.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/rag/test_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_api_load_test_discovery.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_api_load_test_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_api_load_test_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_auth_integration.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_blog_list_queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_blog_serialization.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_blog_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_chat_attachments.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_chat_readings.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_github_events.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_github_stars.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_github_traffic.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_plausible.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_pypi.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_reddit.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_collector_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_component_integration.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_document_extraction.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_documents_module_layout.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_documents_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_extraction_dispatch.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_ai_tools.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_analyst.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_analyst_run.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_asof_today.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_attach.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_bill_account.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_bill_editing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_budget_carry_forward.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_budget_suggestions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_cadences.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_categorize.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_clock.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_currency_cache.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_declare_recurring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_delete.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_demo_seed.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_detection_gates.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_envelopes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_goals.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_import.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_insights.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_investment_import.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_investments.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_one_time_bills.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_pause.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_payee_aliases.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_payee_groups.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_payee_naming.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_payees.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_pending_changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_plaid.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_projection_filter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_projection_horizon.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_projection_overdue.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_properties.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_query_batching.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_quicken_curation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_reconcile.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_recurring_curation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_reference_seed.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_schedule.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_search.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_series_parsing.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_snaptrade.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_splits.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_stat_details_filter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_stream_amount.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_stream_regimes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_subjects.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_tags.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_transfers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_valuation_history.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_finance_webhook_tunnel.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_goal_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_health_logic.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_health_status_cache.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_history_budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_insight_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_insights_collectors.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_job_store.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_common.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_merchant_icon.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_metrics_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_middleware_inspector.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_oauth_user_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_org_integration.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_payment_catalog.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_payment_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_payment_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_payment_webhook_forwarder.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_performance_middleware.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_performance_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_project_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_query_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_queue_status.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_refresh_service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_scheduled_task_manager.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_scheduler_execution_log.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_scheduler_executions_read.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_service_layout.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_system_jobs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_system_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_traffic_monitor.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_traffic_tab.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_user_lookup_queries.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_wal_backup.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_worker_health_registration.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_api_base_url.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_app_owned_sessions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_bulk_response.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_cache.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_cache_integration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_client.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_concurrency.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_core.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_dev_tasks_engine.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_docs_auth.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_encryption.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_factories_demo.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_formatting.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_host_port_resolution.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_i18n.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_model_registry.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_resolve_ports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_storage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/dom.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_filters.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_fragment_layout.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_helpers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_htmx_config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_layout_macros.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_table.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/tests/web/test_theme.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/traefik/traefik.dev.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/copier-aegis-project/{{ project_slug }}/traefik/traefik.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/.github/workflows/test.yml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/.gitignore.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/.pre-commit-config.yaml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/Makefile.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/README.md.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/pyproject.toml.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/src/__PLUGIN_PKG__/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/src/__PLUGIN_PKG__/plugin.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/src/__PLUGIN_PKG__/templates/__PROJECT_SLUG__/app/services/__PLUGIN_NAME__/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/tests/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/aegis/templates/plugin_scaffold/tests/test_plugin.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/CLAUDE.md +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_ingress_populates_stubs.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_plugin_resolver_integration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_plugin_shared_regen.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_service_checks_the_version.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_service_documents.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_service_experimental.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_service_importable.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_service_preserves_state.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_worker.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_add_worker_backend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_ai_backend_utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_ai_configuration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_auth_service_generation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_blueprints.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_brand_palette_parity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_cli_basic.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_component_dependencies.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_database_config.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_database_runtime.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_database_runtime_postgres.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_deploy_helpers.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_error_handling.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_generated_skills.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_generated_skills_footprint.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_generated_skills_update.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_guided.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_interactive_project_selection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_interactive_scheduler.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_interactive_service_selection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_686_integration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_715_shared_file_divergence.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_715_three_way_merge.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_814_add_parity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_870_dockerfile_regen.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_issue_870_warn_only_regeneration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_migration_id_collisions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_migrations_match_models.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_model_imports.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_plugin_conformance.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_plugins_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_plugins_create_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_plugins_update_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_post_gen_worker_cleanup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_python_version.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_remove_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_replay_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_resolve_plugin.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_revision_signatures.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_scheduler_backend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_scheduler_persistence.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_scheduler_postgres_migrations.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_service_callbacks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_services_cli.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_stack_generation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_stack_validation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_update_command.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_update_feature_detection.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/cli/test_worker_backend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/config/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/config/test_defaults.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_ai_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_alembic_env_configure.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_alembic_env_utc_datetime.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_answer_derivation_declared.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_auth_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_behavior_changes.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_blog_template_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_build_id_cache_namespace.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_cache_health_probe.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_ci_covers_slow_tests.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_claude_md_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_combination_coverage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_component_files.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_component_ownership.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_component_utils.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_compose_engine_passthrough.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_constants_usage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_copier_answers_placement.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_copier_updater.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_country_labels.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_dashboard_metadata_contract.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_db_template_async_url.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_dev_deps_one_mechanism.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_docs_port.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_file_manifest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_file_mapping_derivation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_generate_revisions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_git_identity_isolation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_htmx_component.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_htmx_template_render.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_i18n.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_ingress_component.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_insights_service_parser.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_issue_686_reconciliation.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_manual_updater_service.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_markdown_filter.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_middleware_handles_pathsend.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_migrate_fix.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_migration_generator.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_migration_spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_migrations_stop_where_they_fail.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_mixin_declarations.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_model_registry_is_the_only_registrar.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_module_size_budget.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_mount_guards.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_no_inert_questions.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_not_null_backfill.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_observability_oom_renders.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_option_spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_pairs_well_with.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_cli_registration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_compat.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_discovery.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_naming.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_render_parity.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_scaffold.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_template_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_plugin_wiring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_post_gen_tasks.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_post_render_hook.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_project_map.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_provider_extra_mapping.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_queryspy_adoption.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_readme_wiring.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_registry_driven_flags.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_render_diff.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_render_diff_merge_failure.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_render_diff_policy.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_render_diff_real_templates.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_render_diff_transition_coverage.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_service_resolver.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_services.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_shared_scope_completeness.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_signature_of_a_foreign_key.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_spec_docs_paths.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_sqlmodel_pin.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_storage_root_reaches_every_container.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_sync_result_is_reported.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_template_cleanup.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_template_generator.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_template_tree_hygiene.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_tool_call_ledger.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_version_compatibility.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/core/test_zuvloop_version_gate.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/pyproject.toml +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/templates/{{ project_slug }}/app/services/test_plugin/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/templates/{{ project_slug }}/app/services/test_plugin/py.typed +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/templates/{{ project_slug }}/app/services/test_plugin/seeds/starter.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_plugin_test/src/aegis_plugin_test/templates/{{ project_slug }}/app/services/test_plugin/service.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/pyproject.toml +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/spec.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/cli/conformance.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/__init__.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/api.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/dispatch.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/health.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/models.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/aegis_stack_conformance/src/aegis_stack_conformance/templates/{{ project_slug }}/app/services/conformance/settings.py.jinja +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/ai_langchain.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/ai_ollama.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/ai_service.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/auth_basic.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/auth_org.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/blog.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/documents_auth.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/documents_worker.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/htmx_auth.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/htmx_with_components.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/insights.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/insights_per_user.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/fixtures/queryspy/payment.json +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/integration/__init__.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/integration/conftest.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/integration/test_update_integration.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/integration/test_upgrade_matrix.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/scripts/test_worker_addition_workflow.sh +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/test_copier_redis_conditional.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/test_runtime_dependencies.py +0 -0
- {aegis_stack-0.13.0 → aegis_stack-0.13.2}/tests/test_serve_port_autodiscovery.py +0 -0
|
@@ -0,0 +1,1760 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
## [0.13.2] - 2026-09-25
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **The worker modal's live feed connects when the modal opens.** Every
|
|
15
|
+
dashboard tab used to open `/events/worker/stream` and start a 10 Hz
|
|
16
|
+
flush loop at page load, then discard every event until someone opened
|
|
17
|
+
the worker modal - one long-lived stream and Redis subscription per tab.
|
|
18
|
+
Both now start on show and stop on hide; the stream's per-connect
|
|
19
|
+
baseline means the counts are the same. Its log lines carry the page's
|
|
20
|
+
`session_id`, so several tabs no longer read as one listener started
|
|
21
|
+
twice.
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
24
|
+
|
|
25
|
+
- **Startup no longer stamps past a migration that never ran.** Adoption
|
|
26
|
+
stamped every pending revision whose objects already existed, so
|
|
27
|
+
APScheduler's job table (built by the scheduler on first boot) proved
|
|
28
|
+
the scheduler revision ahead of AI revisions that had not run, and the
|
|
29
|
+
version moved over their DDL. Adoption now stops at the first revision
|
|
30
|
+
it cannot prove, and startup upgrades one revision at a time, adopting
|
|
31
|
+
again after each, so a revision is adopted only once the ones before it
|
|
32
|
+
exist. Order comes from the revision chain, not string comparison.
|
|
33
|
+
- **Only migrations that touch the LLM catalog empty it.** Every AI
|
|
34
|
+
revision cleared the catalog tables before its DDL, so any AI change
|
|
35
|
+
(a new voice table) wiped the synced catalog until the next sync. The
|
|
36
|
+
clear is now emitted only when a revision's upgrade operates on those
|
|
37
|
+
tables.
|
|
38
|
+
- **The scheduler survives a failed job-store write.** APScheduler 3.x
|
|
39
|
+
retries loading due jobs but not the write-back after a run; a failed
|
|
40
|
+
`update_job` (SQLite "database is locked") escaped before the timer was
|
|
41
|
+
re-armed, so the scheduler never woke again while its process stayed up
|
|
42
|
+
and Docker never restarted it. A failed pass now logs and retries after
|
|
43
|
+
`jobstore_retry_interval`.
|
|
44
|
+
- **The scheduler shares the object store again.** Its own `volumes:` list
|
|
45
|
+
replaced the shared one (YAML merge keys never join lists), so it lost
|
|
46
|
+
`storage-data` and every scheduled job ran against a private, empty
|
|
47
|
+
`/data/storage`. The backup mount moved onto the shared block, and a test
|
|
48
|
+
holds every app container to the store and every mounted volume to a
|
|
49
|
+
declaration.
|
|
50
|
+
- **The scheduler healthcheck runs the heartbeat module.** The beacon path
|
|
51
|
+
and the 60-second window lived in the module and again in an inline
|
|
52
|
+
compose string; `python -m app.components.scheduler.heartbeat` now
|
|
53
|
+
decides. The dev asset watcher no longer inherits an HTTP healthcheck for
|
|
54
|
+
a server it does not run, so it stops reading unhealthy.
|
|
55
|
+
- **AI chat errors reach the client as what they are, and no further.**
|
|
56
|
+
`ProviderError` and `ConversationError` subclass `AIServiceError`, and the
|
|
57
|
+
handlers caught the base first, so both surfaced as a 503. The chat
|
|
58
|
+
endpoint, its stream, voice chat and `/ai/health` also sent unexpected
|
|
59
|
+
exceptions' text to the client; it is logged instead. The `ai record`
|
|
60
|
+
command creates its speech file rather than naming one with
|
|
61
|
+
`tempfile.mktemp`.
|
|
62
|
+
|
|
63
|
+
- **A failed `add-service` leaves the project as it found it.** A failure
|
|
64
|
+
after the first file was written - migration generation, say - left the
|
|
65
|
+
service's code in the tree, the answers file saying it was enabled, and
|
|
66
|
+
no schema: the project would not start, and a retry stopped at "already
|
|
67
|
+
enabled". The command now requires a clean git tree, marks a backup
|
|
68
|
+
point, and resets to it on any failure, so it can simply be run again.
|
|
69
|
+
- **Adding a service re-renders what other installed services branch on
|
|
70
|
+
it.** A service's files were copied once and never rendered again, so a
|
|
71
|
+
template that depends on another service's flag kept its first render:
|
|
72
|
+
`add-service auth` left the scheduler, worker, blog, comms, insights, AI
|
|
73
|
+
and htmx routers without the auth guards they render once auth exists,
|
|
74
|
+
and finance and payment models without their owner keys. Those files now
|
|
75
|
+
go through the same three-way merge as shared files, and only the ones
|
|
76
|
+
whose output changes are touched.
|
|
77
|
+
- **Adding auth to an existing finance project creates the owner keys.**
|
|
78
|
+
Generated together, finance's owner columns reference `user`; added
|
|
79
|
+
later, none did, and nothing said so. Beyond the models not re-rendering,
|
|
80
|
+
the generator dropped a new key whose column an index already covered,
|
|
81
|
+
and routed keys on existing tables to whichever revision ran first. The
|
|
82
|
+
keys now land in the finance/auth link revision, after the sentinel row
|
|
83
|
+
they point at, so Postgres accepts rows owned by it; both paths produce
|
|
84
|
+
the same schema.
|
|
85
|
+
|
|
86
|
+
- **A closed dashboard tab stops polling within a minute, not an hour.**
|
|
87
|
+
Page loops check whether their tab is still open, and the check read
|
|
88
|
+
Flet's connection object, which Flet keeps through a disconnect and drops
|
|
89
|
+
only when the session is reaped, an hour later by default. So the
|
|
90
|
+
30-second grace never started: a closed tab kept refreshing the dashboard,
|
|
91
|
+
flushing the worker modal and listening for worker events for that hour,
|
|
92
|
+
and held a granian worker open across a reload. The check now reads
|
|
93
|
+
`page.expires_at`, the state Flet itself sets on disconnect and clears on
|
|
94
|
+
reconnect.
|
|
95
|
+
|
|
96
|
+
## [0.13.1] - 2026-09-23
|
|
97
|
+
|
|
98
|
+
### Changed
|
|
99
|
+
|
|
100
|
+
- **Owner scoping lives in one place.** `get_owner_user_id` was defined
|
|
101
|
+
twice, identically, in the finance and documents services; it is now one
|
|
102
|
+
dependency in `app/services/shared/deps.py`. The 47 hand-written
|
|
103
|
+
"filter by owner unless standalone" branches and 31 "store a standalone
|
|
104
|
+
owner as 0" conversions are two helpers beside `owner_clause` in
|
|
105
|
+
`app/services/shared/queries.py`. Behaviour is unchanged.
|
|
106
|
+
|
|
107
|
+
### Fixed
|
|
108
|
+
|
|
109
|
+
- **`make serve` in an htmx project no longer strips the developer's own
|
|
110
|
+
virtualenv.** The entrypoint decided it was in a container by
|
|
111
|
+
`$DOCKER_CONTAINER`, which the dev `build-static-watcher` never set, so
|
|
112
|
+
the watcher ran `uv` against the host's `.venv` through the bind mount:
|
|
113
|
+
a Linux interpreter went in, and the host's next `uv` rebuilt the venv
|
|
114
|
+
without pytest, ruff or ty. A container is now recognised by the file
|
|
115
|
+
its runtime writes into every one (`/.dockerenv`, podman's
|
|
116
|
+
`/run/.containerenv`); `DOCKER_CONTAINER` still forces it.
|
|
117
|
+
- **On Postgres, chat turns and usage rows are stored again.** asyncpg
|
|
118
|
+
rejects a timezone-aware value for a `timestamp without time zone`
|
|
119
|
+
column: a conversation's first turn failed to persist, and
|
|
120
|
+
`record_usage` swallowed the same error, so the usage ledger recorded
|
|
121
|
+
nothing, costs read zero and the per-user daily budget never tripped.
|
|
122
|
+
Both write naive UTC now, through `utcnow()` and a new `as_stored()`.
|
|
123
|
+
Saving a thread is one membership query instead of one select per
|
|
124
|
+
message.
|
|
125
|
+
- **Calls routed through a provider are priced.** A model reported as
|
|
126
|
+
`deepseek-v4.1-flash` never matched the catalog's
|
|
127
|
+
`openrouter/deepseek/deepseek-v4.1-flash`, so it cost $0.00. The lookup
|
|
128
|
+
now matches the name exactly or as a whole trailing segment, and the
|
|
129
|
+
price is cached in the shared cache instead of queried on every turn;
|
|
130
|
+
the catalog sync clears it.
|
|
131
|
+
- **In a stack with auth, a finance category someone creates is theirs.**
|
|
132
|
+
The category table was designed per owner (a NULL owner is a shared
|
|
133
|
+
seed), but every writer created shared rows and every reader returned
|
|
134
|
+
all of them, so one user's typed or imported categories appeared in
|
|
135
|
+
every other user's picker. Categories and aliases a user creates now
|
|
136
|
+
carry their owner; pickers, alias resolution, budget suggestions and goal
|
|
137
|
+
parsing see the seeds plus the caller's own. Alias precedence also sorts
|
|
138
|
+
NULL owners last, which Postgres had reversed. Stacks without auth are
|
|
139
|
+
unchanged. Categories created before this stay shared: nothing records
|
|
140
|
+
who made them.
|
|
141
|
+
- **The webserver is no longer the most throttled container in the stack.**
|
|
142
|
+
A compose `cpus` limit stops a process for the rest of each period once
|
|
143
|
+
its share is spent, and the webserver - the one process a person waits
|
|
144
|
+
on, and a single event loop - was capped at 0.5 while background workers
|
|
145
|
+
got 1.0. Measured on a running stack it was frozen in 11.8% of periods.
|
|
146
|
+
It now defaults to 2.0 (override with `WEBSERVER_CPUS`), the scheduler
|
|
147
|
+
to 0.5, and a test keeps every background container at or below the
|
|
148
|
+
webserver.
|
|
149
|
+
- **The worker and scheduler stop tracing a UI they never load.**
|
|
150
|
+
`install_auto_tracing` hardcoded `app.components.frontend`, so every
|
|
151
|
+
process announced frontend tracing at boot. Only the web process asks
|
|
152
|
+
for it now.
|
|
153
|
+
- **`select_field` works in a plain form.** The htmx dropdown bound its
|
|
154
|
+
value with `x-model` only, so a `<form hx-post>` never sent it. Pass
|
|
155
|
+
`name=` and it posts through a hidden input.
|
|
156
|
+
- **Installing a plugin with a dashboard card no longer fails `make check`.**
|
|
157
|
+
The generated card render test graded every discovered card against a
|
|
158
|
+
table of the framework's own cards, and a plugin cannot edit that file,
|
|
159
|
+
so any plugin card failed on arrival. A card with no recorded count is
|
|
160
|
+
now treated as a plugin's and skips only the count check; the framework
|
|
161
|
+
keeps its own cards in the table with a test of its own.
|
|
162
|
+
- **A granian reload no longer leaves nothing serving the port.** Granian
|
|
163
|
+
waits on a stopping worker forever by default, and a worker holding an
|
|
164
|
+
open dashboard session never finishes stopping. With reload on, a stuck
|
|
165
|
+
worker is now killed after five seconds and replaced.
|
|
166
|
+
- **Pinning a loop that is not installed fails with a sentence.**
|
|
167
|
+
`make serve LOOP=rloop` without rloop died inside granian's worker, and
|
|
168
|
+
`bench engines --loop rloop` lost every result the sweep had already
|
|
169
|
+
measured. The loop is now checked before the engine starts, and a sweep
|
|
170
|
+
drops it and carries on.
|
|
171
|
+
|
|
172
|
+
## [0.13.0] - 2026-09-22
|
|
173
|
+
|
|
174
|
+
### Added
|
|
175
|
+
|
|
176
|
+
- **Pick the ASGI server and its event loop.** `WEBSERVER_ENGINE`
|
|
177
|
+
(`uvicorn` or `granian`) and `WEBSERVER_LOOP` are typed settings, both
|
|
178
|
+
defaulting to what shipped before, so `make serve` is unchanged.
|
|
179
|
+
`make serve ENGINE=granian` / `LOOP=...` switch for one run, granian
|
|
180
|
+
refuses a loop it cannot run instead of starting on another, and uvicorn
|
|
181
|
+
can now run on zuvloop. `bench engines` measures the choice on your own
|
|
182
|
+
routes and sweeps the loop axis (`--loop uvloop --loop asyncio`). A new
|
|
183
|
+
ASGI Server docs page names each difference by its symptom.
|
|
184
|
+
- **Documents read scans locally before asking a model.** A Tesseract OCR
|
|
185
|
+
tier sits between a PDF's text layer and the vision model; a page that
|
|
186
|
+
reads as words and figures is stored with `method = "ocr"`, anything
|
|
187
|
+
thinner still goes to the model, and a machine without Tesseract behaves
|
|
188
|
+
as before. Pages are now extracted concurrently and land one at a time,
|
|
189
|
+
about 3.3x faster on a multi-page scan.
|
|
190
|
+
- **One markdown renderer for anything a model wrote.** Server-side marko
|
|
191
|
+
with GFM (tables, strikethrough, autolinks) that escapes raw HTML in the
|
|
192
|
+
source, so a model can format but never inject markup. Every dashboard
|
|
193
|
+
markdown view gains a copy button that hands over the raw source, not the
|
|
194
|
+
fenced display.
|
|
195
|
+
- **Every chat tool call is recorded**, keyed to its turn, so an agent with
|
|
196
|
+
twenty tools can be reasoned about: which are never reached for and how
|
|
197
|
+
often a turn spends its whole call budget. The usage ledger now actually
|
|
198
|
+
stores `duration_ms`, which it accepted and silently dropped at every
|
|
199
|
+
call site.
|
|
200
|
+
- **A generated project gates its own CI on N+1 queries.** It ships
|
|
201
|
+
`.queryspy-baseline.json` and its test job runs strict against it;
|
|
202
|
+
`make check-queries` / `check-queries-baseline` do the same locally.
|
|
203
|
+
Each stack in the matrix now owns its own baseline.
|
|
204
|
+
- **Cached payloads are namespaced by the deployed commit.** `aegis deploy`
|
|
205
|
+
stamps `BUILD_ID` into the server's `.env`, so a deploy never serves a
|
|
206
|
+
cached response shaped by the previous code.
|
|
207
|
+
- **A dashboard session outlives the webserver process.** The rotating
|
|
208
|
+
refresh token persists in client storage (never the access token), so a
|
|
209
|
+
deploy or hot reload no longer sends every user back to login.
|
|
210
|
+
- **Any worker job can report where it got to**, and the system worker is
|
|
211
|
+
sized for the imports and extractions it actually runs rather than
|
|
212
|
+
maintenance chores, which an 18,000-row finance import was OOM-killed on.
|
|
213
|
+
- **SQLite backups take a consistent snapshot** rather than copying a file
|
|
214
|
+
that may be mid-write.
|
|
215
|
+
|
|
216
|
+
### Changed
|
|
217
|
+
|
|
218
|
+
- **The chat store and usage ledger are async.** They were the last
|
|
219
|
+
request-path code on the sync SQLite engine, where a slow model turn could
|
|
220
|
+
freeze the whole webserver on "database is locked".
|
|
221
|
+
- **The dashboard repaints the component that changed, not the board.**
|
|
222
|
+
Cards, the table and the diagram reuse their controls across refreshes,
|
|
223
|
+
and a modal that already knows a component's status applies it to that
|
|
224
|
+
card directly.
|
|
225
|
+
- **Oversized modules became packages** under the module size budget: the
|
|
226
|
+
insights and modal-sections surfaces, eight dashboard modals, the finance
|
|
227
|
+
insight rules, `cli/rag.py` and others. Import paths are unchanged.
|
|
228
|
+
`BaseCard`, which no card could inherit from, is deleted.
|
|
229
|
+
- **A generated project's test app is built once per session**, with
|
|
230
|
+
dependency overrides cleared around each test; on a downstream suite this
|
|
231
|
+
took the full run from 22 to under 10 minutes.
|
|
232
|
+
- **The README is wired per plugin.** Each plugin spec declares its own
|
|
233
|
+
README lines, so a new service can no longer be absent from the README
|
|
234
|
+
its project ships with.
|
|
235
|
+
- Windows users meet `uv run poe` in step 3 of Installation, before the
|
|
236
|
+
first `make` that would not work for them.
|
|
237
|
+
|
|
238
|
+
### Fixed
|
|
239
|
+
|
|
240
|
+
- **sqlmodel is pinned below 0.0.45**, which rejects every naive UTC
|
|
241
|
+
timestamp the template writes; a fresh project resolved 0.0.46 and failed
|
|
242
|
+
3,617 tests. A project generated while 0.0.45+ was installed has
|
|
243
|
+
revisions naming its `UTCDateTime`; `alembic/env.py` keeps that name
|
|
244
|
+
resolvable below the pin, so those projects still update and migrate.
|
|
245
|
+
The arq worker no longer dies on its own event loop, and the generated
|
|
246
|
+
suite now sees database locks.
|
|
247
|
+
- **`add-service` checks template version compatibility** like `add` and
|
|
248
|
+
`remove` already did, and a foreign key onto a sentinel row gets a
|
|
249
|
+
migration signature, so adding auth to a finance project that has been
|
|
250
|
+
used migrates instead of installing code with no schema.
|
|
251
|
+
- **`auth[oauth]` on `add-service` enables OAuth** instead of being parsed
|
|
252
|
+
and dropped.
|
|
253
|
+
- **An `ai` stack without a database boots.** Three modules imported
|
|
254
|
+
`app.core.db` at module scope.
|
|
255
|
+
- **documents + auth passes its own API suite** on a fresh init, and the
|
|
256
|
+
combinations nobody generated are now exercised.
|
|
257
|
+
- **A corrupt Flet tree stops every loop on the page**, not only the
|
|
258
|
+
dashboard refresh, and a guard checks the control actually being updated
|
|
259
|
+
(the documents modal failed to open).
|
|
260
|
+
- `api/llm` and `api/rag` modules are named `routes`, so the package export
|
|
261
|
+
no longer shadows the module.
|
|
262
|
+
- A blog page of posts costs the same queries as one post.
|
|
263
|
+
- Add and update write the same answers init does; the vestigial
|
|
264
|
+
`scheduler_with_persistence` question is removed.
|
|
265
|
+
- The test suite no longer rewrites the developer's global git identity,
|
|
266
|
+
and `uv add --dev` no longer uninstalls pytest.
|
|
267
|
+
- A failed old-template render during `update` aborts loudly instead of
|
|
268
|
+
turning every file into a conflict.
|
|
269
|
+
|
|
270
|
+
## [0.12.1] - 2026-09-14
|
|
271
|
+
|
|
272
|
+
### Fixed
|
|
273
|
+
|
|
274
|
+
- **A column added to a table that already has rows gets a value for them.**
|
|
275
|
+
Revisions are derived by diffing the models against a scratch database
|
|
276
|
+
that is empty by construction, and every database the revision then runs
|
|
277
|
+
on is not. A 0.10.1 project with the ai service updated its files and
|
|
278
|
+
then failed to migrate: `org_id` arrived NOT NULL with nothing to fill
|
|
279
|
+
the rows that predate it. This is not an ai problem - SQLModel renders
|
|
280
|
+
`Field(default=True)` as a Python-side default the database never sees,
|
|
281
|
+
so any service adding any required field to an existing model shipped the
|
|
282
|
+
same failure, and only `X | None` fields were safe. A NOT NULL column
|
|
283
|
+
added to an existing table now carries a server default taken from the
|
|
284
|
+
model's own default, so fresh and upgraded databases stay identical. A
|
|
285
|
+
required column with no default at all stops generation and names itself,
|
|
286
|
+
rather than dying inside alembic on someone's data. For the one case this
|
|
287
|
+
release has to cross, `ServiceMigrationSpec.cleared_tables` empties the
|
|
288
|
+
derived LLM catalog before the DDL and the next `llm sync` writes it
|
|
289
|
+
again; `llm_usage` is history and is never touched.
|
|
290
|
+
- **The upgrade matrix checks that the database moved, not just that the
|
|
291
|
+
merge was clean.** An update whose migration failed still exits 0, so
|
|
292
|
+
every pair passed while a real 0.10.1 ai project could not migrate at
|
|
293
|
+
all. Each pair now asserts the database reached the revision the update
|
|
294
|
+
wrote, and the generator's backfill has fast unit tests that run on every
|
|
295
|
+
pull request rather than only in the nightly suite.
|
|
296
|
+
|
|
297
|
+
## [0.12.0] - 2026-09-14
|
|
298
|
+
|
|
299
|
+
### Added
|
|
300
|
+
|
|
301
|
+
- **`aegis deploy-exec`: one command against a deployment, scriptably.**
|
|
302
|
+
`deploy-shell` opens an interactive shell, so it cannot be piped, put in
|
|
303
|
+
a runbook or run from CI, and the alternative was hand-writing the ssh
|
|
304
|
+
plus the whole compose-file chain. Forget one `-f` and the command runs
|
|
305
|
+
against a container assembled from different files than the deployment
|
|
306
|
+
itself. `deploy-exec` resolves the same invocation the deploy uses and
|
|
307
|
+
streams the output back.
|
|
308
|
+
- **An N+1 gate that runs on every database stack.** Generated database
|
|
309
|
+
projects get queryspy in the dev extra and a `make check-queries` target;
|
|
310
|
+
the plugin is inert on a plain pytest run. The framework's stack matrix
|
|
311
|
+
runs its existing pytest step with `--queryspy-strict` against one
|
|
312
|
+
baseline fixture covering all 14 database stacks, since entries key on
|
|
313
|
+
paths relative to the generated project: a new finding fails, the known
|
|
314
|
+
ones do not. `make queryspy-baseline` (`STACKS=a,b` to limit it)
|
|
315
|
+
regenerates the fixture from the working-tree templates, so a model
|
|
316
|
+
change that rewrites statement text is one command rather than a hand
|
|
317
|
+
edit of a 364-entry file.
|
|
318
|
+
- **`app/core/graphql.py`: a small, injectable GraphQL client.** Nothing in
|
|
319
|
+
a generated project spoke GraphQL before, and the first consumer needs to
|
|
320
|
+
(GitHub's REST stargazer list cannot enumerate past 40k stars; the GraphQL
|
|
321
|
+
connection can). `GraphQLClient(endpoint, headers=, timeout=, transport=)`
|
|
322
|
+
owns one connection pool and a single `query()`, and turns the two things
|
|
323
|
+
every caller gets wrong into typed errors: a `200` that carries an
|
|
324
|
+
`errors` array raises `GraphQLError`, and any `httpx` failure raises
|
|
325
|
+
`GraphQLHTTPError` instead of leaking the transport's exception types.
|
|
326
|
+
`transport` is the seam - tests pass `httpx.MockTransport` and never
|
|
327
|
+
monkeypatch `httpx`. Endpoint-agnostic on purpose; an API-specific
|
|
328
|
+
client subclasses it. REST callers are deliberately untouched.
|
|
329
|
+
|
|
330
|
+
### Changed
|
|
331
|
+
|
|
332
|
+
- **The models are the schema, and migrations are generated from them.**
|
|
333
|
+
90 hand-written table declarations used to restate what SQLModel already
|
|
334
|
+
said, and the two drifted. `aegis init` and `aegis add` now run the
|
|
335
|
+
generated project's own migration generator in its venv: replay the
|
|
336
|
+
existing revisions onto a scratch database, autogenerate the difference
|
|
337
|
+
against the model metadata, prune to additive operations, write one
|
|
338
|
+
revision per service. Ownership comes from where a model lives, cyclic
|
|
339
|
+
foreign keys emit once both tables exist, and a generated revision
|
|
340
|
+
declares its own stamp signature so startup re-adoption reads it off the
|
|
341
|
+
revision rather than a parallel table. A Postgres oracle asserts the
|
|
342
|
+
diff against the models is empty, and every generated project carries
|
|
343
|
+
the same check on SQLite. `migration_generator.py` drops from 5,080
|
|
344
|
+
lines to 775, and a documents-only stack ships a migration at last: the
|
|
345
|
+
gate is now the same function that decides which services need one.
|
|
346
|
+
- **`aegis update` derives the answers it used to invent.** A question
|
|
347
|
+
added after a project was generated has no answer in that project's
|
|
348
|
+
`.copier-answers.yml`, so copier rendered with the template default: a
|
|
349
|
+
guess about the project, made silently, before anything else ran. The
|
|
350
|
+
answers are now re-derived from the project itself and written before
|
|
351
|
+
copier runs, so every downstream step sees one picture. `ollama_mode`
|
|
352
|
+
comes from the URL the project actually talks to, the finance provider
|
|
353
|
+
flags from the settings it renders. What genuinely cannot be derived is
|
|
354
|
+
computed rather than listed: an answer can only be missing if its
|
|
355
|
+
question was added after the project was generated, which git records,
|
|
356
|
+
so the at-risk set is a diff of `copier.yml` against the oldest
|
|
357
|
+
supported release (7 questions, not the 53 a hand-kept list claimed).
|
|
358
|
+
- **A conflicted update reports every conflict, and can be finished.** The
|
|
359
|
+
report only listed `.rej` files, but our 3-way merge leaves inline
|
|
360
|
+
`<<<<<<<` markers instead; on one project 60 such files went unmentioned
|
|
361
|
+
and `make check` died on the first of them. The written tree is now
|
|
362
|
+
scanned for markers as well, and both kinds print with their own
|
|
363
|
+
resolution step. Nothing ever completed the job either: the conflicted
|
|
364
|
+
run records its target in `.git/aegis-update-pending.json`, and `aegis
|
|
365
|
+
update --finish` refuses while any conflict remains, then runs the
|
|
366
|
+
missing migrations and post-generation tasks, advances the baseline,
|
|
367
|
+
clears the record and drops the backup tag.
|
|
368
|
+
- **An update says what changed before you deploy.** Two facts are knowable
|
|
369
|
+
at update time and invisible afterwards, and both now print in one
|
|
370
|
+
"Before you deploy" block. Any active `.env` key the updated `Settings`
|
|
371
|
+
no longer declares is named, with its replacement where one is known,
|
|
372
|
+
because the alternative is a first-boot crash loop on a pydantic "extra
|
|
373
|
+
forbidden" error with nothing pointing back at the update. Behavior
|
|
374
|
+
changes come from a registry where whoever changes runtime behavior
|
|
375
|
+
declares it once: the version that introduced it, the stacks it applies
|
|
376
|
+
to, and the setting that restores the old behavior. Nothing is inferred
|
|
377
|
+
from a diff, and `.env` is reported on, never edited.
|
|
378
|
+
- **An update re-locks, exports orphan scheduler jobs, and scopes the image
|
|
379
|
+
tag.** `uv sync --upgrade` runs on the update path and on `--finish`, so
|
|
380
|
+
a conflicted update re-locks once completed. The scheduler sweep writes
|
|
381
|
+
the rows it is about to delete to `DATABASE_BACKUP_DIR` first, logs the
|
|
382
|
+
path at WARNING, and deletes nothing if the export cannot be written.
|
|
383
|
+
`AEGIS_STACK_TAG` defaults to the project's own slug instead of a shared
|
|
384
|
+
`aegis-stack:latest`, and an update names a project still on the old
|
|
385
|
+
default.
|
|
386
|
+
- **A provider is described once.** A provider used to be stated nine
|
|
387
|
+
times across four files: the enum, a capabilities table, an API-key map,
|
|
388
|
+
a model-class if/elif chain, a dependency map, a module map, a key-URL
|
|
389
|
+
map, a supported-providers tuple and the factory's base-URL branches.
|
|
390
|
+
Adding one meant editing all of them, and three tests existed only to
|
|
391
|
+
police the gaps. They are one registry now, beside the enum, and
|
|
392
|
+
OpenRouter is one of the entries.
|
|
393
|
+
- **`/health/` is a liveness probe; component status moved to
|
|
394
|
+
`/health/detailed`.** The basic endpoint walked every component on each
|
|
395
|
+
call, and Docker, Traefik and the dashboard all polled it, so an idle
|
|
396
|
+
stack spent measurable CPU checking itself. `/health/` now answers in
|
|
397
|
+
constant time with an empty `components` field, and `/health/detailed`
|
|
398
|
+
reads a shared status cache: one full walk at most every ten seconds no
|
|
399
|
+
matter how many callers ask (`STATUS_CACHE_TTL_SECONDS`). Idle CPU on a
|
|
400
|
+
full stack dropped from 13.4% to 0.26%.
|
|
401
|
+
- **The scheduler proves it is alive with a heartbeat file, not an HTTP
|
|
402
|
+
probe.** `heartbeat.py` touches `/tmp/aegis-scheduler-heartbeat` on a
|
|
403
|
+
schedule and the compose healthcheck checks its age; the two worker
|
|
404
|
+
services drop their redundant healthchecks. The Flet frontend keeps one
|
|
405
|
+
health session per page instead of one per view (`session_health.py`).
|
|
406
|
+
- **`system/health.py` is split by component.** Redis, ingress,
|
|
407
|
+
observability and Ollama checks live in `health_cache.py`,
|
|
408
|
+
`health_ingress.py`, `health_observability.py` and `health_ollama.py`,
|
|
409
|
+
each gated on its component; the module drops from 1456 lines to 714.
|
|
410
|
+
- **A scaffolded plugin pins the aegis-stack that made it.** The scaffold
|
|
411
|
+
emitted an unpinned `aegis-stack` dependency, so `pip install
|
|
412
|
+
aegis-stack-<name>` could resolve an older aegis-stack whose `PluginSpec`
|
|
413
|
+
has no field the plugin sets, and the failure landed on the plugin's user
|
|
414
|
+
as a validation error nobody could place. The floor is now the scaffolding
|
|
415
|
+
version.
|
|
416
|
+
- **A plugin does not have to be on PyPI.** `aegis` never installs plugins
|
|
417
|
+
itself, so a path or git-URL install is discovered through the
|
|
418
|
+
`aegis.plugins` entry point exactly like a published one. The Plugins page
|
|
419
|
+
documents the source-only path and the `aegis-stack-plugin` GitHub topic
|
|
420
|
+
the directory finds them by, and says what the two listing sections
|
|
421
|
+
differ on: a published plugin resolves by version and carries an install
|
|
422
|
+
command, a source-only one carries its repository link and pins nothing.
|
|
423
|
+
|
|
424
|
+
### Removed
|
|
425
|
+
|
|
426
|
+
- **The `finance_import` question.** It shipped with the finance service as
|
|
427
|
+
one of three sub-flags and, unlike the other two, was never wired to
|
|
428
|
+
anything: no template file referenced it, no `aegis` code read it, no
|
|
429
|
+
other question depended on it. Every finance project since has been asked
|
|
430
|
+
whether to include Quicken/OFX/CSV import and got the import surface
|
|
431
|
+
either way. The importers, models and CLI surface ship on the finance
|
|
432
|
+
service alone, which is what the code always did, so deleting the
|
|
433
|
+
question changes no output.
|
|
434
|
+
|
|
435
|
+
### Fixed
|
|
436
|
+
|
|
437
|
+
- **The conflict report told users to delete their own code.** The printed
|
|
438
|
+
step read "keep the right side of each block", and the right side is the
|
|
439
|
+
template render. An inline marker block exists only where both sides
|
|
440
|
+
changed the same region, so that advice was wrong in exactly the cases it
|
|
441
|
+
printed for: on one project it would have dropped `.dockerignore` entries
|
|
442
|
+
for a 20 GB archive, three worker services, every task registration and a
|
|
443
|
+
static assets mount. The steps now say each block is a hand merge and that
|
|
444
|
+
both changes usually have to survive, and the markers are labelled
|
|
445
|
+
`your project` / `old template` / `new template` instead of `current` /
|
|
446
|
+
`other` and unreadable temp paths.
|
|
447
|
+
- **`LOGFIRE_TOKEN` in `.env` passed the guard but never reached
|
|
448
|
+
`logfire.configure()`.** The guard reads it through pydantic-settings,
|
|
449
|
+
which loads `.env`; logfire resolves its own token from `os.environ`,
|
|
450
|
+
which `.env` never populates. The two views disagreed, the guard passed,
|
|
451
|
+
and `configure()` raised. Because the app factory installs auto-tracing at
|
|
452
|
+
import time, the application stopped importing at all outside a container,
|
|
453
|
+
where compose exports the token for real.
|
|
454
|
+
- **`--to-version HEAD` left a project permanently unversioned.**
|
|
455
|
+
`_template_version: HEAD` is not a version, so every later compatibility
|
|
456
|
+
check parsed it to nothing, returned UNKNOWN and fell off the end of the
|
|
457
|
+
validator with no warning: that project was never told its CLI and
|
|
458
|
+
template had diverged again, across a major version included. A
|
|
459
|
+
non-version ref is now placed against the template's release tags, UNKNOWN
|
|
460
|
+
warns instead of passing silently, and a run that used `--template-path`
|
|
461
|
+
says outright that the project is pinned to a path only that machine has.
|
|
462
|
+
- **A pending resume swallowed the flags you just typed.** The resume branch
|
|
463
|
+
was taken before any flag was read, so `--to-version`, `--template-path`
|
|
464
|
+
and `--dry-run` were discarded without a word, and the flags are corrected
|
|
465
|
+
precisely when the first run went somewhere unintended. `--dry-run` was
|
|
466
|
+
worse than silent: with pending state it ran post-generation tasks,
|
|
467
|
+
advanced the baseline and deleted the backup tag, which is the recovery
|
|
468
|
+
point the dry run exists to protect. A disagreeing flag is now refused by
|
|
469
|
+
name, and a dry run reports the pending target and touches nothing.
|
|
470
|
+
- **Updates delivered migrations the project predates, and stopped
|
|
471
|
+
reporting a failed upgrade as success.** A project generated before a
|
|
472
|
+
revision existed never received it, because migration generation was
|
|
473
|
+
wired into `add-service` but not into `update`; it now runs before the
|
|
474
|
+
upgrade, so the database is never stamped past a revision that lands
|
|
475
|
+
afterwards. A failed `alembic upgrade` was discarded by the caller, and
|
|
476
|
+
the command printed "Update completed successfully" over a migration that
|
|
477
|
+
never applied. The app was what crashed, on its first request.
|
|
478
|
+
- **An update planted an empty file for every gated-off template that
|
|
479
|
+
changed.** A whole-file Jinja gate that is off renders to a lone newline.
|
|
480
|
+
`init` sweeps those stubs; the two update paths that create new files had
|
|
481
|
+
no equivalent, so a project with no worker collected
|
|
482
|
+
`tests/components/test_worker_registry.py` and friends. Both paths now
|
|
483
|
+
apply the same rule: a rendered file with no non-whitespace content is
|
|
484
|
+
absent, not new. `__init__.py`, the one legitimately empty file, is kept.
|
|
485
|
+
- **A merged `pyproject.toml` could silently break every Python merge that
|
|
486
|
+
followed.** The template and one project had each added a `[tool.djlint]`
|
|
487
|
+
table in different places; the textual merge kept both and called it
|
|
488
|
+
clean, after which every ruff normalization failed on the duplicate table
|
|
489
|
+
and formatting read as edits in every `.py` file. One update reported 139
|
|
490
|
+
conflicts, 95 of them from this. Files carrying ruff's config now merge
|
|
491
|
+
last, and a merged `pyproject.toml` that no longer parses is reported as
|
|
492
|
+
a conflict instead of being handed to the tools that cannot read it.
|
|
493
|
+
- **Startup re-adoption stamped nothing, and a deploy lost what was
|
|
494
|
+
removed.** The stamp pass built an inspector inside a session block and
|
|
495
|
+
used it after the block closed, so every lookup raised on a dead
|
|
496
|
+
connection and every raise was swallowed by a bare `except`: the column
|
|
497
|
+
map was always empty, only table signatures could ever match, and a
|
|
498
|
+
version pointer below the last table-signed revision replayed that DDL on
|
|
499
|
+
every boot.
|
|
500
|
+
- **A non-Ollama project shipped the whole Ollama surface as dead code.**
|
|
501
|
+
Only the importers were gated, not the files, so the card, the modal, the
|
|
502
|
+
health module and two stubs rode along, and one of them could not import
|
|
503
|
+
at all in that mode. The prune now covers them, on update as well as
|
|
504
|
+
init. In the same pass, the settings surface stopped re-deriving an API
|
|
505
|
+
key variable from the provider slug, which reported OpenRouter's key as
|
|
506
|
+
missing while the model worked.
|
|
507
|
+
- **Every async session ran the schema with its foreign keys off.** The two
|
|
508
|
+
SQLite pragma hooks had drifted: the sync one enabled foreign keys, the
|
|
509
|
+
async one set the busy timeout, and each was missing the other's. So the
|
|
510
|
+
engine the application uses left its constraints unenforced, and the
|
|
511
|
+
engine the CLI uses failed instantly on a busy database instead of
|
|
512
|
+
waiting. One helper now applies both. Transactions also open with `BEGIN
|
|
513
|
+
IMMEDIATE`: a deferred begin takes no lock until the first write and then
|
|
514
|
+
has to upgrade from the read lock it holds, which is the one case
|
|
515
|
+
`busy_timeout` deliberately does not cover, so a second writer failed at
|
|
516
|
+
once instead of queueing.
|
|
517
|
+
- **`STORAGE_ROOT` reached every container.** The compose anchor put it on
|
|
518
|
+
its environment list, but a service that declares its own list replaces
|
|
519
|
+
the anchor's wholesale, and four services do. Inside those containers the
|
|
520
|
+
variable was empty and object storage fell back to the code directory: in
|
|
521
|
+
dev the bind-mounted checkout, in prod a path that vanishes with the
|
|
522
|
+
container while the storage volume it was meant to use stayed empty. The
|
|
523
|
+
value moves to the Dockerfile's `ENV`, which every container sees.
|
|
524
|
+
- **A bill's amount described rows that were never its payments.** Almost
|
|
525
|
+
every stream in a real ledger has no expected amount, so the number on
|
|
526
|
+
screen is the average of what was claimed. Attaching a payment backfills
|
|
527
|
+
the payee's other unclaimed rows, which is right, but the net was the
|
|
528
|
+
whole payee rather than the bill, so unrelated rows of that merchant were
|
|
529
|
+
averaged into the bill's amount.
|
|
530
|
+
- **A Postgres project's test suite runs.** Every project's tests run on
|
|
531
|
+
SQLite (``tests/conftest.py`` points ``DATABASE_URL`` at a throwaway
|
|
532
|
+
file), but three things only worked on a SQLite project: the async URL
|
|
533
|
+
converter in ``app/core/db.py`` did not know ``sqlite://`` (so
|
|
534
|
+
``create_async_engine`` got a sync driver and nothing collected), the
|
|
535
|
+
test guard redirected only the async session factory (so a sync
|
|
536
|
+
``db_session()`` lookup after a write hit a database with no tables:
|
|
537
|
+
Postgres migrations open with ``CREATE SCHEMA``, which SQLite rejects), and
|
|
538
|
+
the SQLite busy-timeout test skipped on dialect rather than on whether the
|
|
539
|
+
project wires the knob. The CI matrix generates no Postgres project, so
|
|
540
|
+
nothing caught it. A generated test now asserts the sync and async
|
|
541
|
+
app-owned sessions share one database.
|
|
542
|
+
|
|
543
|
+
## [0.11.1] - 2026-09-10
|
|
544
|
+
|
|
545
|
+
### Changed
|
|
546
|
+
|
|
547
|
+
- **A plugin's migration can declare how to prove it ran.**
|
|
548
|
+
`MigrationSpec` gains `stamp_signature`, the composer carries each
|
|
549
|
+
plugin's migrations into `_plugins`, and `migration_signatures.py`
|
|
550
|
+
appends plugin entries. Startup re-adoption now stamps a plugin's
|
|
551
|
+
migration on a database that already has its tables, instead of
|
|
552
|
+
replaying the DDL on every boot.
|
|
553
|
+
- **`API_BASE_URL` follows the port the app is actually published on.**
|
|
554
|
+
`make serve` shifts `WEBSERVER_HOST_PORT` when 8000 is taken but never
|
|
555
|
+
persisted it, so every CLI that calls this app's own API fell back to
|
|
556
|
+
a hardcoded `localhost:8000`. The resolved port is now written to
|
|
557
|
+
`.env.ports` and read by `Settings`, and `APIClient` uses it.
|
|
558
|
+
- **`aegis deploy` no longer fills the host it deploys to.** Rollback
|
|
559
|
+
snapshots live in the deploy directory, which is the build context on the
|
|
560
|
+
server, so `COPY . /code` baked every retained snapshot into the image;
|
|
561
|
+
`.dockerignore` now excludes `backups/`. Nothing reclaimed the images or
|
|
562
|
+
build cache a deploy left behind either, so both are pruned once the
|
|
563
|
+
health check passes (dangling images, and cache older than a week), and a
|
|
564
|
+
deploy refuses to start below 10 GB free instead of dying inside the
|
|
565
|
+
Dockerfile's `apt-get` with the files already synced. On the project that
|
|
566
|
+
hit this, six weeks reached 307 images and 851 cache records on a 77 GB
|
|
567
|
+
host; the image itself was 3.65 GB, of which 2.52 GB was snapshots.
|
|
568
|
+
- **Scheduled database backups survive a deploy, and restore.** The job
|
|
569
|
+
wrote to a relative path, which inside the scheduler resolved to the
|
|
570
|
+
container's writable layer: 7.4 GB of dumps, discarded on every container
|
|
571
|
+
recreation. The directory is now `DATABASE_BACKUP_DIR`, mounted from a
|
|
572
|
+
named `backup-data` volume, and `pg_dump` writes the compressed custom
|
|
573
|
+
format restored with `pg_restore --clean --if-exists`. Plain `.sql` dumps
|
|
574
|
+
written before this still count toward retention and restore through
|
|
575
|
+
`psql`.
|
|
576
|
+
- **A plugin names itself once and every dashboard surface honours it.**
|
|
577
|
+
`get_component_subtitle` now prefers the `subtitle` a health check
|
|
578
|
+
declares in its metadata, and both the stack view and the architecture
|
|
579
|
+
diagram route their fallback through it. A plugin is in no label
|
|
580
|
+
registry, so the stack view showed a blank description and the diagram
|
|
581
|
+
showed the raw health id.
|
|
582
|
+
- **Plugin dependencies can name a service variant.** A plugin declaring
|
|
583
|
+
`required_services=["auth[org]"]` now gets auth at org level: installed
|
|
584
|
+
fresh at that level, upgraded when the project has a lower level, left
|
|
585
|
+
alone when it already satisfies the request. The spec's options say
|
|
586
|
+
where a variant lives in the answers (`answer_key`) and whether its
|
|
587
|
+
choices are ordered levels; `add-service auth[org]` on basic auth uses
|
|
588
|
+
the same rule, and the level-specific migrations are generated on both
|
|
589
|
+
paths. Unordered mismatches are refused, not swapped (docs, Plugins).
|
|
590
|
+
- **Plugin packages are named `aegis-stack-<name>`.** `aegis plugins create`
|
|
591
|
+
now scaffolds `aegis-stack-<name>` with the `aegis_stack_<name>` import
|
|
592
|
+
package, replacing `aegis-plugin-<name>`. `aegis-stack-` is the one
|
|
593
|
+
prefix this project owns on PyPI (rationale: docs, Plugins, Naming). The
|
|
594
|
+
install identifier is unchanged: `aegis add <name>`.
|
|
595
|
+
- **Scaffolded plugins carry directory discovery metadata.** `pyproject.toml`
|
|
596
|
+
gains `keywords = ["aegis-stack", "aegis-stack-plugin"]` and an
|
|
597
|
+
`Aegis Plugin` project URL, the README explains how a published plugin
|
|
598
|
+
gets listed on aegis-stack.io, and the generated test pins the
|
|
599
|
+
`aegis.plugins` entry point value. A new Plugins page under Reference
|
|
600
|
+
documents create, discovery, publish and naming.
|
|
601
|
+
- **Experimental is a field on the spec.** `PluginSpec.experimental` replaces
|
|
602
|
+
the "Experimental:" prose that prefixed finance's registry strings.
|
|
603
|
+
`aegis services` and the init wizard badge experimental services in the
|
|
604
|
+
warning colour, and `aegis add-service` prints one warning line for them
|
|
605
|
+
without prompting. Finance is the first to carry the flag.
|
|
606
|
+
- **`hx_replace()` template global and no htmx attribute settling**: one
|
|
607
|
+
helper emits the "re-request and replace this element" attribute set
|
|
608
|
+
(`hx-get`/`hx-target`/`hx-select`/`hx-swap="outerHTML"`/`hx-push-url`)
|
|
609
|
+
for filter forms, pagers, and list links, so a self-selecting request
|
|
610
|
+
can no longer nest a copy of its target. `attributesToSettle` is empty
|
|
611
|
+
because settling copied the old `style` back onto swapped elements and
|
|
612
|
+
undid Alpine's `x-show`.
|
|
613
|
+
- **Row actions and dialogs in the macro kit**: `data_table` takes
|
|
614
|
+
`row_id` and a `{% call(row) %}` actions block, renders `status` cells
|
|
615
|
+
(`badge`) and signed or toned money, and exposes `table_row` for the
|
|
616
|
+
single-row answer to an action; `dropdown` + `menu_item`, `confirm`,
|
|
617
|
+
`badge`, and `oob` macros; native `select`, `date_input`, `checkbox`,
|
|
618
|
+
`search_input`, `field`, `text_input`, `money_input`, `textarea` form
|
|
619
|
+
controls. `rendering.trigger()`, `close_dialog()` (sent after settle so
|
|
620
|
+
the swap cannot re-open an empty dialog) and `navigate()` (HX-Location).
|
|
621
|
+
`navigate()` also closes the dialog on the plain trigger, since htmx
|
|
622
|
+
follows HX-Location rather than settling the response.
|
|
623
|
+
The dashboard shape as macros: `page_header`, `figures`, `stats_strip`,
|
|
624
|
+
`ranked_rows`, underline `tab_bar`/`tab_item`, `chip`, `range_chips` over
|
|
625
|
+
one window vocabulary (`web_frontend/ranges.py`), and `action`. The one
|
|
626
|
+
modal has one definition: `hx_dialog()`/`hx_dialog_post()` globals and
|
|
627
|
+
`dialog()`/`dialog_done()` on the server. `card` and `chart_panel` take
|
|
628
|
+
no title where the page already names them.
|
|
629
|
+
`stat_tile` takes a caption and attributes (a clickable cell), `progress`
|
|
630
|
+
macro, `cents_to_input` as a template filter. Chart marker series
|
|
631
|
+
(`{"points": true}`). Test kit gains `triggers()`,
|
|
632
|
+
`oob()`, `table_rows()`, `card()`, `stat()`, `chart_data()`.
|
|
633
|
+
- **Finance**: `goal_response()` and `envelope_response()` are public in
|
|
634
|
+
the goals and envelopes API so a single-card re-render shares them;
|
|
635
|
+
`hydrate_streams()` / `visible_streams()` /
|
|
636
|
+
`candidate_items()` in the recurring API, shared by the list endpoint and
|
|
637
|
+
any single-row re-render; `FREQUENCY_LABELS`, `BILL_FREQUENCY_OPTIONS`
|
|
638
|
+
and `frequency_label()` in the service constants (the Flet frontend
|
|
639
|
+
imports them); the one-clock ratchet now covers the finance API and the
|
|
640
|
+
web frontend, with the remaining local-clock reads fixed.
|
|
641
|
+
- **htmx macro kit split by concern**: `components/macros/{form,layout,
|
|
642
|
+
table,feedback}.html` replace the single `macros.html`, and the kit gains
|
|
643
|
+
`data_table` (the one table), `card`, `stat_tile`, `dialog` (native,
|
|
644
|
+
mounted once by the base layout, opened by any swap into `#dialog-body`)
|
|
645
|
+
and `chart_panel` with a lazy-loading, token-colored Chart.js island.
|
|
646
|
+
- **htmx web frontend: themes are config.** Colors are `--aegis-*` tokens
|
|
647
|
+
defined per `[data-theme]` in `input.css`; `tailwind.config.js` maps the
|
|
648
|
+
`aegis-*` class names onto them, so a theme is a block of variables and
|
|
649
|
+
a rebrand is a value edit. Two ship (`aegis`, `aegis-light`); `theme.js`
|
|
650
|
+
applies the stored choice before first paint and the `theme_toggle()`
|
|
651
|
+
macro switches it. Templates use tokens only (no `text-white`, no hex),
|
|
652
|
+
and a test keeps it that way.
|
|
653
|
+
- **htmx web frontend: one route, two render paths.** `rendering.render()`
|
|
654
|
+
serves a full page (`layouts/page.html`) or a bare fragment
|
|
655
|
+
(`layouts/fragment.html`) from the same handler based on `HX-Request`,
|
|
656
|
+
with `Vary: HX-Request` and a `status_code` passthrough for validation
|
|
657
|
+
re-renders. The htmx config gains `responseHandling` so a 422 swaps and
|
|
658
|
+
other 4xx/5xx raise `htmx:responseError`; the SSE extension loads after
|
|
659
|
+
core. `main.py` is now wiring only: `assets.py` (fingerprinted URLs,
|
|
660
|
+
cache policy), `filters.py` (`money`, `short_date`, `pct`), and
|
|
661
|
+
`rendering.py` own the rest. The unused `strftime` filter is gone.
|
|
662
|
+
- **htmx feedback is an `HX-Trigger` toast.** `with_toast(response, text,
|
|
663
|
+
tone)` plus a live region mounted by the base layout replace the
|
|
664
|
+
sessionStorage-and-reload snackbar. `app.js` no longer re-executes
|
|
665
|
+
swapped `<script>` tags; the auth pages' components moved into
|
|
666
|
+
`auth.js` as `Alpine.data(...)` registrations, so no page carries an
|
|
667
|
+
inline script. `components/macros/feedback.html` adds `empty_state` and
|
|
668
|
+
`error_banner`.
|
|
669
|
+
- **htmx projects ship a web test kit** under `tests/web/`: an `hx` client
|
|
670
|
+
fixture, `add_template`, and DOM helpers (`select`, `one`, `none`,
|
|
671
|
+
`text`) backed by lxml + cssselect in the dev extra, with the kit's own
|
|
672
|
+
tests.
|
|
673
|
+
|
|
674
|
+
### Fixed
|
|
675
|
+
- **Tailwind dev watcher misses new templates**: on a Docker bind mount
|
|
676
|
+
(Docker Desktop on macOS) the watcher never saw files created after it
|
|
677
|
+
started, so a class used only in a new template never compiled. The dev
|
|
678
|
+
compose runs it with `--poll`.
|
|
679
|
+
|
|
680
|
+
- **A plugin's settings mixin no longer fails `ruff check`.** The
|
|
681
|
+
injected import landed after a module constant in `app/core/config.py`,
|
|
682
|
+
so any generated project that installed a plugin declaring
|
|
683
|
+
`settings_mixins` reported E402.
|
|
684
|
+
- **`aegis add <plugin>` restores the services card.** The shared
|
|
685
|
+
`cards/__init__.py` imports `ServicesCard` once any plugin is present,
|
|
686
|
+
but only the component install path ensured that module exists, so
|
|
687
|
+
adding a plugin to a project with no services left a dangling import
|
|
688
|
+
and the frontend died on boot with `ModuleNotFoundError`.
|
|
689
|
+
- **Generated projects pin `ty`** (like ruff already was). A pre-release
|
|
690
|
+
type checker shipping new diagnostics weekly meant a fresh `make check`
|
|
691
|
+
could fail on a day with no template change; a bump is now a reviewed
|
|
692
|
+
commit that fixes new diagnostics alongside it.
|
|
693
|
+
- **Finance service reads one calendar clock** (`utils.current_date`,
|
|
694
|
+
UTC). Rules, budgets, streams and the analyst defaulted to the host's
|
|
695
|
+
local date while models, imports and the demo seed were on UTC; each
|
|
696
|
+
evening in the Americas they differed by a day and the demo-dataset
|
|
697
|
+
insight test failed. A generated ratchet test keeps `date.today()` out.
|
|
698
|
+
- **Finance models render the FK schema prefix per engine**, so SQLite
|
|
699
|
+
stacks no longer trip ty's redundant-condition diagnostic.
|
|
700
|
+
- **Webserver dev reload no longer watches the host venv.** uvicorn's
|
|
701
|
+
reload watched the whole working directory, which in the dev container
|
|
702
|
+
is the bind mount with the host's `.venv` in it; a `uv sync` on the
|
|
703
|
+
host restarted the server in a storm. `reload_dirs` is now the app
|
|
704
|
+
package, matching the scheduler's and worker's watchers.
|
|
705
|
+
- **htmx dev stack no longer breaks host tooling.** The tailwind container
|
|
706
|
+
installs `node_modules` into a named volume instead of the bind mount, so
|
|
707
|
+
a macOS or Windows host never inherits Linux binaries that make
|
|
708
|
+
`make lint-frontend` fail.
|
|
709
|
+
- **Generated `test_app_js_is_loaded` no longer fails once assets are
|
|
710
|
+
built**: it accepts the fingerprinted path as well as the source path.
|
|
711
|
+
- **`aegis add <plugin>` creates the plugin's tables.** A third-party
|
|
712
|
+
plugin's `migrations` were never written: `add_plugin` skipped the
|
|
713
|
+
migration tail in-tree services get, and the generator only resolved
|
|
714
|
+
names from the static registry. The plugin's revisions are now rendered
|
|
715
|
+
straight from its spec (`generate_plugin_migrations`), with alembic
|
|
716
|
+
bootstrapped when missing, schema dropped on SQLite, and re-adding the
|
|
717
|
+
plugin never stacking a duplicate revision.
|
|
718
|
+
|
|
719
|
+
## [0.11.0] - 2026-09-06
|
|
720
|
+
|
|
721
|
+
### Added
|
|
722
|
+
|
|
723
|
+
- **Agents and memory modules**: the AI service gains first-class agent
|
|
724
|
+
rows (system prompt, model pin, granted tools, editable from the
|
|
725
|
+
dashboard and the CLI) and memory modules that are fetched into
|
|
726
|
+
context before a turn, so an agent opens a conversation already
|
|
727
|
+
briefed rather than spending its first turns discovering the
|
|
728
|
+
situation. Documented under `docs/services/ai/` (agents, memory
|
|
729
|
+
modules, providers, API, CLI).
|
|
730
|
+
|
|
731
|
+
- **Code mode**: an agent flagged `code_mode` writes one Python script
|
|
732
|
+
that calls its granted tools as functions, run in a sandbox, instead
|
|
733
|
+
of a chain of tool round-trips. Writes never ride the sandbox: a tool
|
|
734
|
+
registered as a native write stays a visible call in the trail. The
|
|
735
|
+
finance service ships host tools for it (ledger, accounts, bills,
|
|
736
|
+
quotes) and a research-agent guide.
|
|
737
|
+
|
|
738
|
+
- **An embeddable chat surface**: a reusable `ChatPanel` control
|
|
739
|
+
(streaming transcript, resume-latest, per-surface history, model
|
|
740
|
+
picker) and its first consumer, a Chat tab in the finance modal bound
|
|
741
|
+
to a seeded finance assistant. Answers carry a hover-to-copy button.
|
|
742
|
+
The assistant can list its own open and recently decided cards with
|
|
743
|
+
`pending()`, retract a superseded card whole with `withdraw_batch`
|
|
744
|
+
and a reason the user sees, and redraw cards on request instead of
|
|
745
|
+
retyping their rows; a withdrawn card reads "withdrawn", not
|
|
746
|
+
"rejected".
|
|
747
|
+
|
|
748
|
+
- **Finance write surface**: agents propose ledger mutations through a
|
|
749
|
+
`propose`/`propose_many` queue and nothing runs until the user
|
|
750
|
+
approves. Every proposal is a `finance_pending_change` row rendered
|
|
751
|
+
by one component registry on the in-chat card and the Review >
|
|
752
|
+
Approvals queue; batches share one card with a per-row veto.
|
|
753
|
+
Registered change types cover categorize, assign payee, tag/untag,
|
|
754
|
+
split, and recurring match. Money movement is deliberately not on the
|
|
755
|
+
list.
|
|
756
|
+
|
|
757
|
+
- **Finance planning surfaces**: budgets with envelopes that auto-credit
|
|
758
|
+
on a schedule, goals stated as accounts (a goal can be sized in months
|
|
759
|
+
of measured expenses rather than a fixed sum, resolved on read),
|
|
760
|
+
net-worth history, spending summary, and a secured-debt link that
|
|
761
|
+
records which property secures a liability so equity and LTV derive
|
|
762
|
+
from it everywhere accounts are read.
|
|
763
|
+
|
|
764
|
+
- **Finance findings**: deterministic rules (large transaction, fee,
|
|
765
|
+
overspend, price hike, missed payment) raise findings on the Review >
|
|
766
|
+
Attention tab with the house severity dot and a dismiss.
|
|
767
|
+
|
|
768
|
+
- **Finance documentation**: a page per tab and per domain under
|
|
769
|
+
`docs/services/finance/` (accounts, bills, projected, budget, review,
|
|
770
|
+
investments, imports, chat, API, CLI), with screenshots from a demo
|
|
771
|
+
household redesigned to have something to show: two earners on
|
|
772
|
+
different rhythms, thin cash with the surplus invested, a carried
|
|
773
|
+
card, a quarterly property tax, and a Review tab with work in it.
|
|
774
|
+
`make docs-serve` resolves a free port like every other host publish.
|
|
775
|
+
|
|
776
|
+
- **Imports ask which account a statement belongs to**: a single-account
|
|
777
|
+
CSV or QIF with no target no longer fails with a bare 400. The preview
|
|
778
|
+
says the account is missing, the client asks, and the review dialog
|
|
779
|
+
names layout and target ("Chase Credit Card layout into Amex") so a
|
|
780
|
+
statement aimed at the wrong account is caught before Import.
|
|
781
|
+
|
|
782
|
+
- **Storage component**: `include_storage` adds an `S3Storage` backend
|
|
783
|
+
for any S3-compatible bucket (boto3, SigV4, presigned URLs) behind the
|
|
784
|
+
same `ObjectStorage` protocol the filesystem backend implements, with
|
|
785
|
+
SeaweedFS in the dev compose stack, a health check, and a card and
|
|
786
|
+
modal. Documented under `docs/components/storage/`.
|
|
787
|
+
|
|
788
|
+
- **Documents on the worker, with a jobs surface**: document extraction
|
|
789
|
+
reads each page once (text layer where there is one, the vision model
|
|
790
|
+
where there is not) and keeps the readings; with a worker in the
|
|
791
|
+
stack the run is a queued job on arq, dramatiq, or taskiq alike, and
|
|
792
|
+
without one it is the same in-process task as before. The generic
|
|
793
|
+
jobs surface (a job record, two SSE streams, an in-process runner and
|
|
794
|
+
a Redis-backed store) is documented for the next consumer. Documents
|
|
795
|
+
also gained a lifecycle: supersession chains, a typed-title
|
|
796
|
+
protection gate on delete, and a channel recording how the paper
|
|
797
|
+
arrived. Documented under `docs/services/documents/`.
|
|
798
|
+
|
|
799
|
+
- **Init blueprints**: `aegis init` can start from a named blueprint
|
|
800
|
+
(the first is `finance`) that selects the components and services a
|
|
801
|
+
purpose needs, with a guided picker and a `blueprints` command to list
|
|
802
|
+
them.
|
|
803
|
+
|
|
804
|
+
- **Plugins register their own CLI verbs**: a component or service spec
|
|
805
|
+
declares the `aegis` subcommands it contributes, and the generic
|
|
806
|
+
schema engine gates migrations on what the stack actually selected.
|
|
807
|
+
|
|
808
|
+
- **Document store service**: an optional `documents` service that keeps
|
|
809
|
+
the paper an application accumulates - scans, statements, letters,
|
|
810
|
+
forms - with ingest, tagging, listing, download, and soft delete.
|
|
811
|
+
Documents ride the storage seam, so a row records a content-derived
|
|
812
|
+
key and never a path: the same scan uploaded twice is one document and
|
|
813
|
+
one object, which makes a retried upload or a scanner that runs twice
|
|
814
|
+
free rather than duplicative. What a document MEANS - a case, a
|
|
815
|
+
deadline, a claim it proves - is deliberately absent; that belongs to
|
|
816
|
+
whatever consumes it.
|
|
817
|
+
|
|
818
|
+
- **Chat attachments outlive the turn that carried them**: images are
|
|
819
|
+
stored on receipt and the message records where they went, so a
|
|
820
|
+
reopened conversation still shows the screenshot it is discussing and
|
|
821
|
+
a replay no longer depends on session memory still holding megabytes.
|
|
822
|
+
Re-attaching the same image costs nothing (content addressing), and a
|
|
823
|
+
storage failure never costs the user their message: the question still
|
|
824
|
+
reaches the model, the picture is simply not kept.
|
|
825
|
+
|
|
826
|
+
- **Finance rows say whose money they describe**: a `finance_subject`
|
|
827
|
+
table plus a nullable `subject_id` on accounts and recurring streams.
|
|
828
|
+
Households manage money for other people (a parent in care, a child's
|
|
829
|
+
savings, an estate), and with a single owner column those sat beside
|
|
830
|
+
the household's own indistinguishably, so every total quietly mixed
|
|
831
|
+
two people's money and "what were his resources on this date" was not
|
|
832
|
+
a question anyone could ask. Null means the household's own, so every
|
|
833
|
+
existing ledger and query reads exactly as before; accounts can be
|
|
834
|
+
narrowed to one subject, or to the household alone.
|
|
835
|
+
|
|
836
|
+
- **Durable storage for bytes, addressed by content**: `app/core/storage.py`
|
|
837
|
+
introduces the seam every future backend implements - put, get, exists,
|
|
838
|
+
delete - with a filesystem backend and a named docker volume behind it.
|
|
839
|
+
Keys are derived from the payload's SHA-256 rather than from a filename
|
|
840
|
+
or a path (`sha256/ab/cd/<digest>`), so storing the same bytes twice is
|
|
841
|
+
one object and adopting object storage later is a byte copy: the same
|
|
842
|
+
key resolves identically on a disk and in a bucket, with no database
|
|
843
|
+
change and no key rewriting. Callers keep the key and the backend name,
|
|
844
|
+
never a path.
|
|
845
|
+
|
|
846
|
+
- **Payee assignment through the approval queue**: a
|
|
847
|
+
`transaction.assign_payee` change type completes the curation write
|
|
848
|
+
surface. The payload names the payee rather than an id, because the
|
|
849
|
+
payee may not exist yet; approval find-or-creates it by normalized
|
|
850
|
+
name, so two spellings cannot mint two rows. Batch-capable through
|
|
851
|
+
`propose_many`, with the usual before/after card copy.
|
|
852
|
+
|
|
853
|
+
- **A house control for bare text inputs**: `StyledTextField` wears
|
|
854
|
+
the shared input recipe as a control rather than each surface
|
|
855
|
+
splicing kwargs into a raw field. The chat composer and the model
|
|
856
|
+
picker's search both use it.
|
|
857
|
+
|
|
858
|
+
- **Durable readings from image turns**: attachment bytes ride one turn
|
|
859
|
+
by design, but the extraction no longer dies with them. A generic
|
|
860
|
+
`record_reading` chat tool (schema-forced, Pydantic-validated - the
|
|
861
|
+
same door-guarding pattern as the finance queue) lets an agent record
|
|
862
|
+
every line item it reads out of a receipt/order/document image; the
|
|
863
|
+
turn stages it, finalize merges it into the conversation's stored
|
|
864
|
+
metadata (bounded), and every later turn re-injects the recorded
|
|
865
|
+
readings as context - "list the items again" works long after the
|
|
866
|
+
image is gone. The finance assistant is granted the tool and
|
|
867
|
+
instructed to record before answering. Reading items carry the
|
|
868
|
+
source's own grouping (a shipment, a sub-receipt) so structure never
|
|
869
|
+
flattens away, the assistant is forbidden from prorating category
|
|
870
|
+
totals across charges, and the replayed-history budget now
|
|
871
|
+
scales with the ACTIVE model's context window (5% of context in
|
|
872
|
+
chars, floored at 6k for small local models, capped at 60k so a
|
|
873
|
+
million-token model doesn't re-bill the whole transcript every turn;
|
|
874
|
+
agent model pins respected) instead of a fixed small-model constant -
|
|
875
|
+
so an agent stops "forgetting" allocations it computed minutes
|
|
876
|
+
earlier.
|
|
877
|
+
|
|
878
|
+
- **Readable approval cards**: a proposal's dates read like "Aug 27,
|
|
879
|
+
2026" instead of "2026-08-27" throughout the propose/approve queue
|
|
880
|
+
(card, batch, and CLI-style subjects share the one formatter). Batch
|
|
881
|
+
cards no longer flatten a multi-line proposal into one dot-joined
|
|
882
|
+
string - each split's category and amount gets its own line, matching
|
|
883
|
+
the single-card layout. Every card's plain (non-arrow) detail value
|
|
884
|
+
now pops in accent teal - the same treatment an arrow's target already
|
|
885
|
+
got - so the eye lands on what the proposal actually changes; a
|
|
886
|
+
rejected or vetoed row never highlights. The approvals queue moved to
|
|
887
|
+
its own Review > Approvals sub-tab (cards flow as a wrapping grid,
|
|
888
|
+
with an empty state like every other queue); Overview now carries
|
|
889
|
+
only a one-line "N pending changes awaiting your approval" banner
|
|
890
|
+
that jumps straight to it - proposals are never invisible, and never
|
|
891
|
+
bury the summary page.
|
|
892
|
+
|
|
893
|
+
- **Finance split transactions**: one purchase can now be carved into
|
|
894
|
+
category lines. The parent row is never modified - lines live in the
|
|
895
|
+
existing `finance_transaction_split` table, parts are stated as positive
|
|
896
|
+
magnitudes and the unclaimed difference auto-fills as a remainder line
|
|
897
|
+
under the parent's own category. Category reporting (budget actuals,
|
|
898
|
+
budget summary, categories tab, spending totals, register category
|
|
899
|
+
filter) swaps a split parent for its lines, while payee, cashflow and
|
|
900
|
+
account math stay on the parent so nothing double-counts. Ships with
|
|
901
|
+
split/unsplit API endpoints, a register split editor with a live
|
|
902
|
+
remainder line, and a `transaction.split` change type on the agent
|
|
903
|
+
propose/approve queue.
|
|
904
|
+
|
|
905
|
+
- **Chat image attachments**: the embeddable chat panel can attach
|
|
906
|
+
images (screenshots, receipts) to a turn. Fully generic across the AI
|
|
907
|
+
system: attachments ride the chat request body, the service hands them
|
|
908
|
+
to the model as multimodal content (any vision-capable model on any
|
|
909
|
+
provider), and history keeps a text marker of what was attached. The
|
|
910
|
+
finance assistant uses this to read itemized order screenshots and
|
|
911
|
+
propose a transaction split, with the approval card listing every line
|
|
912
|
+
(item memo, category, amount, remainder) before anything is written.
|
|
913
|
+
|
|
914
|
+
- **Paste images anywhere on the dashboard**: Flet has no
|
|
915
|
+
clipboard-image API, so a capture script spliced into the dashboard
|
|
916
|
+
page posts pasted images to a new generic `/api/v1/pastebox` endpoint
|
|
917
|
+
(bounded, drain-once, framework-level); consumer surfaces poll-drain
|
|
918
|
+
it - chat pulls a paste straight into its attachment chips, so
|
|
919
|
+
Ctrl/Cmd+V behaves exactly like the attach button. Staged chips show
|
|
920
|
+
a clickable thumbnail of the actual image (full-size preview dialog),
|
|
921
|
+
not just a filename. A "Receiving
|
|
922
|
+
image..." busy indicator bridges the upload gap: the capture script
|
|
923
|
+
announces the paste before uploading, and both the paste and picker
|
|
924
|
+
paths show the same indicator until the chip lands.
|
|
925
|
+
|
|
926
|
+
- **Replay a chat message**: every user bubble (live or reloaded from
|
|
927
|
+
history) carries a replay control that re-sends the same text as a
|
|
928
|
+
fresh turn, riding whatever attachments are staged at that moment.
|
|
929
|
+
Stored attachment markers are stripped on replay (image bytes ride
|
|
930
|
+
one turn only), and a failed turn now restages its attachments
|
|
931
|
+
instead of losing them - the recover-from-a-model-error path is one
|
|
932
|
+
click. Sent images stay replayable from session memory (bounded to
|
|
933
|
+
the last 8 image-carrying turns; never persisted), so a replay
|
|
934
|
+
re-sends the original screenshots without re-pasting.
|
|
935
|
+
|
|
936
|
+
- **Agent proposal hygiene**: `transaction.split` payloads are validated
|
|
937
|
+
at propose time (positive magnitudes, at least one part), so a card
|
|
938
|
+
that can never execute is refused at the door and the error loops back
|
|
939
|
+
to the agent. A new `withdraw` write tool lets an agent retract its
|
|
940
|
+
own still-pending proposals - resolved as rejected with a "withdrawn"
|
|
941
|
+
note so the audit trail keeps the mistake - instead of leaving bad
|
|
942
|
+
cards for the user to reject by hand. Cards whose stored payload no
|
|
943
|
+
longer passes a since-tightened rule stay resolvable: they render as
|
|
944
|
+
their raw payload and can still be rejected or withdrawn (validation
|
|
945
|
+
guards the door, never the cleanup). Card display rows are typed
|
|
946
|
+
(`ChangeDisplayRow`) end to end through the registry, executors, and
|
|
947
|
+
queue - plain dicts exist only in the frozen audit JSON and at the
|
|
948
|
+
agent tool-result boundary.
|
|
949
|
+
|
|
950
|
+
### Changed
|
|
951
|
+
|
|
952
|
+
- **Add, remove, and update share one engine**: the hand-kept lists of
|
|
953
|
+
shared files to regenerate are gone. A render-diff engine renders the
|
|
954
|
+
template tree at the old and the new answers and three-way merges
|
|
955
|
+
each shared file, with policy stated as a template-header annotation
|
|
956
|
+
(user-owned, warn-if-diverged, no-backup) instead of a central table.
|
|
957
|
+
Component-owned files stay declared on their own spec's `FileManifest`.
|
|
958
|
+
|
|
959
|
+
- **The AI service follows the service structure standard**: a facade
|
|
960
|
+
package plus `domains/` (llm, chat, voice) in place of one
|
|
961
|
+
flat directory of thirty-five modules and a 1,900-line service file.
|
|
962
|
+
|
|
963
|
+
- **The worker has one copy of each shape**: queue discovery, task
|
|
964
|
+
metadata, and lifecycle hooks live once and each backend registry is
|
|
965
|
+
the two answers that differ; worker health is a selector plus one
|
|
966
|
+
module per backend, and a dramatiq stack that failed lint and typecheck
|
|
967
|
+
unseen is clean again.
|
|
968
|
+
|
|
969
|
+
- **Forward-looking finance surfaces ask one schedule**: the projection,
|
|
970
|
+
the month strip, and the budget outlook consumed their own loops and
|
|
971
|
+
disagreed. `recurring/schedule.py` answers when a stream moves money,
|
|
972
|
+
including overdue occurrences carried onto today; one account-scope
|
|
973
|
+
rule and one read of a period's budget lines serve every surface.
|
|
974
|
+
|
|
975
|
+
- **Model vendors and labs are one thing now**: the catalog kept
|
|
976
|
+
"who serves a model" and "who made it" in separate tables, which
|
|
977
|
+
duplicated every organization that does both and could not say the
|
|
978
|
+
two OpenAIs were the same one. A single `llm_org` table holds every
|
|
979
|
+
organization, and `llm_org_role` records which hats each wears -
|
|
980
|
+
maker, server, or both. A model row now carries two org references,
|
|
981
|
+
`served_by_org_id` and `made_by_org_id`, and prices and deployments
|
|
982
|
+
key on the org. Who made a model is resolved from the public model
|
|
983
|
+
registry at sync time (following a derivative upload back to the
|
|
984
|
+
weights it came from) rather than guessed from the model id, so a
|
|
985
|
+
lab shipping under a new product name is picked up automatically
|
|
986
|
+
and a model nobody published stays honestly unmarked.
|
|
987
|
+
|
|
988
|
+
- Generated projects default to Python 3.14. The RAG option no longer pins
|
|
989
|
+
projects below 3.14 (onnxruntime now ships 3.14 wheels), so the interactive
|
|
990
|
+
RAG compatibility warning is gone. Any supported version (3.11 to 3.14) can
|
|
991
|
+
still be selected with `--python-version`.
|
|
992
|
+
|
|
993
|
+
### Fixed
|
|
994
|
+
|
|
995
|
+
- **`aegis update` left stale modules behind when the template moved
|
|
996
|
+
them**: the removal pass compared each dropped file byte-for-byte with
|
|
997
|
+
the old render, but init's post-gen step ruff-formats every file, so
|
|
998
|
+
any module the formatter had touched read as "customized" and was kept.
|
|
999
|
+
A 0.10.1 project updated to this release kept importable copies of the
|
|
1000
|
+
finance and AI packages at their old paths. Removal now looks through
|
|
1001
|
+
formatting the same way the sync loop does; a real edit is still kept
|
|
1002
|
+
and reported.
|
|
1003
|
+
The sync loop also compared against the unpruned template render, so
|
|
1004
|
+
an update from a local template checkout re-created storage, documents,
|
|
1005
|
+
and blog files in a project that selected none of them; both renders
|
|
1006
|
+
are now pruned the way init prunes before anything is compared.
|
|
1007
|
+
- **Re-importing a statement counted every row as an edit**: an empty
|
|
1008
|
+
memo cell was treated as a change against a missing memo, and the demo
|
|
1009
|
+
seed left `original_description` empty, which no bank import does.
|
|
1010
|
+
Empty and missing are the same absence now, and the seed writes the
|
|
1011
|
+
description. Also: the import read the uploaded file before the
|
|
1012
|
+
server finished writing it and reported "file did not arrive"; it
|
|
1013
|
+
waits for the file to settle. `seed-demo --clear` removes proposals
|
|
1014
|
+
aimed at the transactions it deletes instead of leaving orphans.
|
|
1015
|
+
|
|
1016
|
+
- **Projection and budget double-counted card spend**: card-account
|
|
1017
|
+
streams were charged against cash and the card payment charged again;
|
|
1018
|
+
budget envelopes did the same. Card streams are out of the cash walk
|
|
1019
|
+
and a card payment suppresses the envelopes for what was spent on it,
|
|
1020
|
+
scoped to the cards the payment actually settles.
|
|
1021
|
+
|
|
1022
|
+
- **A fresh finance-plus-AI stack had several dead ends**: the reference
|
|
1023
|
+
seed rolled back on a fresh database, `llm status` raised on an
|
|
1024
|
+
ambiguous join, a fresh Ollama install showed an empty model picker
|
|
1025
|
+
(local tags are registered at startup and an empty catalog is never
|
|
1026
|
+
cached), the Review tab raised on mount from an inherited abstract
|
|
1027
|
+
loader, and three ranked lists clipped names to a few characters.
|
|
1028
|
+
|
|
1029
|
+
- **Chat writes locked SQLite**: many sequential tool calls each
|
|
1030
|
+
committing on their own connection raced the chat run's connection;
|
|
1031
|
+
SQLite now waits for a busy writer instead of failing at once, and a
|
|
1032
|
+
whole card withdraws in one transaction.
|
|
1033
|
+
|
|
1034
|
+
- **Adding a service to an existing project converges on fresh-init
|
|
1035
|
+
output**: a parity test diffs every file the documents service owns
|
|
1036
|
+
between a fresh stack and an add, and found a module no manifest
|
|
1037
|
+
claimed and a test shipped to stacks that could not import it. The
|
|
1038
|
+
`add-service ai` tests named tables and files a merged refactor had
|
|
1039
|
+
renamed.
|
|
1040
|
+
|
|
1041
|
+
- **The model picker was slow for three separate reasons**: the
|
|
1042
|
+
catalog ran one database query per vendor sequentially, each opening
|
|
1043
|
+
its own session, with the result limit applied per vendor so a
|
|
1044
|
+
request for 200 models fetched far more; the client awaited its
|
|
1045
|
+
three API calls one after another before the dialog could open; and
|
|
1046
|
+
every model row was built as controls up front, including inside
|
|
1047
|
+
collapsed groups, then rebuilt from scratch on every filter change.
|
|
1048
|
+
The catalog is now one query with the per-vendor fairness cap
|
|
1049
|
+
applied after it, the client fetches concurrently and caches for the
|
|
1050
|
+
session, and group rows are built on first expand.
|
|
1051
|
+
|
|
1052
|
+
- **Models nobody could call appeared in the picker**: the cloud
|
|
1053
|
+
catalog lists local-runner entries under an `ollama/` prefix, which
|
|
1054
|
+
is a runner namespace rather than a callable vendor. Those rows were
|
|
1055
|
+
filed under the local runner's own vendor and passed the "models
|
|
1056
|
+
this install can call" gate, so uninstallable models (and cloud
|
|
1057
|
+
variants needing a key the install has no concept of) were offered.
|
|
1058
|
+
The local runner's catalog is now owned by the local sync alone.
|
|
1059
|
+
|
|
1060
|
+
- **The demo dataset confirmed shopping habits as bills**: the seed
|
|
1061
|
+
confirmed every stream the detector found, which promoted
|
|
1062
|
+
discretionary rhythms (a few jittered orders a month) into
|
|
1063
|
+
commitments. A bill that can be missed eventually is: the household
|
|
1064
|
+
read as delinquent on a shopping habit the moment one gap outran the
|
|
1065
|
+
grace window. Only fixed-amount streams and income are confirmed now.
|
|
1066
|
+
|
|
1067
|
+
- **Clearing demo data left insights pointing at deleted rows**: the
|
|
1068
|
+
teardown released transaction back-references but not the insights
|
|
1069
|
+
raised about those accounts, transactions, and streams, so the stream
|
|
1070
|
+
foreign key refused the delete.
|
|
1071
|
+
|
|
1072
|
+
- **A seeding process registered no reading tool**: the fixture loader
|
|
1073
|
+
force-imports the modules whose tools must exist before grants are
|
|
1074
|
+
written, and the durable-readings module was never added, so
|
|
1075
|
+
`record_reading` silently got no row in any process that seeds
|
|
1076
|
+
without building a chat agent.
|
|
1077
|
+
|
|
1078
|
+
- **Overdue occurrences vanished from the balance forecast**: the
|
|
1079
|
+
projection fast-forwarded every stream past occurrences dated before
|
|
1080
|
+
today, so a day-late paycheck read as "you are $5,000 poorer for the
|
|
1081
|
+
next two weeks" - the walk started from a balance the check never
|
|
1082
|
+
reached and charged it nowhere. A stream's latest missed occurrence
|
|
1083
|
+
now carries to today's line (money still in flight, both directions);
|
|
1084
|
+
older misses stay with the insight rules' missed-payment chase, and
|
|
1085
|
+
one-time bills are unchanged.
|
|
1086
|
+
|
|
1087
|
+
- **The match picker offered nothing for income**: a candidate already
|
|
1088
|
+
carrying a merchant was treated as "identified as someone else", and
|
|
1089
|
+
paycheck deposits always arrive pre-labelled with the payroll
|
|
1090
|
+
processor's merchant - which never equals the human-named stream.
|
|
1091
|
+
Category agreement now outranks the merchant mismatch, so a deposit
|
|
1092
|
+
sharing the stream's own category stays offered; bills keep their
|
|
1093
|
+
noise protection.
|
|
1094
|
+
|
|
1095
|
+
- Generated projects on the AI memory backend now pass lint, typecheck and
|
|
1096
|
+
tests: `memory_user` and the active-model selector no longer leak into the
|
|
1097
|
+
memory backend, and DB-only endpoint tests are gated out.
|
|
1098
|
+
|
|
1099
|
+
- RAG chunking: an overlap at or above the chunk size no longer loops
|
|
1100
|
+
forever (default overlap is a fifth of the chunk size, larger values are
|
|
1101
|
+
rejected), documents that fit in one chunk are kept whole, a min chunk
|
|
1102
|
+
size at or above the chunk size no longer filters everything, and
|
|
1103
|
+
`estimate_chunks` no longer overcounts by one. The RAG service tests use
|
|
1104
|
+
`RAGServiceConfig` instead of a stale settings mock.
|
|
1105
|
+
|
|
1106
|
+
### Removed
|
|
1107
|
+
|
|
1108
|
+
- **The Transfers review queue**: the suggested-transfer lane
|
|
1109
|
+
(detection's suggest threshold, the confirm/reject endpoints and
|
|
1110
|
+
service methods, the Review > Transfers sub-tab, and the transfer
|
|
1111
|
+
response schemas) is gone end to end. Transfer detection now pairs
|
|
1112
|
+
ONLY high-confidence matches, automatically; a fuzzy near-miss simply
|
|
1113
|
+
stays visible as ordinary spend/income instead of queueing for a
|
|
1114
|
+
review nobody performed. Auto-pairing, category-classified flagging,
|
|
1115
|
+
and adjustment-pair handling are unchanged.
|
|
1116
|
+
|
|
1117
|
+
## [0.10.1] - 2026-07-20
|
|
1118
|
+
|
|
1119
|
+
### Added
|
|
1120
|
+
|
|
1121
|
+
- **Neon-aware deploy**: `aegis deploy` now reads the project's Postgres
|
|
1122
|
+
provider. For Neon projects it skips the local `pg_dump`/`psql` backup and
|
|
1123
|
+
rollback-restore steps and states that database backup and recovery are
|
|
1124
|
+
managed by Neon (branches, point-in-time restore) instead of silently
|
|
1125
|
+
no-opping. Localized in all nine CLI languages.
|
|
1126
|
+
- **Orphan-proof organizations** (auth at the org level): deleting a user now
|
|
1127
|
+
soft-deletes any organization they solely own (a hard delete purges it,
|
|
1128
|
+
including its remaining invites and memberships), and a global admin can
|
|
1129
|
+
delete any organization. Together these guarantee an org can never be
|
|
1130
|
+
stranded with an unreachable owner. Cascaded deletions emit their own audit
|
|
1131
|
+
events alongside the user deletion.
|
|
1132
|
+
- **Canonical brand palette**: generated apps single-source their brand
|
|
1133
|
+
accents in a new `BrandPalette` (teal, dark teal, amber, red). The Flet
|
|
1134
|
+
theme and the Pulse-style colors derive from it, fixing a drifted amber,
|
|
1135
|
+
and a parity test keeps the aegis CLI palette locked to the same values.
|
|
1136
|
+
- **Finance service**: Plaid webhook tunnel auto-forwarding at startup,
|
|
1137
|
+
expanded connection sync, and richer account and liability API responses.
|
|
1138
|
+
|
|
1139
|
+
### Fixed
|
|
1140
|
+
|
|
1141
|
+
- **`aegis update` never silently overwrites**: files with no merge base
|
|
1142
|
+
(for example a service added after generation, or a failed old-template
|
|
1143
|
+
render) are now preserved and reported as conflicts with the template
|
|
1144
|
+
version written alongside as a `.rej` file, instead of being replaced with
|
|
1145
|
+
the template render. Files newly added by a template version are reliably
|
|
1146
|
+
created even when Copier fails to materialize them, so an update can no
|
|
1147
|
+
longer merge a new module's imports without shipping the module.
|
|
1148
|
+
- **`aegis add`/`remove` converge on fresh-init output**: the Dockerfile
|
|
1149
|
+
regenerates while pristine (the htmx `css-build` stage now tracks
|
|
1150
|
+
add/remove htmx in both directions); stack-conditional wiring files
|
|
1151
|
+
(auth gates on the metrics, task-history, and load-test endpoints, CLI
|
|
1152
|
+
subcommand registration, scheduler job registration) regenerate instead of
|
|
1153
|
+
staying stale; option-gated files (auth org files, htmx auth pages, the AI
|
|
1154
|
+
RAG tab) are copied only when the project's configuration enables them;
|
|
1155
|
+
and the model-and-migration skill plus the LLM catalog API are installed
|
|
1156
|
+
when the first service that needs them arrives.
|
|
1157
|
+
- **Regeneration fidelity**: ruff normalization during add/remove/update now
|
|
1158
|
+
runs under each file's real path so the generated project's
|
|
1159
|
+
per-file-ignores stay in force (`deps.py` re-export imports are no longer
|
|
1160
|
+
stripped), and regenerated files keep their trailing newline.
|
|
1161
|
+
- **Generated projects lint clean**: the stack matrix now fails on any ruff
|
|
1162
|
+
violation in generated output (previously only a ruff crash failed it),
|
|
1163
|
+
and the latent violations this exposed were fixed (a duplicate blog modal
|
|
1164
|
+
method, an uppercase local variable in the insights collector, an unused
|
|
1165
|
+
variable in the finance tests).
|
|
1166
|
+
- **AI service retrofit**: `aegis add-service ai` now ships the LLM catalog
|
|
1167
|
+
API, omits the RAG tab unless RAG is enabled, and a dashboard card click
|
|
1168
|
+
with no registered modal logs a warning naming the missing wiring instead
|
|
1169
|
+
of doing nothing.
|
|
1170
|
+
|
|
1171
|
+
## [0.10.0] - 2026-07-16
|
|
1172
|
+
|
|
1173
|
+
### Added
|
|
1174
|
+
|
|
1175
|
+
- **htmx web frontend** (`include_htmx`): an additive server-rendered web
|
|
1176
|
+
frontend component alongside the Flet Overseer, with a Tailwind build
|
|
1177
|
+
pipeline, landing page, and Docker wiring. Selection-gated like every
|
|
1178
|
+
component; existing stacks are untouched unless opted in.
|
|
1179
|
+
- **SnapTrade brokerage integration for the finance service**
|
|
1180
|
+
(`finance_snaptrade`): a second aggregator alongside Plaid, proving the
|
|
1181
|
+
provider abstraction, so a SnapTrade-connected brokerage lands in the same
|
|
1182
|
+
tables and UI with zero schema changes. Connect portal flow, authorization
|
|
1183
|
+
adoption, and polling sync for accounts, positions, and activities within
|
|
1184
|
+
SnapTrade's polling budget. Supports both commercial keys (per-user
|
|
1185
|
+
registration) and personal `PERS-` keys (the key is the user; no
|
|
1186
|
+
registration). Securities reported by multiple aggregators merge to one
|
|
1187
|
+
catalog row via FIGI/CUSIP/ISIN.
|
|
1188
|
+
- **Plaid live connectivity for the finance service** (`finance_plaid`):
|
|
1189
|
+
hosted-link connect flow, token exchange with AES-GCM-encrypted storage,
|
|
1190
|
+
account ingestion, cursor-based transactions sync, webhook handling, and a
|
|
1191
|
+
failure-isolated nightly sync job on the scheduler.
|
|
1192
|
+
- **Finance categorization and insights**: internal transfer detection and
|
|
1193
|
+
pairing (a card payment no longer double-counts as spend),
|
|
1194
|
+
recurring-stream detection, and "wasting money" insights, recomputed
|
|
1195
|
+
post-sync and nightly; plus investment trades in the register and account
|
|
1196
|
+
detail.
|
|
1197
|
+
- **Finance provider CLI commands**: `finance sync` refreshes every provider
|
|
1198
|
+
connection; `finance snaptrade connect` / `complete` drive the brokerage
|
|
1199
|
+
connect flow end to end from the terminal.
|
|
1200
|
+
- **AI chat kit** (`app/services/ai/chat_kit`): a reusable conversation
|
|
1201
|
+
toolkit for generated projects (agent wrapper, token budgeting, context
|
|
1202
|
+
assembly, persistent history), with a TaskIQ broker for background AI
|
|
1203
|
+
work.
|
|
1204
|
+
- **Agent skills**: generated projects now ship a selection-aware
|
|
1205
|
+
`CLAUDE.md` and `.claude/skills/` workflow skills gated by what the stack
|
|
1206
|
+
includes (add an endpoint, add a model and migration, add a scheduled job,
|
|
1207
|
+
protect an endpoint, change the stack). Skills ride
|
|
1208
|
+
`aegis add`/`remove`/`update`, so pre-skills projects gain them on update.
|
|
1209
|
+
The framework repo itself carries contributor workflow skills
|
|
1210
|
+
(add-service, add-component, i18n, release, template-dev) with a slimmed
|
|
1211
|
+
CLAUDE.md.
|
|
1212
|
+
- **Windows-friendly dev commands**: generated projects now ship a
|
|
1213
|
+
`[tool.poe.tasks]` table (via `poethepoet`) covering the `Makefile`
|
|
1214
|
+
workflow, so `uv run poe <target>` (e.g. `uv run poe serve`, `uv run poe
|
|
1215
|
+
check`) can be used on Windows, where `make` isn't a native binary (after
|
|
1216
|
+
a one-time `uv sync --all-extras`). `make` itself is unchanged for existing
|
|
1217
|
+
users. The bash-only `resolve-ports.sh` / `find-free-port.sh`
|
|
1218
|
+
port-resolution scripts are replaced by a single Python implementation
|
|
1219
|
+
(`scripts/resolve_ports.py`, `scripts/dev_tasks.py`) shared by both
|
|
1220
|
+
interfaces.
|
|
1221
|
+
|
|
1222
|
+
### Changed
|
|
1223
|
+
|
|
1224
|
+
- **Connections tab redesign**: one card anatomy for every connection
|
|
1225
|
+
(collapsible, dot-style status indicators matching the rest of the
|
|
1226
|
+
Overseer, destructive actions behind a kebab menu), a fluid two-column
|
|
1227
|
+
grid, a Connect menu on the Accounts sidebar and Connections tab, and in
|
|
1228
|
+
sandbox mode a Plaid card with click-to-copy test credentials. The All
|
|
1229
|
+
Accounts register now folds investment activity in with transactions.
|
|
1230
|
+
- **Disconnecting a provider connection is now instant**: local teardown
|
|
1231
|
+
happens in the request; the provider-side revoke runs after the response
|
|
1232
|
+
as a background task (it was always best-effort).
|
|
1233
|
+
- **Larger default Overseer cards**: component tiles get room to render
|
|
1234
|
+
their metric grids cleanly at first paint. Thanks @GrCOTE7.
|
|
1235
|
+
|
|
1236
|
+
### Fixed
|
|
1237
|
+
|
|
1238
|
+
- **Second browser tab no longer renders blank**: the Overseer's route
|
|
1239
|
+
reentrancy guard was process-wide, so two sessions routing at the same
|
|
1240
|
+
instant (a second tab, a reconnect) blocked each other and the loser
|
|
1241
|
+
never built its view. The guard is now session-scoped.
|
|
1242
|
+
- **Overseer modals no longer close on stray clicks**: detail popups are
|
|
1243
|
+
explicit-close only (backdrop click-through is opt-in), and every modal's
|
|
1244
|
+
Close is a themed button.
|
|
1245
|
+
- **Finance provider syncs can no longer erase catalog data**: partial
|
|
1246
|
+
payloads (e.g. an activities row without pricing) update only the fields
|
|
1247
|
+
they carry, and the destructive SnapTrade delete-and-re-register recovery
|
|
1248
|
+
is gated on the specific "user already exists" error code instead of any
|
|
1249
|
+
failure. An undecryptable stored credential no longer blocks disconnect.
|
|
1250
|
+
|
|
1251
|
+
## [0.9.1] - 2026-07-12
|
|
1252
|
+
|
|
1253
|
+
### Added
|
|
1254
|
+
|
|
1255
|
+
- **Finance service (experimental)** (`aegis init --services finance`,
|
|
1256
|
+
`aegis add-service finance`): a personal-finance aggregator service, marked
|
|
1257
|
+
experimental in this release (schema, APIs, and CLI surface may change
|
|
1258
|
+
between releases). Ships a 33-table schema
|
|
1259
|
+
covering currencies and FX rates, institutions and connections (inline
|
|
1260
|
+
AES-GCM-encrypted credentials), accounts, liabilities, valuations, balance
|
|
1261
|
+
and net-worth snapshots, and a transaction ledger with splits, transfer
|
|
1262
|
+
pairing, and two-lane provider/import dedup. Ships file import for CSV
|
|
1263
|
+
(Chase and Quicken profiles), OFX/QFX, and QIF, a net-worth service, API
|
|
1264
|
+
endpoints, seeded demo data, and a full test suite. Optional flags gate
|
|
1265
|
+
Plaid (`finance_plaid`) and SnapTrade (`finance_snaptrade`) integration
|
|
1266
|
+
scaffolding. Requires database and scheduler; recommends worker.
|
|
1267
|
+
- **Neon setup guide**: dedicated `components/database/neon.md` page in the
|
|
1268
|
+
tool docs, plus expanded database component docs.
|
|
1269
|
+
|
|
1270
|
+
### Fixed
|
|
1271
|
+
|
|
1272
|
+
- **`aegis update` no longer invents merge conflicts on pristine projects**:
|
|
1273
|
+
generated projects are ruff-formatted at init while template renders are
|
|
1274
|
+
raw Jinja output, so the byte-level 3-way merge misread formatting as user
|
|
1275
|
+
edits and conflicted wherever real template changes landed nearby. Python
|
|
1276
|
+
files are now compared and merged through ruff normalization, matching
|
|
1277
|
+
what the add/remove path already did, and the fallback path warns instead
|
|
1278
|
+
of degrading silently.
|
|
1279
|
+
- **ruff is now a runtime dependency**: installs without dev extras (uvx,
|
|
1280
|
+
pip) previously had no ruff binary, so every Python merge silently fell
|
|
1281
|
+
back to the raw byte-level path. A test now guards the dependency.
|
|
1282
|
+
- **`find-free-port.sh` false-busy on macOS**: Darwin allocates ephemeral
|
|
1283
|
+
source ports sequentially, so probing a port near a recent bind made
|
|
1284
|
+
connect() pick source == destination and fail with EINVAL, which read as
|
|
1285
|
+
busy for every candidate. The probe retries on EINVAL, keeping `make
|
|
1286
|
+
serve` port autodiscovery reliable in and near the ephemeral range.
|
|
1287
|
+
|
|
1288
|
+
## [0.9.0] - 2026-07-06
|
|
1289
|
+
|
|
1290
|
+
### Added
|
|
1291
|
+
|
|
1292
|
+
- **Neon Postgres provider**: new `postgres_provider` template question
|
|
1293
|
+
(`container` or `neon`). Local development keeps the Postgres container;
|
|
1294
|
+
production points at Neon, with pooler-safe connection arguments detected
|
|
1295
|
+
from the URL. No new dependencies. Guided and interactive init prompt for
|
|
1296
|
+
the provider on Postgres stacks.
|
|
1297
|
+
|
|
1298
|
+
### Fixed
|
|
1299
|
+
|
|
1300
|
+
- **`aegis update` backfills new template questions**: questions added by a
|
|
1301
|
+
newer template version (such as `postgres_provider`) are reconciled into
|
|
1302
|
+
the project's preserved answers file during update instead of being lost.
|
|
1303
|
+
- **Stripe webhook forwarder no longer stalls on chatty output**: the
|
|
1304
|
+
dev-mode stripe-cli forwarder drains stdout in the background so a full
|
|
1305
|
+
pipe cannot block secret capture, with timeout handling around reads.
|
|
1306
|
+
|
|
1307
|
+
### Changed
|
|
1308
|
+
|
|
1309
|
+
- **Dependency pins hardened**: `typer` pinned to 0.26.8 (newer releases
|
|
1310
|
+
fail at class-body evaluation on Python 3.11/3.12); `copier` held below
|
|
1311
|
+
9.15 (9.15 relocates the answers file out of the generated project, which
|
|
1312
|
+
breaks `aegis update`), with a dependabot ignore rule so the ceiling is
|
|
1313
|
+
not silently widened.
|
|
1314
|
+
|
|
1315
|
+
## [0.8.1] - 2026-06-28
|
|
1316
|
+
|
|
1317
|
+
### Added
|
|
1318
|
+
|
|
1319
|
+
- **Traffic monitor ("who's hammering you")**: Overseer's Backend modal gains a
|
|
1320
|
+
**Traffic** tab showing top source IPs by request volume over a rolling
|
|
1321
|
+
window, flagging any single source that dominates traffic (read-time
|
|
1322
|
+
dominance check). A `TrafficMiddleware` tallies requests per client IP
|
|
1323
|
+
(proxy-aware via `get_client_ip`), backed by Redis when the component is
|
|
1324
|
+
present (shared across the webserver/scheduler/worker processes, survives a
|
|
1325
|
+
restart for the bucket TTL) and an in-memory store otherwise (per-process,
|
|
1326
|
+
resets on restart) — the same Redis-or-dict fallback `CacheService` uses, so
|
|
1327
|
+
the live panel works with or without Redis. Recording is fire-and-forget so
|
|
1328
|
+
it never adds latency to the request path. Admin-gated `GET
|
|
1329
|
+
/api/v1/traffic/sources` (open on auth-less stacks, matching `/health/`).
|
|
1330
|
+
Tunable via `TRAFFIC_MONITOR_ENABLED`, `TRAFFIC_WINDOW_HOURS`,
|
|
1331
|
+
`TRAFFIC_DOMINANCE_SHARE`, `TRAFFIC_DOMINANCE_FLOOR`.
|
|
1332
|
+
|
|
1333
|
+
### Changed
|
|
1334
|
+
|
|
1335
|
+
- **Rolling deploy no longer depends on `docker-rollout`**: `aegis deploy
|
|
1336
|
+
--rolling` now rolls the webserver in-process, starting a second replica
|
|
1337
|
+
and polling its container HEALTHCHECK status (`healthy`/`unhealthy`/
|
|
1338
|
+
`starting`) instead of shelling out to the `docker-rollout` plugin. The
|
|
1339
|
+
container's own HEALTHCHECK budget (`start_period + retries x interval`)
|
|
1340
|
+
is the single source of truth, so a slow-but-healthy boot is never rolled
|
|
1341
|
+
back by a wall clock, and no extra tooling needs to be installed on the
|
|
1342
|
+
deploy host. `--rollout-timeout` is now only a long runaway-guard ceiling.
|
|
1343
|
+
|
|
1344
|
+
### Fixed
|
|
1345
|
+
|
|
1346
|
+
- **`aegis update` records the correct template commit**: the commit stamped
|
|
1347
|
+
into the answers file after an update could be wrong, which skewed the
|
|
1348
|
+
starting point of the next update; it is now derived and verified
|
|
1349
|
+
explicitly.
|
|
1350
|
+
|
|
1351
|
+
## [0.8.0] - 2026-06-15
|
|
1352
|
+
|
|
1353
|
+
### Added
|
|
1354
|
+
|
|
1355
|
+
- **Guided `aegis init`**: a full-screen, interactive setup is now the default
|
|
1356
|
+
for `aegis init`, walking through components and services with a live review
|
|
1357
|
+
screen before generating. `--quick` keeps the classic one-line prompts, and
|
|
1358
|
+
tiny terminals fall back to quick mode automatically. `--no-interactive` is
|
|
1359
|
+
unchanged.
|
|
1360
|
+
- **`tasks statistics` CLI command**: report overall scheduler statistics
|
|
1361
|
+
(total, active, and paused tasks) straight from the project CLI, mirroring the
|
|
1362
|
+
data behind the admin-gated `/scheduler/statistics` endpoint.
|
|
1363
|
+
- **Authenticated load testing**: `api-load-test run` now authenticates by
|
|
1364
|
+
default so auth-gated routes work without manual login. `--as-admin` mints a
|
|
1365
|
+
bearer token for an `ADMIN_USER_EMAILS` address, `--as-user` for a regular
|
|
1366
|
+
account, and `--anon` opts out.
|
|
1367
|
+
- **`HF_TOKEN` setting**: authenticates the RAG embedding-model download from the
|
|
1368
|
+
Hugging Face Hub, silencing the unauthenticated-request warning and raising
|
|
1369
|
+
rate limits. Optional; public models still download without it.
|
|
1370
|
+
|
|
1371
|
+
### Changed
|
|
1372
|
+
|
|
1373
|
+
- **CLI brand pass**: warnings are now amber (`#F5A623`, matching the frontend)
|
|
1374
|
+
instead of violet; status icons are monochrome text glyphs (`✓ ⚠ ✗ ℹ`) colored
|
|
1375
|
+
by state instead of emoji, so they align to the terminal grid and render
|
|
1376
|
+
consistently everywhere; the load-test report is themed (teal progress bar,
|
|
1377
|
+
dim labels).
|
|
1378
|
+
- **Quiet RAG model load**: the embedding model now loads without progress bars
|
|
1379
|
+
or log noise in CLI output.
|
|
1380
|
+
|
|
1381
|
+
### Fixed
|
|
1382
|
+
|
|
1383
|
+
- **gpt-5 family and o-series models in AI chat**: these reject any non-default
|
|
1384
|
+
`temperature` and returned a 400; temperature is now omitted for them so the
|
|
1385
|
+
streaming chat works.
|
|
1386
|
+
- **`llm` CLI commands now run**: `list`, `current`, `use`, and `info` were
|
|
1387
|
+
declared `async def`, which Typer never awaits, so they exited without doing
|
|
1388
|
+
anything; they now execute correctly.
|
|
1389
|
+
- **Deprecation warning** in the AI chat streaming path (`result.usage()` is a
|
|
1390
|
+
property in pydantic-ai 1.x, no longer a method).
|
|
1391
|
+
|
|
1392
|
+
### Documentation
|
|
1393
|
+
|
|
1394
|
+
- **Installation guide clarity**: explain what `uvx` is and that it ships with
|
|
1395
|
+
uv, distinguish `uvx` (ephemeral run) from `uv tool install` (persistent
|
|
1396
|
+
install), and correct the uvx version note (latest on first run, cached
|
|
1397
|
+
thereafter; `uvx aegis-stack@latest` to refresh). The CLI language section now
|
|
1398
|
+
lists all 9 supported locales (`en`, `de`, `es`, `fr`, `ja`, `ko`, `ru`, `zh`,
|
|
1399
|
+
`zh_Hant`) in a table instead of only Simplified Chinese.
|
|
1400
|
+
|
|
1401
|
+
## [0.7.0] - 2026-06-08
|
|
1402
|
+
|
|
1403
|
+
### Added
|
|
1404
|
+
|
|
1405
|
+
- **Rolling deploys**: zero-downtime, code-only `aegis deploy --rolling`. The
|
|
1406
|
+
webserver rolls over while still serving traffic and the worker queue is
|
|
1407
|
+
paused so in-flight jobs drain cleanly before workers restart.
|
|
1408
|
+
- **Free-port auto-discovery for `make serve`**: picks an open host port instead
|
|
1409
|
+
of failing with "address already in use" when the default is taken.
|
|
1410
|
+
- **CI/CD scaffolding in generated projects**: a GitHub Actions deploy workflow
|
|
1411
|
+
generated out of the box.
|
|
1412
|
+
- **Scheduler**: run a scheduled job on demand from the project CLI, plus
|
|
1413
|
+
scheduler fixes.
|
|
1414
|
+
- **Payment service**: Stripe-backed payment capability, with end-to-end tests.
|
|
1415
|
+
- **Performance middleware** in generated projects.
|
|
1416
|
+
|
|
1417
|
+
### Changed
|
|
1418
|
+
|
|
1419
|
+
- **`aegis update` is now idempotent**: after a clean update it advances the
|
|
1420
|
+
copier baseline (`_commit` / `_template_version`) so a re-run is a no-op and
|
|
1421
|
+
future updates don't re-apply changes that are already present.
|
|
1422
|
+
- `aegis update --to-version` accepts both PEP 440 (`0.7.0`) and tag (`v0.7.0`)
|
|
1423
|
+
forms.
|
|
1424
|
+
- Dependency: typer bumped to 0.26.7.
|
|
1425
|
+
|
|
1426
|
+
### Fixed
|
|
1427
|
+
|
|
1428
|
+
- Rolling deploy no longer rolls back a slow-but-healthy webserver: the
|
|
1429
|
+
docker-rollout wait is sized to the container's own healthcheck budget
|
|
1430
|
+
(`-t`), not a fixed 60s wall clock.
|
|
1431
|
+
- `make serve` port detection no longer reports a busy port as free under load
|
|
1432
|
+
(a timed-out probe is treated as in-use, not free).
|
|
1433
|
+
|
|
1434
|
+
---
|
|
1435
|
+
|
|
1436
|
+
## [0.4.0] - 2025-12-07
|
|
1437
|
+
|
|
1438
|
+
### Added
|
|
1439
|
+
|
|
1440
|
+
#### TaskIQ Worker Backend
|
|
1441
|
+
- Alternative worker backend using TaskIQ: `uvx aegis-stack init my-app --components "worker[taskiq]"`
|
|
1442
|
+
- Full feature parity with arq backend
|
|
1443
|
+
- TaskIQ-specific pool management, registry, and queue implementations
|
|
1444
|
+
- Load testing support for TaskIQ workers
|
|
1445
|
+
- Health monitoring integration for TaskIQ
|
|
1446
|
+
|
|
1447
|
+
### Fixed
|
|
1448
|
+
|
|
1449
|
+
- Windows compatibility: Removed Jinja2 conditional syntax from template filenames
|
|
1450
|
+
- Files with `{% if %}` in names caused OS Error 123 on Windows
|
|
1451
|
+
- Affected: `tasks.py` and `scheduler.py` in Cookiecutter templates
|
|
1452
|
+
|
|
1453
|
+
### Changed
|
|
1454
|
+
|
|
1455
|
+
- Release workflow now creates draft releases with auto-generated notes
|
|
1456
|
+
|
|
1457
|
+
---
|
|
1458
|
+
|
|
1459
|
+
## [0.3.4] - 2025-12-03
|
|
1460
|
+
|
|
1461
|
+
### Changed
|
|
1462
|
+
|
|
1463
|
+
- Docker build optimization: only build image for one service instead of all
|
|
1464
|
+
|
|
1465
|
+
---
|
|
1466
|
+
|
|
1467
|
+
## [0.3.3] - 2025-12-03
|
|
1468
|
+
|
|
1469
|
+
### Changed
|
|
1470
|
+
|
|
1471
|
+
- Version bump and dependency updates
|
|
1472
|
+
|
|
1473
|
+
---
|
|
1474
|
+
|
|
1475
|
+
## [0.3.2] - 2025-12-03
|
|
1476
|
+
|
|
1477
|
+
### Changed
|
|
1478
|
+
|
|
1479
|
+
- Version updates
|
|
1480
|
+
|
|
1481
|
+
---
|
|
1482
|
+
|
|
1483
|
+
## [0.3.1] - 2025-12-03
|
|
1484
|
+
|
|
1485
|
+
### Fixed
|
|
1486
|
+
|
|
1487
|
+
- Fixed `make serve` command by refactoring magic string handling
|
|
1488
|
+
|
|
1489
|
+
---
|
|
1490
|
+
|
|
1491
|
+
## [0.3.0] - 2025-12-01
|
|
1492
|
+
|
|
1493
|
+
### Major Features
|
|
1494
|
+
|
|
1495
|
+
#### Dashboard V2 - Complete UI Overhaul
|
|
1496
|
+
- Light and dark theme support with system preference detection
|
|
1497
|
+
- Component modal system - detailed info panels for each component:
|
|
1498
|
+
- Scheduler modal: Job stats, task history, next run times, cron expressions
|
|
1499
|
+
- Worker modal: Queue depth, job history, worker health, Redis connection
|
|
1500
|
+
- Redis modal: Memory usage, connection stats, key counts
|
|
1501
|
+
- Database modal: Table stats, connection pool info, query metrics
|
|
1502
|
+
- Backend modal: Route inspection, middleware detection, request stats
|
|
1503
|
+
- AI modal: Provider status, model info, conversation history
|
|
1504
|
+
- Auth modal: User count, session stats, JWT configuration
|
|
1505
|
+
- Frontend modal: Component tree, render stats, routing info
|
|
1506
|
+
- Modern card-based architecture with improved visual hierarchy
|
|
1507
|
+
- Enhanced health check visualization
|
|
1508
|
+
|
|
1509
|
+
#### New CLI Features
|
|
1510
|
+
- `aegis update` rollback support - automatically restore on failed updates
|
|
1511
|
+
- `--template-path` flag - use local template directories for development
|
|
1512
|
+
- `--verbose` flag - control output verbosity across all commands
|
|
1513
|
+
- Improved error messages with actionable suggestions for generation failures
|
|
1514
|
+
|
|
1515
|
+
#### Comms Service (New Service Layer)
|
|
1516
|
+
- Communication service foundation for inter-component messaging
|
|
1517
|
+
- Event-driven architecture support
|
|
1518
|
+
- Service discovery patterns
|
|
1519
|
+
|
|
1520
|
+
### Added
|
|
1521
|
+
|
|
1522
|
+
- Copier integration testing for template validation
|
|
1523
|
+
- CI/CD parallelization for faster builds
|
|
1524
|
+
- Commit badges in generated project READMEs
|
|
1525
|
+
- Scheduler environment variable configuration
|
|
1526
|
+
- Enhanced Overseer documentation
|
|
1527
|
+
|
|
1528
|
+
### Fixed
|
|
1529
|
+
|
|
1530
|
+
- `aegis update` now correctly targets HEAD instead of latest tag
|
|
1531
|
+
- Template path handling with `git+file://` URL format for Copier
|
|
1532
|
+
- Dashboard rendering edge cases with component state
|
|
1533
|
+
|
|
1534
|
+
---
|
|
1535
|
+
|
|
1536
|
+
## [0.2.1] - 2025-11-10
|
|
1537
|
+
|
|
1538
|
+
### Fixed
|
|
1539
|
+
|
|
1540
|
+
- Minor bug fixes and stability improvements
|
|
1541
|
+
- Added verbosity flag foundation
|
|
1542
|
+
|
|
1543
|
+
---
|
|
1544
|
+
|
|
1545
|
+
## [0.2.0] - 2025-11-05
|
|
1546
|
+
|
|
1547
|
+
### Major Features
|
|
1548
|
+
|
|
1549
|
+
#### Dynamic Component Management
|
|
1550
|
+
- **NEW**: `aegis add` command - Add components to existing projects post-generation
|
|
1551
|
+
- **NEW**: `aegis remove` command - Remove components from existing projects
|
|
1552
|
+
- **NEW**: `aegis update` command - Update projects with latest template changes
|
|
1553
|
+
- **NEW**: Copier template engine support with version tracking
|
|
1554
|
+
- Projects can now evolve after creation (Copier-based projects only)
|
|
1555
|
+
- Intelligent dependency resolution (e.g., worker auto-adds Redis, auth auto-adds database)
|
|
1556
|
+
- File-level component management without full project regeneration
|
|
1557
|
+
- Automatic dependency installation and code formatting after changes
|
|
1558
|
+
|
|
1559
|
+
#### Services Architecture (Business Logic Layer)
|
|
1560
|
+
- **NEW**: Authentication Service (`--services auth`)
|
|
1561
|
+
- JWT-based authentication with access and refresh tokens
|
|
1562
|
+
- User registration, login, and profile management
|
|
1563
|
+
- Password hashing with bcrypt
|
|
1564
|
+
- Protected API routes with FastAPI dependency injection
|
|
1565
|
+
- Database migrations via Alembic
|
|
1566
|
+
- User management CLI commands (`create-user`, `list-users`, `delete-user`, etc.)
|
|
1567
|
+
- Comprehensive test suite with 52+ authentication tests
|
|
1568
|
+
- Automatically includes database component
|
|
1569
|
+
|
|
1570
|
+
- **NEW**: AI Service (`--services ai`)
|
|
1571
|
+
- PydanticAI integration for type-safe AI interactions
|
|
1572
|
+
- Multi-provider support (OpenAI, Anthropic, Gemini, Groq)
|
|
1573
|
+
- Streaming chat responses with markdown rendering
|
|
1574
|
+
- Conversation memory and persistence to database
|
|
1575
|
+
- Interactive CLI chat interface with rich formatting
|
|
1576
|
+
- Health monitoring for AI provider connectivity
|
|
1577
|
+
- Environment variable configuration
|
|
1578
|
+
- API endpoints for chat operations
|
|
1579
|
+
|
|
1580
|
+
#### Enhanced Scheduler Component
|
|
1581
|
+
- **NEW**: SQLite-backed persistence option (`--scheduler-backend sqlite`)
|
|
1582
|
+
- Automatic database backup jobs when scheduler + database combined
|
|
1583
|
+
- Task monitoring API endpoints
|
|
1584
|
+
- Interactive CLI for viewing and managing scheduled tasks
|
|
1585
|
+
- Enhanced health checks with task execution tracking
|
|
1586
|
+
- Job statistics and history
|
|
1587
|
+
|
|
1588
|
+
### Added
|
|
1589
|
+
|
|
1590
|
+
#### CLI Commands
|
|
1591
|
+
- `aegis add` - Add components to existing projects
|
|
1592
|
+
- `aegis remove` - Remove components from projects
|
|
1593
|
+
- `aegis update` - Update projects with latest templates
|
|
1594
|
+
- `aegis services` - List available services
|
|
1595
|
+
- `aegis components` - Show detailed component information
|
|
1596
|
+
- `aegis version` - Display CLI version
|
|
1597
|
+
- Template engine selection via `--engine` flag (copier or cookiecutter)
|
|
1598
|
+
- Interactive service selection during project creation
|
|
1599
|
+
- Component backend selection (e.g., `--scheduler-backend sqlite`)
|
|
1600
|
+
|
|
1601
|
+
#### Developer Experience
|
|
1602
|
+
- **uvx support** - Run without installation (`uvx aegis-stack init my-project`)
|
|
1603
|
+
- Enhanced dashboard with component and service health cards:
|
|
1604
|
+
- Auth service card (user count, health status, database connection)
|
|
1605
|
+
- AI service card (provider status, model info, conversation stats)
|
|
1606
|
+
- Scheduler card (job stats, task history, next run times)
|
|
1607
|
+
- Worker card (queue stats, job history, worker health)
|
|
1608
|
+
- FastAPI card (route inspection, middleware detection)
|
|
1609
|
+
- Database card (table stats, connection pool info)
|
|
1610
|
+
- Redis card (memory usage, connection statistics)
|
|
1611
|
+
- Load testing CLI with visual progress indicators
|
|
1612
|
+
- FastAPI middleware and route inspection utilities
|
|
1613
|
+
- Rich terminal formatting for AI chat (markdown, code blocks, tables)
|
|
1614
|
+
- Comprehensive CLI tools for component management
|
|
1615
|
+
|
|
1616
|
+
#### Testing & Quality
|
|
1617
|
+
- Migrated from mypy to `ty` for faster type checking
|
|
1618
|
+
- Extensive test coverage for auth service (52+ tests)
|
|
1619
|
+
- Extensive test coverage for AI service
|
|
1620
|
+
- Template parity tests (Cookiecutter vs Copier output validation)
|
|
1621
|
+
- Component addition/removal integration tests
|
|
1622
|
+
- Auth integration tests (registration, login, JWT flows, protected routes)
|
|
1623
|
+
- AI conversation persistence tests
|
|
1624
|
+
- Middleware and route inspection tests
|
|
1625
|
+
- Extended test matrix for component combinations
|
|
1626
|
+
- Clean validation workflow for template testing
|
|
1627
|
+
|
|
1628
|
+
#### Documentation
|
|
1629
|
+
- Complete auth service documentation (API reference, CLI commands, integration guide, examples)
|
|
1630
|
+
- Complete AI service documentation (provider setup, API reference, CLI commands, integration)
|
|
1631
|
+
- Services architecture guide and dashboard integration docs
|
|
1632
|
+
- "Evolving Your Stack" guide - post-generation component management philosophy
|
|
1633
|
+
- Scheduler persistence and CLI documentation
|
|
1634
|
+
- Enhanced installation guide (uvx, uv tool, pip methods)
|
|
1635
|
+
- Integration patterns documentation
|
|
1636
|
+
- Component-specific CLAUDE.md files for AI development context
|
|
1637
|
+
- Release process documentation with PyPI/TestPyPI workflow
|
|
1638
|
+
|
|
1639
|
+
#### Infrastructure
|
|
1640
|
+
- GitHub Actions workflow for automated PyPI releases
|
|
1641
|
+
- TestPyPI pre-flight testing workflow
|
|
1642
|
+
- PyPI Trusted Publishing (OIDC, no API tokens)
|
|
1643
|
+
- Template versioning and compatibility tracking
|
|
1644
|
+
- Copier template infrastructure with `.copier-answers.yml`
|
|
1645
|
+
- Post-generation task system refactored
|
|
1646
|
+
- Component file management utilities
|
|
1647
|
+
- Service dependency resolver
|
|
1648
|
+
- Manual updater for Cookiecutter-based projects
|
|
1649
|
+
|
|
1650
|
+
### Changed
|
|
1651
|
+
|
|
1652
|
+
- **Default template engine** is now Copier (Cookiecutter still fully supported via `--engine cookiecutter`)
|
|
1653
|
+
- Type checker migrated from mypy to `ty` for improved performance
|
|
1654
|
+
- Enhanced dashboard UI with modern card-based architecture
|
|
1655
|
+
- Improved component dependency resolution logic
|
|
1656
|
+
- Better error messages with actionable suggestions
|
|
1657
|
+
- Scheduler component refactored with service layer separation
|
|
1658
|
+
- Worker health check registration improved
|
|
1659
|
+
- Database health checks enhanced with connection pool monitoring
|
|
1660
|
+
- Restructured CLI command organization into separate modules
|
|
1661
|
+
- Dashboard rendering optimizations
|
|
1662
|
+
|
|
1663
|
+
### Fixed
|
|
1664
|
+
|
|
1665
|
+
- Dashboard rendering bugs with component state management
|
|
1666
|
+
- Worker type annotations and kwargs handling
|
|
1667
|
+
- arq worker info retrieval issues
|
|
1668
|
+
- Scheduler component integration edge cases
|
|
1669
|
+
- Database card rendering and refactoring issues
|
|
1670
|
+
- Redis component card state updates
|
|
1671
|
+
- FastAPI middleware detection for edge cases
|
|
1672
|
+
- Template generation with various component combinations
|
|
1673
|
+
- Health check caching race conditions
|
|
1674
|
+
|
|
1675
|
+
### Security
|
|
1676
|
+
|
|
1677
|
+
- JWT-based authentication with secure token handling
|
|
1678
|
+
- Password hashing with bcrypt (cost factor 12)
|
|
1679
|
+
- Protected API routes with dependency injection patterns
|
|
1680
|
+
- Secure user model implementation
|
|
1681
|
+
- API key handling for AI providers
|
|
1682
|
+
- Environment variable-based secrets management
|
|
1683
|
+
|
|
1684
|
+
### Performance
|
|
1685
|
+
|
|
1686
|
+
- Faster type checking with `ty` replacing mypy
|
|
1687
|
+
- Optimized component dependency resolution
|
|
1688
|
+
- Improved dashboard rendering performance
|
|
1689
|
+
- Enhanced health check caching strategies
|
|
1690
|
+
- Reduced template generation time
|
|
1691
|
+
|
|
1692
|
+
### Statistics
|
|
1693
|
+
|
|
1694
|
+
- 62 pull requests merged since v0.1.0
|
|
1695
|
+
- 456 files changed (72,387 insertions, 4,590 deletions)
|
|
1696
|
+
- 8 new CLI commands
|
|
1697
|
+
- 2 new services (auth, AI)
|
|
1698
|
+
- 13+ new documentation files
|
|
1699
|
+
- 100+ new test files
|
|
1700
|
+
- 10 weeks of development (Aug 28 - Nov 5, 2025)
|
|
1701
|
+
|
|
1702
|
+
### Highlights for Users
|
|
1703
|
+
|
|
1704
|
+
1. **Your stack can now evolve** - Add/remove components after project creation
|
|
1705
|
+
2. **Authentication ready** - Production JWT auth with one command (`--services auth`)
|
|
1706
|
+
3. **AI-ready** - Multi-provider AI integration built-in (`--services ai`)
|
|
1707
|
+
4. **No installation needed** - Run with `uvx aegis-stack init my-project`
|
|
1708
|
+
5. **Scheduler persistence** - SQLite-backed job storage for reliability
|
|
1709
|
+
6. **Enhanced DX** - Rich CLI tools, better dashboard, comprehensive health monitoring
|
|
1710
|
+
|
|
1711
|
+
### Notes
|
|
1712
|
+
|
|
1713
|
+
- Copier is now the default template engine, enabling `aegis add/remove/update` commands
|
|
1714
|
+
- Both Copier and Cookiecutter templates are fully supported
|
|
1715
|
+
- Auth service automatically includes Alembic for database migrations
|
|
1716
|
+
- AI service supports OpenAI, Anthropic, Gemini, and Groq providers
|
|
1717
|
+
- Scheduler persistence requires database component
|
|
1718
|
+
- Template version compatibility tracked in `.copier-answers.yml` (Copier projects)
|
|
1719
|
+
- Worker component still requires explicit Redis component specification
|
|
1720
|
+
|
|
1721
|
+
## [0.1.0] - 2025-08-27
|
|
1722
|
+
|
|
1723
|
+
### Added
|
|
1724
|
+
- Initial release of Aegis Stack CLI tool
|
|
1725
|
+
- Database component with SQLite/SQLModel ORM integration
|
|
1726
|
+
- FastAPI backend with health monitoring system
|
|
1727
|
+
- Flet frontend for web and desktop applications
|
|
1728
|
+
- Worker component with arq/Redis for background tasks
|
|
1729
|
+
- Scheduler component with APScheduler
|
|
1730
|
+
- Docker containerization support
|
|
1731
|
+
- Comprehensive testing infrastructure with pytest
|
|
1732
|
+
- Type checking with mypy and pydantic plugin
|
|
1733
|
+
- Auto-formatting with ruff
|
|
1734
|
+
- Project generation via `aegis init` command
|
|
1735
|
+
- Component dependency resolution system
|
|
1736
|
+
- Database health checks with detailed metrics
|
|
1737
|
+
- Transaction rollback testing fixtures
|
|
1738
|
+
- Template validation system
|
|
1739
|
+
|
|
1740
|
+
### Fixed
|
|
1741
|
+
- Database test isolation issues
|
|
1742
|
+
- Type checking for Pydantic models with mypy plugin
|
|
1743
|
+
- Template linting issues in generated projects
|
|
1744
|
+
|
|
1745
|
+
### Components
|
|
1746
|
+
- Backend (FastAPI) - Always included
|
|
1747
|
+
- Frontend (Flet) - Always included
|
|
1748
|
+
- Database (SQLite/SQLModel) - Optional
|
|
1749
|
+
- Worker (arq/Redis) - Optional
|
|
1750
|
+
- Scheduler (APScheduler) - Optional
|
|
1751
|
+
|
|
1752
|
+
[0.4.0]: https://github.com/lbedner/aegis-stack/compare/v0.3.4...v0.4.0
|
|
1753
|
+
[0.3.4]: https://github.com/lbedner/aegis-stack/compare/v0.3.3...v0.3.4
|
|
1754
|
+
[0.3.3]: https://github.com/lbedner/aegis-stack/compare/v0.3.2...v0.3.3
|
|
1755
|
+
[0.3.2]: https://github.com/lbedner/aegis-stack/compare/v0.3.1...v0.3.2
|
|
1756
|
+
[0.3.1]: https://github.com/lbedner/aegis-stack/compare/v0.3.0...v0.3.1
|
|
1757
|
+
[0.3.0]: https://github.com/lbedner/aegis-stack/compare/v0.2.1...v0.3.0
|
|
1758
|
+
[0.2.1]: https://github.com/lbedner/aegis-stack/compare/v0.2.0...v0.2.1
|
|
1759
|
+
[0.2.0]: https://github.com/lbedner/aegis-stack/compare/v0.1.0...v0.2.0
|
|
1760
|
+
[0.1.0]: https://github.com/lbedner/aegis-stack/releases/tag/v0.1.0
|