aegis-stack 0.2.0rc2__py3-none-any.whl

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.
Files changed (392) hide show
  1. aegis/__init__.py +5 -0
  2. aegis/__main__.py +51 -0
  3. aegis/cli/__init__.py +6 -0
  4. aegis/cli/callbacks.py +114 -0
  5. aegis/cli/interactive.py +611 -0
  6. aegis/cli/utils.py +70 -0
  7. aegis/cli/validators.py +34 -0
  8. aegis/commands/__init__.py +6 -0
  9. aegis/commands/add.py +353 -0
  10. aegis/commands/add_service.py +332 -0
  11. aegis/commands/components.py +35 -0
  12. aegis/commands/init.py +370 -0
  13. aegis/commands/remove.py +227 -0
  14. aegis/commands/services.py +52 -0
  15. aegis/commands/update.py +252 -0
  16. aegis/commands/version.py +12 -0
  17. aegis/config/__init__.py +1 -0
  18. aegis/config/shared_files.py +136 -0
  19. aegis/core/CLAUDE.md +377 -0
  20. aegis/core/__init__.py +6 -0
  21. aegis/core/component_files.py +228 -0
  22. aegis/core/component_utils.py +220 -0
  23. aegis/core/components.py +127 -0
  24. aegis/core/copier_manager.py +315 -0
  25. aegis/core/copier_updater.py +475 -0
  26. aegis/core/dependency_resolver.py +119 -0
  27. aegis/core/manual_updater.py +554 -0
  28. aegis/core/post_gen_tasks.py +547 -0
  29. aegis/core/service_resolver.py +261 -0
  30. aegis/core/services.py +157 -0
  31. aegis/core/template_generator.py +266 -0
  32. aegis/core/version_compatibility.py +259 -0
  33. aegis/templates/CLAUDE.md +591 -0
  34. aegis/templates/cookiecutter-aegis-project/cookiecutter.json +39 -0
  35. aegis/templates/cookiecutter-aegis-project/hooks/post_gen_project.py +214 -0
  36. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.dockerignore +71 -0
  37. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.env.example.j2 +130 -0
  38. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.gitignore +131 -0
  39. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Dockerfile +53 -0
  40. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Makefile +236 -0
  41. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/README.md.j2 +196 -0
  42. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/alembic.ini.j2 +111 -0
  43. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/env.py.j2 +91 -0
  44. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/script.py.mako +25 -0
  45. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/versions/001_initial_auth.py.j2 +51 -0
  46. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/__init__.py +5 -0
  47. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/__init__.py +6 -0
  48. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/ai.py.j2 +700 -0
  49. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/ai_rendering.py +361 -0
  50. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/auth.py.j2 +253 -0
  51. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/health.py.j2 +419 -0
  52. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/load_test.py.j2 +656 -0
  53. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/main.py.j2 +65 -0
  54. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/marko_terminal_renderer.py +489 -0
  55. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/tasks.py.j2 +328 -0
  56. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/{% if cookiecutter.include_scheduler == /"yes/" %}tasks.py{% endif %}" +340 -0
  57. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/__init__.py +0 -0
  58. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/__init__.py +0 -0
  59. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/ai/__init__.py +8 -0
  60. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/ai/router.py +329 -0
  61. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/auth/__init__.py +1 -0
  62. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/auth/router.py +64 -0
  63. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/deps.py +58 -0
  64. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/health.py +163 -0
  65. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/models.py.j2 +280 -0
  66. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/routing.py.j2 +32 -0
  67. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/scheduler.py.j2 +121 -0
  68. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/worker.py.j2 +478 -0
  69. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/hooks.py +144 -0
  70. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/main.py +31 -0
  71. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/__init__.py +1 -0
  72. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/cors.py +20 -0
  73. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/__init__.py +1 -0
  74. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/cleanup.py +14 -0
  75. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/__init__.py +1 -0
  76. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/component_health.py.j2 +418 -0
  77. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/database_init.py.j2 +83 -0
  78. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/__init__.py +5 -0
  79. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/__init__.py +27 -0
  80. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/table.py +78 -0
  81. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/text.py +142 -0
  82. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/__init__.py.j2 +47 -0
  83. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/ai_card.py +287 -0
  84. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/auth_card.py +198 -0
  85. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/base_card.py +256 -0
  86. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/card_factory.py +227 -0
  87. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/card_utils.py +333 -0
  88. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/database_card.py +420 -0
  89. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/fastapi_card.py +328 -0
  90. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/flet_card.py +267 -0
  91. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/redis_card.py +322 -0
  92. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/scheduler_card.py +352 -0
  93. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/services_card.py +233 -0
  94. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/worker_card.py +684 -0
  95. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/main.py.j2 +653 -0
  96. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/theme.py +48 -0
  97. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/__init__.py +1 -0
  98. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/main.py.j2 +156 -0
  99. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/CLAUDE.md.j2 +213 -0
  100. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/__init__.py +6 -0
  101. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/constants.py.j2 +30 -0
  102. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/pools.py +97 -0
  103. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/__init__.py +1 -0
  104. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/load_test.py +55 -0
  105. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/media.py +49 -0
  106. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/system.py +44 -0
  107. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/registry.py +139 -0
  108. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/__init__.py +120 -0
  109. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/load_tasks.py +507 -0
  110. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/simple_system_tasks.py +33 -0
  111. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/system_tasks.py +281 -0
  112. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/config.py.j2 +178 -0
  113. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/constants.py +58 -0
  114. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/db.py.j2 +176 -0
  115. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/log.py +92 -0
  116. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/security.py +62 -0
  117. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/__init__.py +1 -0
  118. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/webserver.py +40 -0
  119. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/{% if cookiecutter.include_scheduler == /"yes/" %}scheduler.py{% endif %}" +21 -0
  120. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/__init__.py +0 -0
  121. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/main.py +62 -0
  122. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/models/__init__.py +1 -0
  123. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/models/user.py +44 -0
  124. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/py.typed +0 -0
  125. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/__init__.py +1 -0
  126. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/__init__.py +8 -0
  127. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/config.py +130 -0
  128. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/conversation.py +213 -0
  129. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/health.py +96 -0
  130. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/models.py +229 -0
  131. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/providers.py +370 -0
  132. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/service.py +388 -0
  133. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/__init__.py +1 -0
  134. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/auth_service.py +41 -0
  135. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/health.py +164 -0
  136. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/user_service.py +83 -0
  137. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/middleware_inspector.py.j2 +223 -0
  138. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/models.py.j2 +70 -0
  139. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/route_inspector.py.j2 +155 -0
  140. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test.py +679 -0
  141. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test_models.py +266 -0
  142. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/__init__.py.j2 +21 -0
  143. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/models.py.j2 +119 -0
  144. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/scheduled_task_manager.py.j2 +273 -0
  145. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/task_monitor.py.j2 +189 -0
  146. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/__init__.py +15 -0
  147. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/models.py +26 -0
  148. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/__init__.py +52 -0
  149. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/alerts.py +94 -0
  150. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/backup.py.j2 +119 -0
  151. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/health.py.j2 +1333 -0
  152. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/models.py +243 -0
  153. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/ui.py +52 -0
  154. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto-dark.png +0 -0
  155. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto-square-backup.png +0 -0
  156. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto.png +0 -0
  157. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.dockerignore +71 -0
  158. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.env.example.j2 +64 -0
  159. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.gitignore +131 -0
  160. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/Dockerfile +53 -0
  161. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/Makefile +211 -0
  162. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/README.md.j2 +172 -0
  163. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/docker-compose.yml.j2 +78 -0
  164. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/mkdocs.yml.j2 +62 -0
  165. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/pyproject.toml.j2 +120 -0
  166. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/uv.lock +1673 -0
  167. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docker-compose.yml.j2 +200 -0
  168. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/api.md +191 -0
  169. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/components/scheduler.md +0 -0
  170. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/components/scheduler.md.j2 +621 -0
  171. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/development.md +215 -0
  172. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/health.md +240 -0
  173. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/javascripts/mermaid-config.js +62 -0
  174. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/stylesheets/mermaid.css +95 -0
  175. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/mkdocs.yml.j2 +62 -0
  176. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/pyproject.toml.j2 +131 -0
  177. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh +87 -0
  178. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh.j2 +93 -0
  179. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/gen_docs.py +16 -0
  180. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/__init__.py +1 -0
  181. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_auth_endpoints.py.j2 +307 -0
  182. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_health_endpoints.py.j2 +262 -0
  183. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_scheduler_endpoints.py.j2 +214 -0
  184. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_worker_endpoints.py.j2 +165 -0
  185. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/cli/test_ai_rendering.py +427 -0
  186. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/cli/test_conversation_memory.py +465 -0
  187. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/components/test_scheduler.py +43 -0
  188. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/conftest.py.j2 +195 -0
  189. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/__init__.py +1 -0
  190. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/__init__.py +1 -0
  191. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/conftest.py +78 -0
  192. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_health.py +157 -0
  193. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_models.py +164 -0
  194. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_service.py +198 -0
  195. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_auth_integration.py.j2 +528 -0
  196. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_component_integration.py.j2 +387 -0
  197. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_conversation_persistence.py +342 -0
  198. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_health_logic.py.j2 +663 -0
  199. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_models.py +619 -0
  200. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_service.py +603 -0
  201. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_middleware_inspector.py.j2 +248 -0
  202. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_scheduled_task_manager.py.j2 +292 -0
  203. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_system_service.py +98 -0
  204. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_worker_health_registration.py.j2 +257 -0
  205. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/test_core.py +49 -0
  206. aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/uv.lock +1673 -0
  207. aegis/templates/copier-aegis-project/{{ project_slug }}/.copier-answers.yml.jinja +21 -0
  208. aegis/templates/copier-aegis-project/{{ project_slug }}/.dockerignore +71 -0
  209. aegis/templates/copier-aegis-project/{{ project_slug }}/.env.example.jinja +130 -0
  210. aegis/templates/copier-aegis-project/{{ project_slug }}/.gitignore +131 -0
  211. aegis/templates/copier-aegis-project/{{ project_slug }}/Dockerfile +53 -0
  212. aegis/templates/copier-aegis-project/{{ project_slug }}/Makefile.jinja +236 -0
  213. aegis/templates/copier-aegis-project/{{ project_slug }}/README.md.jinja +196 -0
  214. aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/alembic.ini.jinja +111 -0
  215. aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/env.py.jinja +91 -0
  216. aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/script.py.mako +25 -0
  217. aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/versions/001_initial_auth.py.jinja +51 -0
  218. aegis/templates/copier-aegis-project/{{ project_slug }}/app/__init__.py.jinja +5 -0
  219. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/__init__.py.jinja +6 -0
  220. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai.py.jinja +700 -0
  221. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai_rendering.py +360 -0
  222. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/auth.py.jinja +253 -0
  223. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/health.py.jinja +419 -0
  224. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/load_test.py.jinja +656 -0
  225. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/main.py.jinja +65 -0
  226. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/marko_terminal_renderer.py +489 -0
  227. aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/tasks.py.jinja +328 -0
  228. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/__init__.py +0 -0
  229. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/__init__.py +0 -0
  230. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/__init__.py +8 -0
  231. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/router.py +329 -0
  232. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/__init__.py +1 -0
  233. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/router.py +64 -0
  234. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/deps.py +58 -0
  235. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/health.py.jinja +163 -0
  236. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/models.py.jinja +280 -0
  237. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/routing.py.jinja +32 -0
  238. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/scheduler.py.jinja +121 -0
  239. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/worker.py.jinja +478 -0
  240. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/hooks.py +144 -0
  241. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/main.py +31 -0
  242. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/__init__.py +1 -0
  243. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/cors.py +20 -0
  244. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/__init__.py +1 -0
  245. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/cleanup.py +14 -0
  246. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/__init__.py +1 -0
  247. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/component_health.py.jinja +418 -0
  248. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/database_init.py.jinja +83 -0
  249. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/__init__.py +5 -0
  250. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/__init__.py +27 -0
  251. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/table.py +78 -0
  252. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/text.py +142 -0
  253. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/__init__.py.jinja +47 -0
  254. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/ai_card.py +287 -0
  255. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/auth_card.py +198 -0
  256. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/base_card.py +256 -0
  257. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_factory.py +227 -0
  258. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils.py +333 -0
  259. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/database_card.py +420 -0
  260. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/fastapi_card.py +328 -0
  261. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/flet_card.py +267 -0
  262. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/redis_card.py +322 -0
  263. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/scheduler_card.py +352 -0
  264. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/services_card.py +233 -0
  265. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/worker_card.py +684 -0
  266. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/main.py.jinja +653 -0
  267. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/theme.py +48 -0
  268. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/__init__.py +1 -0
  269. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/main.py.jinja +156 -0
  270. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/CLAUDE.md.jinja +213 -0
  271. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/__init__.py +6 -0
  272. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/constants.py.jinja +30 -0
  273. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/pools.py +97 -0
  274. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/__init__.py +1 -0
  275. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/load_test.py +55 -0
  276. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/media.py +49 -0
  277. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/system.py +44 -0
  278. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry.py +139 -0
  279. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/__init__.py +120 -0
  280. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/load_tasks.py +507 -0
  281. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/simple_system_tasks.py +33 -0
  282. aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/system_tasks.py +281 -0
  283. aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/config.py.jinja +178 -0
  284. aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/constants.py +58 -0
  285. aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/db.py.jinja +176 -0
  286. aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/log.py +92 -0
  287. aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/security.py +62 -0
  288. aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/__init__.py +1 -0
  289. aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/scheduler.py.jinja +21 -0
  290. aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/webserver.py +39 -0
  291. aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/__init__.py +0 -0
  292. aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/main.py +61 -0
  293. aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/__init__.py +1 -0
  294. aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/user.py +44 -0
  295. aegis/templates/copier-aegis-project/{{ project_slug }}/app/py.typed +0 -0
  296. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/__init__.py +1 -0
  297. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/__init__.py +8 -0
  298. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/config.py +130 -0
  299. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/conversation.py +213 -0
  300. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/health.py +96 -0
  301. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models.py +229 -0
  302. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/providers.py.jinja +370 -0
  303. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service.py +387 -0
  304. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/__init__.py +1 -0
  305. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/auth_service.py +40 -0
  306. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/health.py +162 -0
  307. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_service.py +82 -0
  308. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/middleware_inspector.py.jinja +223 -0
  309. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/models.py.jinja +70 -0
  310. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/route_inspector.py.jinja +155 -0
  311. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test.py +678 -0
  312. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test_models.py +265 -0
  313. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/__init__.py.jinja +21 -0
  314. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/models.py.jinja +119 -0
  315. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/scheduled_task_manager.py.jinja +273 -0
  316. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/task_monitor.py.jinja +189 -0
  317. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/__init__.py +15 -0
  318. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/models.py +26 -0
  319. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/__init__.py +52 -0
  320. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/alerts.py +94 -0
  321. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/backup.py.jinja +119 -0
  322. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health.py.jinja +1333 -0
  323. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/models.py +243 -0
  324. aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/ui.py +52 -0
  325. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57223!aegis-manifesto.png +0 -0
  326. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57224!aegis-manifesto-dark.png +0 -0
  327. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57225!aegis-manifesto-square-backup.png +0 -0
  328. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57533!aegis-manifesto.png +0 -0
  329. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57534!aegis-manifesto-dark.png +0 -0
  330. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57538!aegis-manifesto-square-backup.png +0 -0
  331. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57897!aegis-manifesto.png +0 -0
  332. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57898!aegis-manifesto-dark.png +0 -0
  333. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57904!aegis-manifesto-square-backup.png +0 -0
  334. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58315!aegis-manifesto.png +0 -0
  335. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58316!aegis-manifesto-dark.png +0 -0
  336. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58324!aegis-manifesto-square-backup.png +0 -0
  337. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58837!aegis-manifesto.png +0 -0
  338. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58838!aegis-manifesto-dark.png +0 -0
  339. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58849!aegis-manifesto-square-backup.png +0 -0
  340. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-dark.png +0 -0
  341. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-square-backup.png +0 -0
  342. aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto.png +0 -0
  343. aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/.env.example.jinja +64 -0
  344. aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/README.md.jinja +172 -0
  345. aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/docker-compose.yml.jinja +78 -0
  346. aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/mkdocs.yml.jinja +62 -0
  347. aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/pyproject.toml.jinja +120 -0
  348. aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.yml.jinja +200 -0
  349. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/api.md.jinja +191 -0
  350. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/scheduler.md +0 -0
  351. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/scheduler.md.jinja +621 -0
  352. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/development.md.jinja +215 -0
  353. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/health.md.jinja +240 -0
  354. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/javascripts/mermaid-config.js +62 -0
  355. aegis/templates/copier-aegis-project/{{ project_slug }}/docs/stylesheets/mermaid.css +95 -0
  356. aegis/templates/copier-aegis-project/{{ project_slug }}/mkdocs.yml.jinja +62 -0
  357. aegis/templates/copier-aegis-project/{{ project_slug }}/pyproject.toml.jinja +131 -0
  358. aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh +87 -0
  359. aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh.jinja +93 -0
  360. aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/gen_docs.py +16 -0
  361. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/__init__.py +1 -0
  362. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_auth_endpoints.py.jinja +307 -0
  363. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_health_endpoints.py.jinja +262 -0
  364. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_scheduler_endpoints.py.jinja +214 -0
  365. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_worker_endpoints.py.jinja +165 -0
  366. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_ai_rendering.py +427 -0
  367. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_conversation_memory.py +465 -0
  368. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_scheduler.py +43 -0
  369. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/conftest.py.jinja +195 -0
  370. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/__init__.py +1 -0
  371. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/__init__.py +1 -0
  372. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/conftest.py +78 -0
  373. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_health.py +157 -0
  374. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_models.py +164 -0
  375. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_service.py +198 -0
  376. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_auth_integration.py.jinja +528 -0
  377. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_component_integration.py.jinja +387 -0
  378. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_conversation_persistence.py +342 -0
  379. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_health_logic.py.jinja +663 -0
  380. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_models.py +619 -0
  381. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_service.py +603 -0
  382. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_middleware_inspector.py.jinja +248 -0
  383. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_scheduled_task_manager.py.jinja +292 -0
  384. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_system_service.py +98 -0
  385. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_worker_health_registration.py.jinja +257 -0
  386. aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_core.py +49 -0
  387. aegis/templates/copier-aegis-project/{{ project_slug }}/uv.lock +1673 -0
  388. aegis_stack-0.2.0rc2.dist-info/METADATA +165 -0
  389. aegis_stack-0.2.0rc2.dist-info/RECORD +392 -0
  390. aegis_stack-0.2.0rc2.dist-info/WHEEL +4 -0
  391. aegis_stack-0.2.0rc2.dist-info/entry_points.txt +3 -0
  392. aegis_stack-0.2.0rc2.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,165 @@
1
+ Metadata-Version: 2.4
2
+ Name: aegis-stack
3
+ Version: 0.2.0rc2
4
+ Summary: A production-ready Python foundation for builders who refuse to wait. Try: uvx aegis-stack init my-project
5
+ Project-URL: Homepage, https://lbedner.github.io/aegis-stack/
6
+ Project-URL: Documentation, https://lbedner.github.io/aegis-stack/
7
+ Project-URL: Repository, https://github.com/lbedner/aegis-stack.git
8
+ Project-URL: Issues, https://github.com/lbedner/aegis-stack/issues
9
+ Author-email: Leonard Bedner <gamecoder99@gmail.com>
10
+ License: MIT
11
+ License-File: LICENSE
12
+ Keywords: boilerplate,cli,cookiecutter,database,fastapi,generator,python,scaffold,scheduler,stack,template,uvx,worker
13
+ Classifier: Development Status :: 4 - Beta
14
+ Classifier: Environment :: Console
15
+ Classifier: Intended Audience :: Developers
16
+ Classifier: License :: OSI Approved :: MIT License
17
+ Classifier: Natural Language :: English
18
+ Classifier: Operating System :: OS Independent
19
+ Classifier: Programming Language :: Python :: 3
20
+ Classifier: Programming Language :: Python :: 3.11
21
+ Classifier: Programming Language :: Python :: 3.12
22
+ Classifier: Programming Language :: Python :: 3.13
23
+ Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers
24
+ Classifier: Topic :: Software Development :: Code Generators
25
+ Classifier: Topic :: Software Development :: Libraries :: Application Frameworks
26
+ Classifier: Typing :: Typed
27
+ Requires-Python: >=3.11
28
+ Requires-Dist: cookiecutter>=2.6.0
29
+ Requires-Dist: copier>=9.0.0
30
+ Requires-Dist: packaging>=24.0
31
+ Requires-Dist: pillow>=11.3.0
32
+ Requires-Dist: rich>=13.0.0
33
+ Requires-Dist: typer>=0.9.0
34
+ Provides-Extra: dev
35
+ Requires-Dist: pip-audit>=2.6.0; extra == 'dev'
36
+ Requires-Dist: pre-commit>=3.7.0; extra == 'dev'
37
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == 'dev'
38
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
39
+ Requires-Dist: ruff>=0.1.0; extra == 'dev'
40
+ Requires-Dist: ty; extra == 'dev'
41
+ Provides-Extra: docs
42
+ Requires-Dist: mkdocs-gen-files>=0.5.0; extra == 'docs'
43
+ Requires-Dist: mkdocs-glightbox>=0.3.0; extra == 'docs'
44
+ Requires-Dist: mkdocs-material>=9.5.0; extra == 'docs'
45
+ Requires-Dist: mkdocs-mermaid2-plugin>=1.1.0; extra == 'docs'
46
+ Requires-Dist: mkdocs>=1.5.0; extra == 'docs'
47
+ Requires-Dist: mkdocstrings[python]>=0.24.0; extra == 'docs'
48
+ Requires-Dist: pymdown-extensions>=10.0.0; extra == 'docs'
49
+ Description-Content-Type: text/markdown
50
+
51
+ <picture>
52
+ <source media="(prefers-color-scheme: dark)" srcset="docs/images/aegis-manifesto-dark.png">
53
+ <img src="docs/images/aegis-manifesto.png" alt="Aegis Stack" width="400">
54
+ </picture>
55
+
56
+ **Build production-ready Python applications with your chosen components and services.**
57
+
58
+ [![CI](https://github.com/lbedner/aegis-stack/workflows/CI/badge.svg)](https://github.com/lbedner/aegis-stack/actions/workflows/ci.yml)
59
+ [![Documentation](https://github.com/lbedner/aegis-stack/workflows/Deploy%20Documentation/badge.svg)](https://github.com/lbedner/aegis-stack/actions/workflows/docs.yml)
60
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
61
+
62
+ Aegis Stack is a CLI-driven framework for creating custom Python applications. Select exactly the components you need - no bloat, no unused dependencies.
63
+
64
+ ## Quick Start
65
+
66
+ ```bash
67
+ # Run instantly without installation
68
+ uvx aegis-stack init my-api
69
+
70
+ # Create with user authentication
71
+ uvx aegis-stack init user-app --services auth
72
+
73
+ # Create with background processing
74
+ uvx aegis-stack init task-processor --components scheduler,worker
75
+
76
+ # Start building
77
+ cd my-api && uv sync && cp .env.example .env && make server
78
+ ```
79
+
80
+ ## Installation
81
+
82
+ **No installation needed** - just run it:
83
+
84
+ ```bash
85
+ uvx aegis-stack init my-project
86
+ ```
87
+
88
+ That's it. [`uvx`](https://docs.astral.sh/uv/) downloads, installs, and runs Aegis Stack in one command.
89
+
90
+ ---
91
+
92
+ **Alternative methods:** [Installation Guide](docs/installation.md) covers `uv tool install` and `pip install` for specific workflows.
93
+
94
+ ## 🌱 Your Stack Grows With You
95
+
96
+ **Your choices aren't permanent.** Start with what you need today, add components when requirements change, remove what you outgrow.
97
+
98
+ ```bash
99
+ # Monday: Ship MVP
100
+ aegis init my-api
101
+
102
+ # Week 3: Add scheduled reports
103
+ aegis add scheduler --project-path ./my-api
104
+
105
+ # Month 2: Need async workers
106
+ aegis add worker --project-path ./my-api
107
+
108
+ # Month 6: Scheduler not needed
109
+ aegis remove scheduler --project-path ./my-api
110
+ ```
111
+
112
+ | Framework | Add Later? | Remove Later? | Git Conflicts? |
113
+ |-----------|------------|---------------|----------------|
114
+ | **Others** | ❌ Locked at init | ❌ Manual deletion | ⚠️ High risk |
115
+ | **Aegis Stack** | ✅ One command | ✅ One command | ✅ Auto-handled |
116
+
117
+ Most frameworks lock you in at `init`. Aegis Stack doesn't. See **[Evolving Your Stack](docs/evolving-your-stack.md)** for the complete guide.
118
+
119
+ ## Available Components & Services
120
+
121
+ ### Infrastructure Components
122
+ | Component | Purpose | Status |
123
+ |-----------|---------|--------|
124
+ | **Core** (FastAPI + Flet) | Web API + Frontend | ✅ **Always Included** |
125
+ | **Database** | SQLite + SQLModel ORM | ✅ **Available** |
126
+ | **Scheduler** | Background tasks, cron jobs | ✅ **Available** |
127
+ | **Worker** | Async task queues (arq + Redis) | 🧪 **Experimental** |
128
+ | **Cache** | Redis caching and sessions | 🚧 **Coming Soon** |
129
+
130
+ ### Business Services
131
+ | Service | Purpose | Status |
132
+ |---------|---------|--------|
133
+ | **Auth** | User authentication & JWT | ✅ **Available** |
134
+ | **AI** | Multi-provider AI chat | 🧪 **Experimental** |
135
+
136
+ ## See It In Action
137
+
138
+ ### System Health Dashboard
139
+
140
+ ![System Health Dashboard](docs/images/dashboard-dark.png)
141
+
142
+ Real-time monitoring with component status, health percentages, and cross-platform deployment (web, desktop, mobile).
143
+
144
+ ### CLI Health Monitoring
145
+
146
+ ![CLI Health Check](docs/images/cli_health_check.png)
147
+
148
+ Rich terminal output showing detailed component status, health metrics, and system diagnostics.
149
+
150
+ ## Learn More
151
+
152
+ - **[📖 CLI Reference](docs/cli-reference.md)** - Complete command reference
153
+ - **[🏗️ Components](docs/components/index.md)** - Deep dive into available components
154
+ - **[🔧 Services](docs/services/index.md)** - Business services (auth, AI)
155
+ - **[🧠 Philosophy](docs/philosophy.md)** - Architecture and design principles
156
+
157
+ ## For The Veterans
158
+
159
+ ![Ron Swanson](docs/images/ron-swanson.gif)
160
+
161
+ No magic. No reinventing the wheel. Just the tools you already know, pre-configured and ready to compose.
162
+
163
+ Aegis Stack respects your expertise. We maintain existing standards - FastAPI for APIs, SQLModel for databases, arq for workers. No custom abstractions or proprietary patterns to learn. Pick your components, get a production-ready foundation, and build your way.
164
+
165
+ The framework gets out of your way so you can get started.
@@ -0,0 +1,392 @@
1
+ aegis/__init__.py,sha256=ym9H5PCmvjuEw-JcZ-S6QYdKlQF272zaJHqs3rMRTsM,103
2
+ aegis/__main__.py,sha256=nKV_qdIc8LpkLkuGGu715-MESy7w-yfb-lhZzuIPW_c,1548
3
+ aegis/cli/__init__.py,sha256=Al4WOskFZCEeNFvp_bRe3I-5fPfsQHSUoGQ1X2NOOlg,150
4
+ aegis/cli/callbacks.py,sha256=iG05ln8Kedf-BcTP42JQhQjs681jYr_JNeNFW5u5N2U,4056
5
+ aegis/cli/interactive.py,sha256=QkbLNjaqucnVVeIfRAJECEM3C_zcuvQToQrL0WyR3I4,24571
6
+ aegis/cli/utils.py,sha256=fEh4pRSnt2tQKqQPZh6JkiWf3dpFt6QOLLGvXkm9yMk,2267
7
+ aegis/cli/validators.py,sha256=Q7M2gQtZIvoxUNh7C-ktvbozjNVJ3t8jzCZZ9iDRHEg,1039
8
+ aegis/commands/__init__.py,sha256=VajIHOErSxkrJbKAQwa4yigVEhEVyn9wpao1awvgPMA,196
9
+ aegis/commands/add.py,sha256=fItpOLgBFfwS9ytsdotKCWp41oYzXzXmSct_uAIMlUk,13010
10
+ aegis/commands/add_service.py,sha256=cz11Hsc3PE1VwIDZo1zrsPpb2kQt0zc2uYcPgdfuZgI,11951
11
+ aegis/commands/components.py,sha256=7ZhrH3lYr6Z9q24O-VRLZSk3M8UKr9rPq02ryCuFlI4,1192
12
+ aegis/commands/init.py,sha256=uep53nSEO850Dd6N34BrGL-rA3kDrlUgIs-KwFfHIQQ,14579
13
+ aegis/commands/remove.py,sha256=1BU1_bbu-ikeKq0ZGzzfcvChkIptIqlo6U6OqsymUb0,7951
14
+ aegis/commands/services.py,sha256=-3vilRn110Bn8coMsjAQuzkTyuZglxtd_OB81q0C5Jc,1853
15
+ aegis/commands/update.py,sha256=g0Mqbr1BlULVG4bG8I0jPSGhRnGL5bvRcA-xmgwwxUs,8306
16
+ aegis/commands/version.py,sha256=j5XHr7xbXt1dnWan0fh9d4wKkaOhI-nddI-bE54vW44,209
17
+ aegis/config/__init__.py,sha256=bntWI5CQU67IOOF3hj6FoVYO_C8mpzlWb_LadhhEFlE,44
18
+ aegis/config/shared_files.py,sha256=bXU9Bw7Khc5SOtDvnrtQwY1EM8BpKWwTmaC7GqjosC4,4791
19
+ aegis/core/CLAUDE.md,sha256=dBISDBL1hnLzcZcU_E48BomWcRGiThNV3flDqIKRUpw,13481
20
+ aegis/core/__init__.py,sha256=YGTePomNNnhOp4_gG-BNFC2Da9H8F0FX0lMMDfGtyc4,194
21
+ aegis/core/component_files.py,sha256=DGmKoO84u74n3hAODCMYNl-Ujpk7Wx5B42RusJVPBi8,7417
22
+ aegis/core/component_utils.py,sha256=fs2Aeua6EtzLX7rGD1HYu3v1wI5hJmC8MMYtgy6LThU,6530
23
+ aegis/core/components.py,sha256=WBf_KRKMJnBpjRRMkXfJMzvjDjv_4FlhQEnL0VfBKSI,4243
24
+ aegis/core/copier_manager.py,sha256=YrHANepolF4RC6-8nAKHsoQmxsfeU-XRE-N7nOjXiuQ,11879
25
+ aegis/core/copier_updater.py,sha256=yV5VPF6pRZRnCqrbSqIfKZ8lgYfID8MBTlyIdOaim6I,15103
26
+ aegis/core/dependency_resolver.py,sha256=h35F3J-nlwGea_cWBUDjxa2ISioaYFvZyu7LXqkiOjs,3693
27
+ aegis/core/manual_updater.py,sha256=fSaALS-Zbc-T0GnL6tTxKeUuDyiWzImjFUvKJY6qLwU,20086
28
+ aegis/core/post_gen_tasks.py,sha256=lCdo7Yv25g4Eo_J0JDr920hE4Th8xVJ_Cdcqx4xrXPU,20053
29
+ aegis/core/service_resolver.py,sha256=7awGj6prBCI-fKpoqQhYW7FDMc_BVqNnQ5wBf2yAFIc,8971
30
+ aegis/core/services.py,sha256=Sq3ByO24bN3YCkoaEnrNhug627YnEFC3fwWjnz5gfs0,4911
31
+ aegis/core/template_generator.py,sha256=GO-wSPpP6hmnye7u8W4g7jf8NR6lQGlljbAjfHXo9uk,10544
32
+ aegis/core/version_compatibility.py,sha256=sicmIXCCRE9M1XYTidPHpMe0-B6NpJP5R0WP8-7Eag0,8129
33
+ aegis/templates/CLAUDE.md,sha256=7iqIiV-JsR3DbX--kX5L5RoNC7eb2BAVekipv6YnTvs,19009
34
+ aegis/templates/cookiecutter-aegis-project/cookiecutter.json,sha256=p8JjBnP7K9sdGsEsyEyLjJRb1mU_u96Fbsuf1jtNO5A,2216
35
+ aegis/templates/cookiecutter-aegis-project/hooks/post_gen_project.py,sha256=wthQfL1bCXxtuJ6Ia2qk2f-qxLH05h9PtQwEt3rR8mI,8886
36
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.dockerignore,sha256=NARRLwl2gbQ4daipgvQg84pYSuix3gaxKNJG29w6u8o,602
37
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.env.example.j2,sha256=BayfvhPNJcH_O-Tix5nUT-fLqXlYzzF4O2MISqSUi0I,4742
38
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/.gitignore,sha256=yUSEcrScNgJBN1rZKa7cFIUxbDga_6vR_khzrmbRb5w,1452
39
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Dockerfile,sha256=5d5ftnBmgyCmz5xDr3Ly2yi98Fy-DK4dygdhW9DZSQI,1300
40
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/Makefile,sha256=fHQd2wYYxv2UYbYl73VtM1m-cNX9ha8J9XBLkdnUlsE,9082
41
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/README.md.j2,sha256=B2TYjS0ZEa-mNfWIVJgCXDkUSG-LpV8e1WpgPzp-nrU,5531
42
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docker-compose.yml.j2,sha256=JoqE5BVu5hzNWtnWJx67EPb1CMi7-JLEpEdKRJOcSGM,4776
43
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/mkdocs.yml.j2,sha256=WMObs7sbB42in0GE5xYMF9Imh068tHxehiY9Txct_kk,1565
44
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/pyproject.toml.j2,sha256=znTycUdMw-eEwlrIUmcr0A8ceo9U2D7oac7WoMqLNWU,3744
45
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/uv.lock,sha256=WRkHWUQiLmd9lR9bVyii0PYNf_xjC-Azb2BIXsVzetQ,184378
46
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/alembic.ini.j2,sha256=DpDuvJ7ADx7KVA4XXXjCYABzPX5QH829SWL3bKrCBWo,3221
47
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/env.py.j2,sha256=4sjoowa97688_0eP9vo2nx9FXsCV_ehkZH_JpYCC3HA,2572
48
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/script.py.mako,sha256=U4NS_j-OYEb3DtZfm3Rq4IgZUl3fcIyFtZRsJM1QO5Y,525
49
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/alembic/versions/001_initial_auth.py.j2,sha256=fj2jmmt716JDmKT4uCry9NjZLdrBS6fwfrHBZv2QcnQ,1346
50
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/__init__.py,sha256=VPTZjcLPOaEJclWFpgqu7QTNmXbdvnfo7TtZ69RHfes,112
51
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
52
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/__init__.py,sha256=cgbPZzceZP7CG6yvohVIwb9Z46T-sDzxrGmY14v69JE,196
53
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/ai.py.j2,sha256=IzYlRbY_ZM7hgqTGT3JK8kahMRGonYz05Nc_dQQUjkw,25022
54
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/ai_rendering.py,sha256=KoNrBD5EPuk7x5QetNtKzcNkVescW1k3TULrGhd_OlY,12116
55
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/auth.py.j2,sha256=RpmpG8ZnMpWEKi9FOiRQ-OSK6t9vBhW2MvzQomnCIBQ,8159
56
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/health.py.j2,sha256=-exQLgmAaY-n0kr2-vUX1hJ9P7mWGCIGhC9MMUm6uYU,16892
57
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/load_test.py.j2,sha256=w_UMr7Goc1H2pDFOjQM4g1sOHv9asEof0ySSy1ah5LE,22063
58
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/main.py.j2,sha256=IdISce686TPdUj-avubPQt4OqQg7QbwjJ_YKtDyvyCs,1714
59
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/marko_terminal_renderer.py,sha256=kZhZQiAsXH4CPL2Sz72ekaNe4-5xJGiiF9I74Ub7Ooo,14297
60
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/tasks.py.j2,sha256=Yth4946zI-Aocx2op1fBlvXYfwaUkus2PK6x4O8sI6Q,10784
61
+ "aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/cli/{% if cookiecutter.include_scheduler == ""yes"" %}tasks.py{% endif %}",sha256=R85R-66NpiuRQIgSC4RDm7BzaDMVde2h7UxseOoIK-g,10759
62
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/hooks.py,sha256=cwwMNECSXzrrfX6WdoYasuvAj-v142dt-S6K98gvSJk,5697
64
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/main.py,sha256=oj4xA4IcOKgY7wmKUpaxBMjP_dHGXinkdmWKRMl_oV8,863
65
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
66
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/deps.py,sha256=CXO7Ifcfoh_-HIoXjaXUjz1I3c138zAwmQbFl8eWWBY,1802
67
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/health.py,sha256=DSJzynqV8DLS1mNjOZB1tPBLfrxk4CQLrz5j3Kb3wpo,6347
68
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/models.py.j2,sha256=xKQaTwy3UGKLOZqLK7TWMiRwStrpQIqwpDF-D7g9BJE,10225
69
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/routing.py.j2,sha256=p2rrFKk7lrCNq0ALvTl7u_IbY8Sktsdncr5VuDV-WUM,1235
70
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/scheduler.py.j2,sha256=LDmJ30vP6aKj9T1oI_RHuU0Ot7igSkRsAkYC4vjDztM,3637
71
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/worker.py.j2,sha256=_ELJ0dolD7waZ74PRUT57jccw9br_waXzuITJT-utj0,15591
72
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/ai/__init__.py,sha256=iitA_3ovEjII9wIM438_lPCogkpAwYJCutNXI10Vv5Y,142
73
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/ai/router.py,sha256=PSK0dKeDIq1GpSuSpZXca8OJ8K7pBlVnITE68L4DUkA,10382
74
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/auth/__init__.py,sha256=KZBe6ky1QPWaQgVkiXHHlqjLRDdhZ711vTupLGN0eWc,26
75
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/api/auth/router.py,sha256=Sgzufy177dIi0bzlGExiwqdBCg5yEiE04SI9M6FNHTw,2337
76
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/__init__.py,sha256=-M3SgaoQfZ1CUmRYtezPWZb8YHBqbfRH4UfhTcbWMYc,21
77
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/middleware/cors.py,sha256=tGYF4j3avMd-rXl2Ux69K-FXO4D4tFNdkNzF4CxuxWk,582
78
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/__init__.py,sha256=srU9Z5M8slY_sI1Lcm_jjK9WDvv4WN_arUMaAn04jNs,25
79
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/shutdown/cleanup.py,sha256=97WmtsnMdWVvurNerBPC7UIJ_7bdf6r7EiqNzmQrbFI,380
80
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/__init__.py,sha256=yx71f-eGj5p6yWgfgfapqPLBYOL5IpmLdHubtkCNTZc,24
81
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/component_health.py.j2,sha256=p8mYF5ummGvd05xKvWvz2wdZVE2Zn4y74Ly18husHxs,16358
82
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/backend/startup/database_init.py.j2,sha256=THYnOatqu7I5bq52M4PDG6Q0mHMRXTZT42XUq8SIyxo,3025
83
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/__init__.py,sha256=OYZGoBJVEH0NvlgPRPtyVUls4PrpQWuFakVqsHfEth4,122
84
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/main.py.j2,sha256=XUr4BS7PQmSwM5zWFtYQ1zSkQgief48MOcZieCtGGP4,27600
85
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/theme.py,sha256=0J5PXaZ5pUFaz3yLH-5Ot_KJqSUmN61uqi6hDsYoI0U,1792
86
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/__init__.py,sha256=VL4GhtKxvnLu-blpHuWgTTWsSLWRXYyb4e96kwvLdHU,455
87
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/table.py,sha256=3tbHenbKWpbQaaamlqwzbbPuNvLuE1zTrSJv2EiRFtA,2030
88
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/controls/text.py,sha256=Mko48fpiKjvXkl-h_JDGMxWM7x6vcR_PjeZ6ibLOgVQ,4278
89
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/__init__.py.j2,sha256=YmuFcTqucVy3OtcP1Jb7Q4w0b8BO9tItk3je8jts71E,1295
90
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/ai_card.py,sha256=KEA6FAir3S-yk4W4u1nnhlwFvhs7LIBiPlj9dujagdY,10255
91
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/auth_card.py,sha256=DORyzm7Hud9ox86ZhmfzOfXueph96lk8qJY7txzptOM,7310
92
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/base_card.py,sha256=ZgVNgGLuEu-pwrVcL0NKkKJQKNCetmO_WZxUID1W-eA,8310
93
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/card_factory.py,sha256=anKIOl-wiqX5jwU8m4Oh7mg2xBgMqVJrHmWl7xEjsJQ,7130
94
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/card_utils.py,sha256=CPAXST-6vR5ov53trTNO0qj_S3VHLxD6Ku2A9Gh0CCM,10498
95
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/database_card.py,sha256=ueHN1XGG7hXwOZQcClRi5DZcwrnAIaInwJgB1t1ebY4,15787
96
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/fastapi_card.py,sha256=R7E_LkFdt53AMQzuvvuWPwG1d3sqcdHbuZXl3n5D5DQ,12260
97
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/flet_card.py,sha256=MRVUMqAzFTKM9yZyuEL72hnaWkfuUjT6YeYp1i2hV9M,9015
98
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/redis_card.py,sha256=D9Ds4nTmgGghAn3x890u37qNGATddvORc-WM-_49YbA,11782
99
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/scheduler_card.py,sha256=2gPB9gLC1r3wp4_MlZVMXIn7oMnCdWlZWmFKnEMJHG8,13805
100
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/services_card.py,sha256=d7u7y2t2vuwFjp1F2kQ9HSIC2ff2V6J9-RF2sxq_Zfw,8177
101
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/frontend/dashboard/cards/worker_card.py,sha256=lZyojfG7fXGK5K5CA9pFpGE1Q-cn_WTuoc35Pd6ozQo,26441
102
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/__init__.py,sha256=dfOSccy_F5-Ob6KU23ZuX1RQ3M1ZQV9Kms6OTQmvz3c,22
103
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/scheduler/main.py.j2,sha256=Flld7AJQGjd1SIHK_ArXkCLf9IgBDhdqc_bt5OKp8w8,5627
104
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/CLAUDE.md.j2,sha256=VL65eZF4iG3TmM55TGK1BsAjBc0hy4zm9kg1RjJv-CA,7548
105
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/__init__.py,sha256=TveWR62wwSMEWBQWCr2rh_jDw6YHgf3iX5N7KMQc4do,228
106
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/constants.py.j2,sha256=XSTEG6mSVHT4q3GFH8zaE_-H3vAm_uS7x_MNlfgVcPY,817
107
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/pools.py,sha256=Ly3ca7BUudMQg3yfZJqXfls7AiZPTaUS9BcFonsWpjo,3430
108
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/registry.py,sha256=SR4Vg2q8bk7BQmqtouD39Hynu_c95NJ3RKzkAtcwP1s,4443
109
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/__init__.py,sha256=v7oCQVtvTrQWwfVi9kTRQN7Q2H6hThzSCO-7LTrrQtA,67
110
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/load_test.py,sha256=uKLrwUsXH3gTDRkYocO6wrjxXhkrA594FFNYLOv7z_s,1686
111
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/media.py,sha256=iCa7ZfmU_bOgsTasm1qpvJr6eFr9ea6Rf3IHHf62Llc,1521
112
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/queues/system.py,sha256=0bM6u6zifWdvl-rwDdLcCI-iqi-eEtfsFdWEqin4IGg,1396
113
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/__init__.py,sha256=m0JAmOltkwnMRFXWgKwIvh2iCwZDKbKM6bvjonN0qcg,3159
114
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/load_tasks.py,sha256=jMrWgHwo3KEugfCO38LkReYTsK4eSE4lLCBKtyHQEB8,19387
115
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/simple_system_tasks.py,sha256=mv7XM-6EUo7ziRs4T_a9-rRJf70GU_nd-kaP5NpdUFY,953
116
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/components/worker/tasks/system_tasks.py,sha256=SwkQYPsOhPMkqh52fPx4HAByPlR74iIQx7R8xZcEBeo,10364
117
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/config.py.j2,sha256=-spHRD1PT8rEaRuefk1vy_JaHcxpO0cfmcRONvo6Om4,6142
118
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/constants.py,sha256=8Tm_C3i9u_9KFc_lXaH_LihvWpj05IEXbS2jjEWt4-E,1347
119
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/db.py.j2,sha256=0HPPDVFx73z6RIwZ8Vb1U9faYcnqDHuRFelnk51Nhys,5713
120
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/log.py,sha256=3YHLvJFCQgsekFOxdaUnV7v9iB540wYz1qlqYqAmSM8,3322
121
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/core/security.py,sha256=zgKecMD44Q4g6hFNNcguLdFIPXNel_yFMPIvSXblx4I,1754
122
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/__init__.py,sha256=bTHdhFdjJHe3IuNv460-dR0ZBW88dzAd18mRqH0jOTc,57
123
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/webserver.py,sha256=bM3Ijz06PF2CriKiRM75ZgU_CeIrEDOIXZ1BnLeCC5A,1025
124
+ "aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/entrypoints/{% if cookiecutter.include_scheduler == ""yes"" %}scheduler.py{% endif %}",sha256=7078OnOzcCZN93oTacVZg7nJLYOON_Z4xNqCeECIzwI,414
125
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
126
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/integrations/main.py,sha256=eoBR-Wpr7N-WNUukxAh-KFHrYxOaep4_fAXTe9NgW6Q,1950
127
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/models/__init__.py,sha256=3RgIIWSa1OAXbqyhKCQ2yUVy7X8W-oFsJ4gBJJqoNZo,39
128
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/models/user.py,sha256=1as3__nkyb4UXv_Ndo9OSzz1ctQGlIPSHgcIeRCm2H8,957
129
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/__init__.py,sha256=jBfMqpv3qPZsxuuRZAQatlLaHukwirAXM1u3TwbHmhU,26
130
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test.py,sha256=-M3ZF5BcOu0f4tFdNRrWrWu5H3c7jwpIQ1r932MEyUg,25852
131
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/load_test_models.py,sha256=zwAf5aa0L3xMFXZu1WOL9g8oP3SUGPckFvsBJj8kIvs,10946
132
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/__init__.py,sha256=CfB9rQJH0I9unlhyxz1o6a4DFvus72p55V0BuLr4I-k,150
133
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/config.py,sha256=dKVksNpk7Wtm9vKsAKoC1S4kO2ZOVkLb_DaLuuSdnbI,4744
134
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/conversation.py,sha256=DlL7-tkOjlv-9fa5gE8yLMYaben7R-od42-85aLl4Ew,6335
135
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/health.py,sha256=UT60NLntuxLKqsb2DeGTPivf0bt126Knl8vYM_BDP8U,3429
136
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/models.py,sha256=N0gd_d6mwiQsRNKax2SZQl3IlJAdXtyF8UU8wHF1K2Q,7238
137
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/providers.py,sha256=Kk5HMz5t5Kd6xug73P6vSjNhfGYNzSIIY2WyGKzn-tw,13675
138
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/ai/service.py,sha256=3Y9jvqvS9KzpupK2XUK13jwLljCmdWXzCvgQ5TuLSwg,13792
139
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/__init__.py,sha256=QaVRI5DdFbcI4DwB0y6jDtmXqBQPn8YmlImiifUIOKw,31
140
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/auth_service.py,sha256=6I_nBX9IltDV2lwOA253n8ar_xc86jZfZUHdko8TXeI,1221
141
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/health.py,sha256=kyINGWvcgEvdwQ8Gn7sWYT2r4iYXbsb1hWLX8hxvVi0,6293
142
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/auth/user_service.py,sha256=vKbOZyGNR8pT5I8Meu4_iJmJUw8s7DipZO3wKgq7UD0,2762
143
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/middleware_inspector.py.j2,sha256=mIbNJ8fQ6ODqS3Qgs19H_eN8tiy1sylL8OitUqjqaO8,8238
144
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/models.py.j2,sha256=f1U-TwaB-uYhxTbKNaGWWMJZCKn-hPSOrfjn4hU_2VM,1937
145
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/backend/route_inspector.py.j2,sha256=zQ-tLqwVQA9-e_KhiQmTxtQT-WOemPUH7xdOxZxCwpE,6092
146
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/__init__.py.j2,sha256=Zh2bBwhcBaiSkfqcMI8lgkcupGEpR_ypS9iUs8cU26I,467
147
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/models.py.j2,sha256=NyeUjzjuy-rzIrb0_ADUP7THkxhg688W4bi_vKWTrk4,4604
148
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/scheduled_task_manager.py.j2,sha256=v0Sr78BIB4k92X7Mk1uzjTAZ3Cn3PdxuCPErFSfUQDs,9906
149
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/scheduler/task_monitor.py.j2,sha256=_dC8a5uVBpmfIbuSY_qzRIgtS2pdfPbT2hSwd10slx8,7289
150
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/__init__.py,sha256=DVZASaPwQ3bgcsMRguALFjSZql4fSl6f1sWorkfA2IU,217
151
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/shared/models.py,sha256=4IDmyNN2zCQBO_RKzANUFoNr-bglb5_-0hXueWHugRs,841
152
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/__init__.py,sha256=LFgr7RlNCzcEHXdvjRMgHteBNvDwnfE_bKosDZa3p9U,1096
153
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/alerts.py,sha256=0JMgQGpDs1IEzq_VLrWSe5rS_NhxK3hoBAxQ4zoRa6M,2808
154
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/backup.py.j2,sha256=8eaN2Cw845NaDAAdLke0Fb6eK_ltlbvmnuOI0U4bARA,4007
155
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/health.py.j2,sha256=bjFZYDorOpCa8b_MukWH4zOuNmYMk9eiJ4SqW4MlzDs,52009
156
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/models.py,sha256=sYTewLUa-2Gem9Uo1kA5xeTMDDRJm6dtmr4ZvDA0Wgk,8870
157
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/app/services/system/ui.py,sha256=s1LG3mnj7YF0hlhazbsKJ-uEcDhsLLyV2MIzZ8g3J4c,1616
158
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto-dark.png,sha256=v33J79kUEPbNIUCBua5bGfBpVDfQDTFqEu0UYPZUnu0,637425
159
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto-square-backup.png,sha256=4Mi0FUnw_uVJFSwGsxgTDPBeGhNklS1RyzaK0LS2Ufs,673858
160
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/assets/aegis-manifesto.png,sha256=fwyW5_pY9Z_vQ4a0d0oudcFQO5xMFKmKcNRImbvPaQc,488838
161
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.dockerignore,sha256=NARRLwl2gbQ4daipgvQg84pYSuix3gaxKNJG29w6u8o,602
162
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.env.example.j2,sha256=f8ILmAGeYIZoS0Voh3bda2HAfsL3sigHMJWln7kgI_Y,1902
163
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/.gitignore,sha256=yUSEcrScNgJBN1rZKa7cFIUxbDga_6vR_khzrmbRb5w,1452
164
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/Dockerfile,sha256=5d5ftnBmgyCmz5xDr3Ly2yi98Fy-DK4dygdhW9DZSQI,1300
165
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/Makefile,sha256=gVofq7TIyvZ-aqQsmHGwzdRPCKuhpYxh9J6LvvwqEdo,7561
166
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/README.md.j2,sha256=eWMlMis9-toOBGoqdAtwv0rVcHWupMn4GspOiPjYMe0,4742
167
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/docker-compose.yml.j2,sha256=2JiIjoLwyt7uwiTwsAJrknjGpVgc8L9DTjn-FIkRpjE,1543
168
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/mkdocs.yml.j2,sha256=oqIqtF3KRUyamP0q0_uYb8D24WBYkTFaUohOCT9EpY0,1462
169
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/pyproject.toml.j2,sha256=uByfpop73b32a3y_nbnRIW-hrJmMb0Cze4LOsBSs5Xc,2562
170
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/clean-validation/uv.lock,sha256=WRkHWUQiLmd9lR9bVyii0PYNf_xjC-Azb2BIXsVzetQ,184378
171
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/api.md,sha256=pzHke6KbDv-1BYYDSJyAsnCB_LvQ-By-C0Ci8Q5xLEg,4657
172
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/development.md,sha256=HGzDsMYVQwjcZnPMiUZHt9PyEzo-HJWglrPsck_0g2Q,5136
173
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/health.md,sha256=3uX2dSkA496M5rkzGDFkPAaveFJpkh4khiOo2158NOA,6626
174
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/components/scheduler.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/components/scheduler.md.j2,sha256=QeFlYOnyvL2sv0KpqBZ5bXe4D89Ld7BxysWlhSUIeVk,16731
176
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/javascripts/mermaid-config.js,sha256=PQRRqspAV-Fkn7M1lINSv-PQUiwKI0Vgzowzo75Mnjc,2658
177
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/docs/stylesheets/mermaid.css,sha256=6bVV1Vfgef8Ylywdd9gZe7UuE3sxVMyFdOyHM0PX92Q,2978
178
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh,sha256=gjW6sJ134gWGvk1J3K2EEL7hkdb5rgYLJC7Yi-YWAYk,3148
179
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/entrypoint.sh.j2,sha256=jaoINJlu2BTI5QYJeq6dN2TgqO-QdUC9nNoirkcEDoI,3509
180
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/scripts/gen_docs.py,sha256=CGMFAsB8VSzdfy-xFGg47lYQPPlx9SGRo8snNWDrSO0,592
181
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/conftest.py.j2,sha256=o8NhjUzGQqQavqFbQSjLiUpPgH1N5_bJiCnrRNVr4gc,5918
182
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/test_core.py,sha256=JwfKU6EU19EKaTMmFSRTl0i-2oKwDhz9wZXbPWLaN1k,1520
183
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/__init__.py,sha256=puII0GMj0mlwJ_5ui-uJDoxPof4cCTBN1Yx_2mfbPGQ,20
184
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_auth_endpoints.py.j2,sha256=inzDNqBLkkKmrg2hjpycJaoZDRKYU4EhHNgFpzQ02KQ,10763
185
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_health_endpoints.py.j2,sha256=kfDcWzPDfYX2K3h27MA3XbIjvxkTfVl31PpA43QVIrA,10307
186
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_scheduler_endpoints.py.j2,sha256=lh84ctV2KF_GtooZpBRGptdjjPKZorsCZRbPeG5-Snk,8595
187
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/api/test_worker_endpoints.py.j2,sha256=BXj3arDDm6jWOEtRCJgw2P8iOKuFFT_FLgpZcPif0Hk,5468
188
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/cli/test_ai_rendering.py,sha256=NPEnabVJX8cLKuVh8w4Bpbpsg41HYZkRCl3Z8SJa794,13669
189
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/cli/test_conversation_memory.py,sha256=dekqF3o_0GIOfyp-fq2urh4mgs-6HgJeW0pIyDEWZ6g,16453
190
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/components/test_scheduler.py,sha256=_33L-cG9p3L9Ma16j4We58KGbnymFpQwmqaHKXY15IY,1384
191
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/__init__.py,sha256=tjTvQ1ETbd-mXWN_RpKqGxXdae-2AqvyGjUkCFv2pek,16
192
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_auth_integration.py.j2,sha256=qcLGuVtXU7OoXpdM9waP5zG3NVA70QVIoP2lxO2_O5U,20408
193
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_component_integration.py.j2,sha256=sOwOiJSDuMpG6NWpNYE8a-WE268SdSNsHTFKGz7Ku68,15170
194
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_conversation_persistence.py,sha256=-CG-I45yDUe6XuIjIDKfDuGcnrjiYjWh27do1KcMdDA,14222
195
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_health_logic.py.j2,sha256=CuU09cepfgQBbF_sLzdYGJ2wddrRXNq0sfQpz8V565s,26295
196
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_models.py,sha256=YNTke-pwagRWvI6gVHAknFOEAVGrtBY9eTJ5sWlF17Q,22317
197
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_load_test_service.py,sha256=A0im1dSVfcvs6EctFmHWspXGQXS2N9-CIdHcdA_WbMk,22883
198
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_middleware_inspector.py.j2,sha256=ztkszDnvDPtVlghctfronDu8N5-ucEN7mNxE05xmVRk,9576
199
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_scheduled_task_manager.py.j2,sha256=Z_rsezDLwiLO75qAb0bEW8RTTpmFw_4gEqSWVOjYemc,11079
200
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_system_service.py,sha256=Dxw009gtV9_LChABMCOlWz1tgW05UM4U2iou-NavOKs,3717
201
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/test_worker_health_registration.py.j2,sha256=Nf-PyoeWxLZuWfaWOEdqx12QYvohRTAL0Xg9si63RDU,10325
202
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/__init__.py,sha256=4_UfirJg0nPCDRY15pimZZ4s6ggJL7ZV7ZP3XI8GvZs,39
203
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/conftest.py,sha256=CkDhIFxYZrLHgJi4vMUVyoYlxSj0ARHmJfnA7Mse_B8,2344
204
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_health.py,sha256=HsFZmfzpThHLgjtQWPL9hafBJJfk8cx57pvqnOx0zN8,6211
205
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_models.py,sha256=Zs0OpXjV6E4C8yXhuNiuIdZl9nIhQDfonuV0Sgns8Ps,6363
206
+ aegis/templates/cookiecutter-aegis-project/{{cookiecutter.project_slug}}/tests/services/ai/test_service.py,sha256=rAMXlxKEMmSlBfQd0nTm_71C-5bQfHTcJi5yr3EGidk,7136
207
+ aegis/templates/copier-aegis-project/{{ project_slug }}/.copier-answers.yml.jinja,sha256=F1xmSiD-XNNUWQt-ozn_uQdlnVpR-6qSchs5eUXZa2E,833
208
+ aegis/templates/copier-aegis-project/{{ project_slug }}/.dockerignore,sha256=NARRLwl2gbQ4daipgvQg84pYSuix3gaxKNJG29w6u8o,602
209
+ aegis/templates/copier-aegis-project/{{ project_slug }}/.env.example.jinja,sha256=8j0eZxkBFJVt9_lTI9kBiBWpBKWd6jCxkha2OXk6EOk,4611
210
+ aegis/templates/copier-aegis-project/{{ project_slug }}/.gitignore,sha256=yUSEcrScNgJBN1rZKa7cFIUxbDga_6vR_khzrmbRb5w,1452
211
+ aegis/templates/copier-aegis-project/{{ project_slug }}/Dockerfile,sha256=5d5ftnBmgyCmz5xDr3Ly2yi98Fy-DK4dygdhW9DZSQI,1300
212
+ aegis/templates/copier-aegis-project/{{ project_slug }}/Makefile.jinja,sha256=IgAxo_D8G70oqhX-F_o4bJ3ZXs_sAcc03_DGLziuDS8,8916
213
+ aegis/templates/copier-aegis-project/{{ project_slug }}/README.md.jinja,sha256=3cjB72EWaFKjPWEVsQDOa9H1w1C3ztSUuGjCwgedvvo,5212
214
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docker-compose.yml.jinja,sha256=mkXudl1xrS38WE_UVQYXzd4wHQM1KbGsIImeFB33izM,4666
215
+ aegis/templates/copier-aegis-project/{{ project_slug }}/mkdocs.yml.jinja,sha256=P1rnUkrLL7d5FiXGUntUZ1szTHmAE6HXkk5wTtai4YM,1479
216
+ aegis/templates/copier-aegis-project/{{ project_slug }}/pyproject.toml.jinja,sha256=FgH_e1XYMKmGsGFe1DoOL_uCrh63lXEpux542RNs_6A,3466
217
+ aegis/templates/copier-aegis-project/{{ project_slug }}/uv.lock,sha256=WRkHWUQiLmd9lR9bVyii0PYNf_xjC-Azb2BIXsVzetQ,184378
218
+ aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/alembic.ini.jinja,sha256=DpDuvJ7ADx7KVA4XXXjCYABzPX5QH829SWL3bKrCBWo,3221
219
+ aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/env.py.jinja,sha256=1SB4b9F2VR8wKqms_Xy4cSQ8fZLWRTev-ampvrVlobs,2550
220
+ aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/script.py.mako,sha256=U4NS_j-OYEb3DtZfm3Rq4IgZUl3fcIyFtZRsJM1QO5Y,525
221
+ aegis/templates/copier-aegis-project/{{ project_slug }}/alembic/versions/001_initial_auth.py.jinja,sha256=fj2jmmt716JDmKT4uCry9NjZLdrBS6fwfrHBZv2QcnQ,1346
222
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/__init__.py.jinja,sha256=_ReYJKyG-q7jxZIM6OHOz7skhbwVkj-pEKO4tkSuoUc,86
223
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
224
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/__init__.py.jinja,sha256=nVWyKBSG3rg_xnhpQU45VM5Ykn5AW0LdHifwaf3z0Z4,185
225
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai.py.jinja,sha256=IzYlRbY_ZM7hgqTGT3JK8kahMRGonYz05Nc_dQQUjkw,25022
226
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/ai_rendering.py,sha256=4Ceng4yfFE877c7cJPTQJqxkTSv5GwD9sFYV6Wn1xLI,12115
227
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/auth.py.jinja,sha256=RpmpG8ZnMpWEKi9FOiRQ-OSK6t9vBhW2MvzQomnCIBQ,8159
228
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/health.py.jinja,sha256=-exQLgmAaY-n0kr2-vUX1hJ9P7mWGCIGhC9MMUm6uYU,16892
229
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/load_test.py.jinja,sha256=RgwASUoBxF6nVIXAqsN0xBVN80ArUZvv3zhwkBKt_0g,21933
230
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/main.py.jinja,sha256=Sr_sISaHMQVa9EEo0tA6sdyEBQZl73TcyyqH4tXZgt8,1675
231
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/marko_terminal_renderer.py,sha256=kZhZQiAsXH4CPL2Sz72ekaNe4-5xJGiiF9I74Ub7Ooo,14297
232
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/cli/tasks.py.jinja,sha256=qCTo35ga2KizuzBp7E4NbkvpeFBQlcu1EeylUCWJ-TA,10771
233
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/hooks.py,sha256=cwwMNECSXzrrfX6WdoYasuvAj-v142dt-S6K98gvSJk,5697
235
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/main.py,sha256=oj4xA4IcOKgY7wmKUpaxBMjP_dHGXinkdmWKRMl_oV8,863
236
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/deps.py,sha256=CXO7Ifcfoh_-HIoXjaXUjz1I3c138zAwmQbFl8eWWBY,1802
238
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/health.py.jinja,sha256=TgkSCvGkJuglYwBzqEUiaGF2m6PYYUGo8fGhUZxoxAU,6321
239
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/models.py.jinja,sha256=7V7xlqsEyF0eMwTsHcPOXK67N-AiqyqqVh8G2soX_q0,10050
240
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/routing.py.jinja,sha256=3Yr5tJq3AfIj7Ljnhb5Nx4rE9f3mBPDyNED9X6uj804,1077
241
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/scheduler.py.jinja,sha256=4Tei3vi4b_NQg2Skzs6hn--HNtWIHJkrj73rMtsGp6c,3624
242
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/worker.py.jinja,sha256=wVPKsbyxCl2uLonHZlsYnsz10ijVnDgN2Z6kC6Kc2TM,15569
243
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/__init__.py,sha256=iitA_3ovEjII9wIM438_lPCogkpAwYJCutNXI10Vv5Y,142
244
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/ai/router.py,sha256=PSK0dKeDIq1GpSuSpZXca8OJ8K7pBlVnITE68L4DUkA,10382
245
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/__init__.py,sha256=KZBe6ky1QPWaQgVkiXHHlqjLRDdhZ711vTupLGN0eWc,26
246
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/api/auth/router.py,sha256=Sgzufy177dIi0bzlGExiwqdBCg5yEiE04SI9M6FNHTw,2337
247
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/__init__.py,sha256=-M3SgaoQfZ1CUmRYtezPWZb8YHBqbfRH4UfhTcbWMYc,21
248
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/middleware/cors.py,sha256=tGYF4j3avMd-rXl2Ux69K-FXO4D4tFNdkNzF4CxuxWk,582
249
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/__init__.py,sha256=srU9Z5M8slY_sI1Lcm_jjK9WDvv4WN_arUMaAn04jNs,25
250
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/shutdown/cleanup.py,sha256=97WmtsnMdWVvurNerBPC7UIJ_7bdf6r7EiqNzmQrbFI,380
251
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/__init__.py,sha256=yx71f-eGj5p6yWgfgfapqPLBYOL5IpmLdHubtkCNTZc,24
252
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/component_health.py.jinja,sha256=gUsbfk8xXcwwBblBQ4WHMMDUVcpU6zQRBIo0jA02_Qc,16165
253
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/backend/startup/database_init.py.jinja,sha256=qJeTRLAJ4_ZmxD6lSTd4YI8yqut-_FsrZQ_ENIFbk_w,2959
254
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/__init__.py,sha256=OYZGoBJVEH0NvlgPRPtyVUls4PrpQWuFakVqsHfEth4,122
255
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/main.py.jinja,sha256=FSxNkR0p8MlymjXGEwfJb1qFs4JV_6YyqsAxUmudeCM,27270
256
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/theme.py,sha256=0J5PXaZ5pUFaz3yLH-5Ot_KJqSUmN61uqi6hDsYoI0U,1792
257
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/__init__.py,sha256=VL4GhtKxvnLu-blpHuWgTTWsSLWRXYyb4e96kwvLdHU,455
258
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/table.py,sha256=3tbHenbKWpbQaaamlqwzbbPuNvLuE1zTrSJv2EiRFtA,2030
259
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/controls/text.py,sha256=Mko48fpiKjvXkl-h_JDGMxWM7x6vcR_PjeZ6ibLOgVQ,4278
260
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/__init__.py.jinja,sha256=L5lw7KKoXf4tFPfrONBs2V22HvcboTfiMQj5fq19V5Y,1031
261
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/ai_card.py,sha256=KEA6FAir3S-yk4W4u1nnhlwFvhs7LIBiPlj9dujagdY,10255
262
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/auth_card.py,sha256=DORyzm7Hud9ox86ZhmfzOfXueph96lk8qJY7txzptOM,7310
263
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/base_card.py,sha256=ZgVNgGLuEu-pwrVcL0NKkKJQKNCetmO_WZxUID1W-eA,8310
264
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_factory.py,sha256=anKIOl-wiqX5jwU8m4Oh7mg2xBgMqVJrHmWl7xEjsJQ,7130
265
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/card_utils.py,sha256=CPAXST-6vR5ov53trTNO0qj_S3VHLxD6Ku2A9Gh0CCM,10498
266
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/database_card.py,sha256=ueHN1XGG7hXwOZQcClRi5DZcwrnAIaInwJgB1t1ebY4,15787
267
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/fastapi_card.py,sha256=R7E_LkFdt53AMQzuvvuWPwG1d3sqcdHbuZXl3n5D5DQ,12260
268
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/flet_card.py,sha256=MRVUMqAzFTKM9yZyuEL72hnaWkfuUjT6YeYp1i2hV9M,9015
269
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/redis_card.py,sha256=D9Ds4nTmgGghAn3x890u37qNGATddvORc-WM-_49YbA,11782
270
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/scheduler_card.py,sha256=2gPB9gLC1r3wp4_MlZVMXIn7oMnCdWlZWmFKnEMJHG8,13805
271
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/services_card.py,sha256=d7u7y2t2vuwFjp1F2kQ9HSIC2ff2V6J9-RF2sxq_Zfw,8177
272
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/frontend/dashboard/cards/worker_card.py,sha256=lZyojfG7fXGK5K5CA9pFpGE1Q-cn_WTuoc35Pd6ozQo,26441
273
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/__init__.py,sha256=dfOSccy_F5-Ob6KU23ZuX1RQ3M1ZQV9Kms6OTQmvz3c,22
274
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/scheduler/main.py.jinja,sha256=AfebL9Bn3KBoUQf_9g96n7VTZX2AMz83dqtMq0fgAgY,5435
275
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/CLAUDE.md.jinja,sha256=Tz8-FJ0-hLfSjuBtcSr8VcgoSORWUF4ycFYVpXA1mf0,7522
276
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/__init__.py,sha256=TveWR62wwSMEWBQWCr2rh_jDw6YHgf3iX5N7KMQc4do,228
277
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/constants.py.jinja,sha256=XSTEG6mSVHT4q3GFH8zaE_-H3vAm_uS7x_MNlfgVcPY,817
278
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/pools.py,sha256=Ly3ca7BUudMQg3yfZJqXfls7AiZPTaUS9BcFonsWpjo,3430
279
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/registry.py,sha256=SR4Vg2q8bk7BQmqtouD39Hynu_c95NJ3RKzkAtcwP1s,4443
280
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/__init__.py,sha256=v7oCQVtvTrQWwfVi9kTRQN7Q2H6hThzSCO-7LTrrQtA,67
281
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/load_test.py,sha256=uKLrwUsXH3gTDRkYocO6wrjxXhkrA594FFNYLOv7z_s,1686
282
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/media.py,sha256=iCa7ZfmU_bOgsTasm1qpvJr6eFr9ea6Rf3IHHf62Llc,1521
283
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/queues/system.py,sha256=0bM6u6zifWdvl-rwDdLcCI-iqi-eEtfsFdWEqin4IGg,1396
284
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/__init__.py,sha256=m0JAmOltkwnMRFXWgKwIvh2iCwZDKbKM6bvjonN0qcg,3159
285
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/load_tasks.py,sha256=jMrWgHwo3KEugfCO38LkReYTsK4eSE4lLCBKtyHQEB8,19387
286
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/simple_system_tasks.py,sha256=mv7XM-6EUo7ziRs4T_a9-rRJf70GU_nd-kaP5NpdUFY,953
287
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/components/worker/tasks/system_tasks.py,sha256=SwkQYPsOhPMkqh52fPx4HAByPlR74iIQx7R8xZcEBeo,10364
288
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/config.py.jinja,sha256=wm0gNKNxXTsB3JeOZL0lEOUzPxwHt6Qm2q9HmS5Ecuo,6032
289
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/constants.py,sha256=8Tm_C3i9u_9KFc_lXaH_LihvWpj05IEXbS2jjEWt4-E,1347
290
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/db.py.jinja,sha256=0HPPDVFx73z6RIwZ8Vb1U9faYcnqDHuRFelnk51Nhys,5713
291
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/log.py,sha256=3YHLvJFCQgsekFOxdaUnV7v9iB540wYz1qlqYqAmSM8,3322
292
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/core/security.py,sha256=zgKecMD44Q4g6hFNNcguLdFIPXNel_yFMPIvSXblx4I,1754
293
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/__init__.py,sha256=bTHdhFdjJHe3IuNv460-dR0ZBW88dzAd18mRqH0jOTc,57
294
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/scheduler.py.jinja,sha256=BaG3wBD8KVan_2JlNLkZ0QKtoopj8eYqKbCXKKh3m24,401
295
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/entrypoints/webserver.py,sha256=iw9ZSgJd2-W6cl8ZF1ngHqQ86az27R_nIa5XJklvx1o,1024
296
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
297
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/integrations/main.py,sha256=ETkiC7fyktTFFi5aBayc4lJ9ZFIZgsUPtYLSANSrwdM,1949
298
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/__init__.py,sha256=3RgIIWSa1OAXbqyhKCQ2yUVy7X8W-oFsJ4gBJJqoNZo,39
299
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/models/user.py,sha256=1as3__nkyb4UXv_Ndo9OSzz1ctQGlIPSHgcIeRCm2H8,957
300
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/__init__.py,sha256=jBfMqpv3qPZsxuuRZAQatlLaHukwirAXM1u3TwbHmhU,26
301
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test.py,sha256=sOQj9iwtTb-BCXdHlZ3-qhiumdXfuOc1kNvZW_EofKQ,25851
302
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/load_test_models.py,sha256=QUHTKo38XWchS0p-WzCIXqpZJ5fpI5GGfC1PLTB2X0U,10945
303
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/__init__.py,sha256=CfB9rQJH0I9unlhyxz1o6a4DFvus72p55V0BuLr4I-k,150
304
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/config.py,sha256=dKVksNpk7Wtm9vKsAKoC1S4kO2ZOVkLb_DaLuuSdnbI,4744
305
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/conversation.py,sha256=DlL7-tkOjlv-9fa5gE8yLMYaben7R-od42-85aLl4Ew,6335
306
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/health.py,sha256=UT60NLntuxLKqsb2DeGTPivf0bt126Knl8vYM_BDP8U,3429
307
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/models.py,sha256=N0gd_d6mwiQsRNKax2SZQl3IlJAdXtyF8UU8wHF1K2Q,7238
308
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/providers.py.jinja,sha256=Lyhb6ZwDWkxGffYoZ18jKv02mlDjtY4OcforkqeO1Iw,13653
309
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/ai/service.py,sha256=O_UfNx75iUAKeLziaRI20KT97u6deAMepoDNwfIBqB4,13791
310
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/__init__.py,sha256=QaVRI5DdFbcI4DwB0y6jDtmXqBQPn8YmlImiifUIOKw,31
311
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/auth_service.py,sha256=mA-G_l4T5VvgWUVY5l34DKs2oLBS9FSaldHNBRTZKSc,1220
312
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/health.py,sha256=nhwlnVj1I1Amt_SiDeuQEKO4T7B5HhIF3lV39rdU7X8,6291
313
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/auth/user_service.py,sha256=38fHkq0EvvuKY8jKdGYq0AqMaLD6PUz2_Ged2H2eWwI,2761
314
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/middleware_inspector.py.jinja,sha256=mIbNJ8fQ6ODqS3Qgs19H_eN8tiy1sylL8OitUqjqaO8,8238
315
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/models.py.jinja,sha256=f1U-TwaB-uYhxTbKNaGWWMJZCKn-hPSOrfjn4hU_2VM,1937
316
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/backend/route_inspector.py.jinja,sha256=zQ-tLqwVQA9-e_KhiQmTxtQT-WOemPUH7xdOxZxCwpE,6092
317
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/__init__.py.jinja,sha256=7rszyeLH_fr2nOaEk47tq7foYwayCY5xL4zX-y7ST-I,455
318
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/models.py.jinja,sha256=eYTuSCW2-IevGB1nwsYcmms32ezlwcfWr6pW21oOCbA,4580
319
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/scheduled_task_manager.py.jinja,sha256=Ng-e9_TzebFy0dPALVn9baSWPiJokVa790wZn6elRZE,9894
320
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/scheduler/task_monitor.py.jinja,sha256=KnUGMpCKWNSRkQDzWUwGBGL_m_zQPKWf5wCig9BNqY4,7229
321
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/__init__.py,sha256=DVZASaPwQ3bgcsMRguALFjSZql4fSl6f1sWorkfA2IU,217
322
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/shared/models.py,sha256=4IDmyNN2zCQBO_RKzANUFoNr-bglb5_-0hXueWHugRs,841
323
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/__init__.py,sha256=LFgr7RlNCzcEHXdvjRMgHteBNvDwnfE_bKosDZa3p9U,1096
324
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/alerts.py,sha256=0JMgQGpDs1IEzq_VLrWSe5rS_NhxK3hoBAxQ4zoRa6M,2808
325
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/backup.py.jinja,sha256=iEEmOp_xxFDttyQ0XkSgeaR2SG53QI-myOda04nyejM,3937
326
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/health.py.jinja,sha256=9Me4IHNn4qTtXwWX9hvHMPEptUzwdwI776nUXHlmtQY,51946
327
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/models.py,sha256=sYTewLUa-2Gem9Uo1kA5xeTMDDRJm6dtmr4ZvDA0Wgk,8870
328
+ aegis/templates/copier-aegis-project/{{ project_slug }}/app/services/system/ui.py,sha256=s1LG3mnj7YF0hlhazbsKJ-uEcDhsLLyV2MIzZ8g3J4c,1616
329
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57223!aegis-manifesto.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
330
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57224!aegis-manifesto-dark.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57225!aegis-manifesto-square-backup.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
332
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57533!aegis-manifesto.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57534!aegis-manifesto-dark.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
334
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57538!aegis-manifesto-square-backup.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
335
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57897!aegis-manifesto.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
336
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57898!aegis-manifesto-dark.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
337
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!57904!aegis-manifesto-square-backup.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
338
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58315!aegis-manifesto.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
339
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58316!aegis-manifesto-dark.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
340
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58324!aegis-manifesto-square-backup.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
341
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58837!aegis-manifesto.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
342
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58838!aegis-manifesto-dark.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
343
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/.!58849!aegis-manifesto-square-backup.png,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
344
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-dark.png,sha256=v33J79kUEPbNIUCBua5bGfBpVDfQDTFqEu0UYPZUnu0,637425
345
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto-square-backup.png,sha256=4Mi0FUnw_uVJFSwGsxgTDPBeGhNklS1RyzaK0LS2Ufs,673858
346
+ aegis/templates/copier-aegis-project/{{ project_slug }}/assets/aegis-manifesto.png,sha256=fwyW5_pY9Z_vQ4a0d0oudcFQO5xMFKmKcNRImbvPaQc,488838
347
+ aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/.env.example.jinja,sha256=f8ILmAGeYIZoS0Voh3bda2HAfsL3sigHMJWln7kgI_Y,1902
348
+ aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/README.md.jinja,sha256=eWMlMis9-toOBGoqdAtwv0rVcHWupMn4GspOiPjYMe0,4742
349
+ aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/docker-compose.yml.jinja,sha256=2JiIjoLwyt7uwiTwsAJrknjGpVgc8L9DTjn-FIkRpjE,1543
350
+ aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/mkdocs.yml.jinja,sha256=oqIqtF3KRUyamP0q0_uYb8D24WBYkTFaUohOCT9EpY0,1462
351
+ aegis/templates/copier-aegis-project/{{ project_slug }}/clean-validation/pyproject.toml.jinja,sha256=uByfpop73b32a3y_nbnRIW-hrJmMb0Cze4LOsBSs5Xc,2562
352
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/api.md.jinja,sha256=KF86AVGVeEjzQaUyDUY4YMyrMWl8o2QC0LIfhla15TA,4609
353
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/development.md.jinja,sha256=NWF9hrXdykYRxIVC5v4L5teI2oxTGhqQcAfqPKrmdpA,5005
354
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/health.md.jinja,sha256=Noz8UipC6PR4U6YInfyDM_MzMSXnt7cRyUJRn_fBBoM,6434
355
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/scheduler.md,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
356
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/components/scheduler.md.jinja,sha256=0dqKSJigPjMUCMY2CjW-dQ-vF1lbA_BX0P9fB6B2UKM,16484
357
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/javascripts/mermaid-config.js,sha256=PQRRqspAV-Fkn7M1lINSv-PQUiwKI0Vgzowzo75Mnjc,2658
358
+ aegis/templates/copier-aegis-project/{{ project_slug }}/docs/stylesheets/mermaid.css,sha256=6bVV1Vfgef8Ylywdd9gZe7UuE3sxVMyFdOyHM0PX92Q,2978
359
+ aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh,sha256=gjW6sJ134gWGvk1J3K2EEL7hkdb5rgYLJC7Yi-YWAYk,3148
360
+ aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/entrypoint.sh.jinja,sha256=jaoINJlu2BTI5QYJeq6dN2TgqO-QdUC9nNoirkcEDoI,3509
361
+ aegis/templates/copier-aegis-project/{{ project_slug }}/scripts/gen_docs.py,sha256=CGMFAsB8VSzdfy-xFGg47lYQPPlx9SGRo8snNWDrSO0,592
362
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/conftest.py.jinja,sha256=LAB7Pav4JdTuc4KFcH9Ye6Fellkgrf-8At9NOYIr8ag,5834
363
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/test_core.py,sha256=JwfKU6EU19EKaTMmFSRTl0i-2oKwDhz9wZXbPWLaN1k,1520
364
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/__init__.py,sha256=puII0GMj0mlwJ_5ui-uJDoxPof4cCTBN1Yx_2mfbPGQ,20
365
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_auth_endpoints.py.jinja,sha256=inzDNqBLkkKmrg2hjpycJaoZDRKYU4EhHNgFpzQ02KQ,10763
366
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_health_endpoints.py.jinja,sha256=Z7l-KGdm-ij4SpBD2uOigjOh-m4voZf4upNcc60VwKI,10285
367
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_scheduler_endpoints.py.jinja,sha256=lw3bEhgkLxW8OSNHqWze0oZXsFXFN4yGgUa_SwnbBF4,8582
368
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/api/test_worker_endpoints.py.jinja,sha256=CnNeEYsENn2y3-gPQOP6OB0wpsF4DVOeJDcTj7DtpXE,5446
369
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_ai_rendering.py,sha256=NPEnabVJX8cLKuVh8w4Bpbpsg41HYZkRCl3Z8SJa794,13669
370
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/cli/test_conversation_memory.py,sha256=dekqF3o_0GIOfyp-fq2urh4mgs-6HgJeW0pIyDEWZ6g,16453
371
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/components/test_scheduler.py,sha256=_33L-cG9p3L9Ma16j4We58KGbnymFpQwmqaHKXY15IY,1384
372
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/__init__.py,sha256=tjTvQ1ETbd-mXWN_RpKqGxXdae-2AqvyGjUkCFv2pek,16
373
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_auth_integration.py.jinja,sha256=qcLGuVtXU7OoXpdM9waP5zG3NVA70QVIoP2lxO2_O5U,20408
374
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_component_integration.py.jinja,sha256=8TKlTGHHGjhfNXED66Sy7YnyNqiUf_yqzarWF9Orggg,15065
375
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_conversation_persistence.py,sha256=-CG-I45yDUe6XuIjIDKfDuGcnrjiYjWh27do1KcMdDA,14222
376
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_health_logic.py.jinja,sha256=2ME30xQrzAziiJbUZeCfRPD4-QZ2JDhO06ru5iK2-Ag,26274
377
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_models.py,sha256=YNTke-pwagRWvI6gVHAknFOEAVGrtBY9eTJ5sWlF17Q,22317
378
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_load_test_service.py,sha256=A0im1dSVfcvs6EctFmHWspXGQXS2N9-CIdHcdA_WbMk,22883
379
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_middleware_inspector.py.jinja,sha256=ztkszDnvDPtVlghctfronDu8N5-ucEN7mNxE05xmVRk,9576
380
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_scheduled_task_manager.py.jinja,sha256=GNshSf7cAVmu5CVjTjnIAYWABInJP1Tb0CaG3DdafPk,11066
381
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_system_service.py,sha256=Dxw009gtV9_LChABMCOlWz1tgW05UM4U2iou-NavOKs,3717
382
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/test_worker_health_registration.py.jinja,sha256=YQO9oiGttngvUEkwDO0R02OOKbvg5tZ-tnJiQIuU7dk,10303
383
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/__init__.py,sha256=4_UfirJg0nPCDRY15pimZZ4s6ggJL7ZV7ZP3XI8GvZs,39
384
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/conftest.py,sha256=CkDhIFxYZrLHgJi4vMUVyoYlxSj0ARHmJfnA7Mse_B8,2344
385
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_health.py,sha256=HsFZmfzpThHLgjtQWPL9hafBJJfk8cx57pvqnOx0zN8,6211
386
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_models.py,sha256=Zs0OpXjV6E4C8yXhuNiuIdZl9nIhQDfonuV0Sgns8Ps,6363
387
+ aegis/templates/copier-aegis-project/{{ project_slug }}/tests/services/ai/test_service.py,sha256=rAMXlxKEMmSlBfQd0nTm_71C-5bQfHTcJi5yr3EGidk,7136
388
+ aegis_stack-0.2.0rc2.dist-info/METADATA,sha256=Z_T70tD4u6V8hxeCTTxXT7PFrxLErN0DF-t04Hz22uk,6640
389
+ aegis_stack-0.2.0rc2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
390
+ aegis_stack-0.2.0rc2.dist-info/entry_points.txt,sha256=6yfuHFJyKks6VnV0Z3ostG4ZrkEPMLeIDwkQhwAT8S0,78
391
+ aegis_stack-0.2.0rc2.dist-info/licenses/LICENSE,sha256=JPoP_1CRV3QCODMVJ7c5FnHBO1qn2PpfhM6KJpZ_uLQ,1070
392
+ aegis_stack-0.2.0rc2.dist-info/RECORD,,