fastapi-fullstack 0.2.11__tar.gz → 0.2.12__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (794) hide show
  1. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/PKG-INFO +1 -1
  2. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/fastapi_gen/cli.py +8 -0
  3. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/fastapi_gen/config.py +8 -0
  4. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/fastapi_gen/prompts.py +34 -0
  5. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/pyproject.toml +1 -1
  6. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/VARIABLES.md +1 -0
  7. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/cookiecutter.json +1 -0
  8. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/hooks/post_gen_project.py +11 -0
  9. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/Makefile +19 -19
  10. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/.env.example +6 -0
  11. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +85 -4
  12. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +39 -0
  13. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +10 -5
  14. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +3 -1
  15. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_users.py +11 -11
  16. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +2 -6
  17. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/billing.py +4 -4
  18. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +7 -7
  19. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +2 -2
  20. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +12 -12
  21. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +6 -0
  22. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/backend/app/db/todo_pool.py +78 -0
  23. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/main.py +13 -0
  24. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/invitation.py +2 -2
  25. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +2 -2
  26. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/usage_event.py +2 -2
  27. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +2 -2
  28. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +3 -1
  29. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/organization.py +2 -0
  30. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/admin.py +11 -5
  31. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +555 -22
  32. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/facade.py +2 -2
  33. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/subscription_events.py +12 -12
  34. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/stripe_client.py +6 -5
  35. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/webhook_handler.py +2 -2
  36. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +2 -2
  37. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/backend/app/services/research.py +284 -0
  38. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +24 -6
  39. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +5 -1
  40. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +36 -5
  41. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +2 -11
  42. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +37 -0
  43. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/backend/tests/test_worker_taskiq.py +41 -0
  44. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +17 -1
  45. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +64 -0
  46. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +11 -0
  47. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx +50 -10
  48. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +26 -10
  49. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +49 -4
  50. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +53 -0
  51. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/research-panel.tsx +298 -0
  52. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +1 -1
  53. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +54 -1
  54. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-mode-store.ts +30 -0
  55. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +4 -0
  56. fastapi_fullstack-0.2.12/template/{{cookiecutter.project_slug}}/frontend/src/stores/research-store.ts +99 -0
  57. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +53 -0
  58. fastapi_fullstack-0.2.11/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -48
  59. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/.gitignore +0 -0
  60. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/LICENSE +0 -0
  61. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/README.md +0 -0
  62. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/fastapi_gen/__init__.py +0 -0
  63. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/fastapi_gen/generator.py +0 -0
  64. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md +0 -0
  65. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md +0 -0
  66. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/commands/review.md +0 -0
  67. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/api-conventions.md +0 -0
  68. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
  69. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +0 -0
  70. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/exceptions-security.md +0 -0
  71. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/frontend.md +0 -0
  72. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/schemas-models.md +0 -0
  73. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/rules/testing.md +0 -0
  74. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
  75. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  76. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.gitignore +0 -0
  77. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
  78. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
  79. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -0
  80. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/CONTRIBUTING.md +0 -0
  81. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/ENV_VARS.md +0 -0
  82. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md +0 -0
  83. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/README.md +0 -0
  84. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/SECURITY.md +0 -0
  85. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  86. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  87. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
  88. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
  89. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  90. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  91. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0000_create_users.py +0 -0
  92. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0001_create_organization_tables.py +0 -0
  93. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0002_backfill_personal_orgs.py +0 -0
  94. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0003_add_is_app_admin.py +0 -0
  95. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_5_create_core_tables.py +0 -0
  96. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_create_audit_log.py +0 -0
  97. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0005_add_org_id_to_conversations_and_rag.py +0 -0
  98. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0006_backfill_org_id_on_conversations.py +0 -0
  99. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0007_create_knowledge_bases.py +0 -0
  100. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0008_backfill_default_kbs.py +0 -0
  101. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0009_conv_active_kb_ids.py +0 -0
  102. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0010_org_billing_seats.py +0 -0
  103. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0011_create_plan_price_tables.py +0 -0
  104. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0012_create_subscription_table.py +0 -0
  105. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0013_create_stripe_event_table.py +0 -0
  106. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0014_credits_usage_events.py +0 -0
  107. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0015_create_mv_usage_daily.py +0 -0
  108. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0016_user_onboarding_at.py +0 -0
  109. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0018_user_slash_commands.py +0 -0
  110. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0019_user_external_id.py +0 -0
  111. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0020_conversation_external_user_id.py +0 -0
  112. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0021_create_items.py +0 -0
  113. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  114. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  115. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
  116. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -0
  117. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -0
  118. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +0 -0
  119. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +0 -0
  120. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -0
  121. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
  122. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/antv_chart.py +0 -0
  123. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/ask_user_tool.py +0 -0
  124. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_render.py +0 -0
  125. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_tool.py +0 -0
  126. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py +0 -0
  127. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
  128. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/fetch_url.py +0 -0
  129. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/map_tool.py +0 -0
  130. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +0 -0
  131. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +0 -0
  132. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  133. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +0 -0
  134. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  135. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  136. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -0
  137. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +0 -0
  138. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py +0 -0
  139. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_stats.py +0 -0
  140. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
  141. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +0 -0
  142. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/contact.py +0 -0
  143. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +0 -0
  144. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
  145. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/invitations.py +0 -0
  146. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +0 -0
  147. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py +0 -0
  148. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/marketing.py +0 -0
  149. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_slash_commands.py +0 -0
  150. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/members.py +0 -0
  151. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
  152. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/organizations.py +0 -0
  153. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +0 -0
  154. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  155. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +0 -0
  156. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +0 -0
  157. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  158. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  159. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  160. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  161. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  162. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +0 -0
  163. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
  164. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/create_app_admin.py +0 -0
  165. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  166. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +0 -0
  167. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  168. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/commands/sync_stripe_plans.py +0 -0
  169. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  170. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/audit.py +0 -0
  171. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  172. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py +0 -0
  173. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  174. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
  175. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  176. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -0
  177. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
  178. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  179. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  180. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  181. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
  182. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  183. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  184. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -0
  185. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/audit_log.py +0 -0
  186. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +0 -0
  187. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +0 -0
  188. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +0 -0
  189. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +0 -0
  190. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +0 -0
  191. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +0 -0
  192. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/credit_transaction.py +0 -0
  193. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +0 -0
  194. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/knowledge_base.py +0 -0
  195. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py +0 -0
  196. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/organization.py +0 -0
  197. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/plan.py +0 -0
  198. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +0 -0
  199. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +0 -0
  200. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
  201. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/stripe_event.py +0 -0
  202. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/subscription.py +0 -0
  203. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +0 -0
  204. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +0 -0
  205. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
  206. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user_slash_command.py +0 -0
  207. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
  208. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
  209. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -0
  210. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +0 -0
  211. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +0 -0
  212. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +0 -0
  213. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +0 -0
  214. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +0 -0
  215. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +0 -0
  216. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/credit_transaction.py +0 -0
  217. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +0 -0
  218. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/knowledge_base.py +0 -0
  219. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/member.py +0 -0
  220. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +0 -0
  221. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/organization.py +0 -0
  222. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/plan.py +0 -0
  223. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +0 -0
  224. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  225. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/stripe_event.py +0 -0
  226. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/subscription.py +0 -0
  227. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +0 -0
  228. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +0 -0
  229. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user_slash_command.py +0 -0
  230. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  231. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  232. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/admin.py +0 -0
  233. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  234. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/billing.py +0 -0
  235. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +0 -0
  236. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/contact.py +0 -0
  237. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +0 -0
  238. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -0
  239. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +0 -0
  240. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/knowledge_base.py +0 -0
  241. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/marketing.py +0 -0
  242. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py +0 -0
  243. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/password_reset.py +0 -0
  244. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +0 -0
  245. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +0 -0
  246. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  247. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +0 -0
  248. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  249. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
  250. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user_slash_command.py +0 -0
  251. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  252. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -0
  253. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +0 -0
  254. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +0 -0
  255. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/anomaly_detection.py +0 -0
  256. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/__init__.py +0 -0
  257. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/checkout_service.py +0 -0
  258. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/credit_service.py +0 -0
  259. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/exceptions.py +0 -0
  260. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/__init__.py +0 -0
  261. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/customer_events.py +0 -0
  262. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/invoice_events.py +0 -0
  263. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/payment_events.py +0 -0
  264. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/pricing.py +0 -0
  265. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/subscription_service.py +0 -0
  266. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +0 -0
  267. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/__init__.py +0 -0
  268. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/base.py +0 -0
  269. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/router.py +0 -0
  270. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/slack.py +0 -0
  271. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/telegram.py +0 -0
  272. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/contact.py +0 -0
  273. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +0 -0
  274. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/__init__.py +0 -0
  275. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/exceptions.py +0 -0
  276. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/__init__.py +0 -0
  277. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/base.py +0 -0
  278. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/log.py +0 -0
  279. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/resend.py +0 -0
  280. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/smtp.py +0 -0
  281. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/service.py +0 -0
  282. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/email/templates.py +0 -0
  283. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +0 -0
  284. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +0 -0
  285. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/health.py +0 -0
  286. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/invitation.py +0 -0
  287. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +0 -0
  288. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/knowledge_base.py +0 -0
  289. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/member.py +0 -0
  290. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +0 -0
  291. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/newsletter.py +0 -0
  292. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/organization.py +0 -0
  293. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +0 -0
  294. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/__init__.py +0 -0
  295. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/config.py +0 -0
  296. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/__init__.py +0 -0
  297. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/google_drive.py +0 -0
  298. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/s3.py +0 -0
  299. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/documents.py +0 -0
  300. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/embeddings.py +0 -0
  301. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/image_describer.py +0 -0
  302. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/ingestion.py +0 -0
  303. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/models.py +0 -0
  304. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/reranker.py +0 -0
  305. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/retrieval.py +0 -0
  306. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/__init__.py +0 -0
  307. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/base.py +0 -0
  308. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/google_drive.py +0 -0
  309. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/s3.py +0 -0
  310. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/vectorstore.py +0 -0
  311. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +0 -0
  312. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_status.py +0 -0
  313. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +0 -0
  314. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/__init__.py +0 -0
  315. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/rules.py +0 -0
  316. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/service.py +0 -0
  317. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/storage.py +0 -0
  318. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  319. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +0 -0
  320. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/usage.py +0 -0
  321. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/user_slash_command.py +0 -0
  322. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  323. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
  324. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -0
  325. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/__init__.py +0 -0
  326. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/channel.py +0 -0
  327. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/rag.py +0 -0
  328. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
  329. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
  330. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/anomaly_tasks.py +0 -0
  331. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/cleanup_tasks.py +0 -0
  332. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/email_tasks.py +0 -0
  333. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +0 -0
  334. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
  335. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  336. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  337. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  338. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  339. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  340. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
  341. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
  342. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  343. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
  344. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +0 -0
  345. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  346. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -0
  347. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_chart_tool.py +0 -0
  348. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  349. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  350. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_conversation_kb_toggle.py +0 -0
  351. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  352. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_fetch_url.py +0 -0
  353. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_kb_scoping.py +0 -0
  354. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +0 -0
  355. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_rbac_teams.py +0 -0
  356. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  357. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories_teams.py +0 -0
  358. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  359. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
  360. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +0 -0
  361. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_members.py +0 -0
  362. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_organizations.py +0 -0
  363. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_ssrf.py +0 -0
  364. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_stripe_seats.py +0 -0
  365. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_tenant_isolation.py +0 -0
  366. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/backend/tests/test_web_search.py +0 -0
  367. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -0
  368. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -0
  369. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -0
  370. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
  371. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/architecture.md +0 -0
  372. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/commands.md +0 -0
  373. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/configuration.md +0 -0
  374. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/deploy.md +0 -0
  375. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -0
  376. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md +0 -0
  377. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -0
  378. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +0 -0
  379. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +0 -0
  380. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +0 -0
  381. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/configure-sync-sources.md +0 -0
  382. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/customize-agent-prompt.md +0 -0
  383. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/howto/use-ratings.md +0 -0
  384. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -0
  385. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/permissions.md +0 -0
  386. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
  387. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.html +0 -0
  388. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.txt +0 -0
  389. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.html +0 -0
  390. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.txt +0 -0
  391. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.html +0 -0
  392. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.txt +0 -0
  393. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.html +0 -0
  394. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.txt +0 -0
  395. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.html +0 -0
  396. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.txt +0 -0
  397. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.html +0 -0
  398. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.txt +0 -0
  399. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.html +0 -0
  400. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.txt +0 -0
  401. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.html +0 -0
  402. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.txt +0 -0
  403. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.html +0 -0
  404. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.txt +0 -0
  405. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.html +0 -0
  406. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.txt +0 -0
  407. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.html +0 -0
  408. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.txt +0 -0
  409. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.html +0 -0
  410. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.txt +0 -0
  411. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.html +0 -0
  412. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.txt +0 -0
  413. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
  414. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.editorconfig +0 -0
  415. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  416. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  417. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.husky/pre-commit +0 -0
  418. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  419. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  420. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
  421. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/content/blog/rag-defaults-that-age-well.mdx +0 -0
  422. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/content/blog/shipping-ai-saas-template.mdx +0 -0
  423. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/content/blog/streaming-tool-calls-without-tears.mdx +0 -0
  424. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  425. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  426. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  427. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  428. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +0 -0
  429. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  430. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
  431. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
  432. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
  433. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
  434. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  435. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  436. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/forgot-password/page.tsx +0 -0
  437. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
  438. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
  439. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/magic-link-sent/page.tsx +0 -0
  440. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
  441. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/reset-password/page.tsx +0 -0
  442. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +0 -0
  443. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/layout.tsx +0 -0
  444. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/page.tsx +0 -0
  445. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +0 -0
  446. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/stripe-events/page.tsx +0 -0
  447. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/system/page.tsx +0 -0
  448. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/users/page.tsx +0 -0
  449. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/page.tsx +0 -0
  450. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/invoices/page.tsx +0 -0
  451. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/page.tsx +0 -0
  452. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/payment-methods/page.tsx +0 -0
  453. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/subscription/page.tsx +0 -0
  454. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/page.tsx +0 -0
  455. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -0
  456. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -0
  457. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/invitations/[token]/page.tsx +0 -0
  458. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/[id]/page.tsx +0 -0
  459. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/page.tsx +0 -0
  460. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
  461. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/members/page.tsx +0 -0
  462. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx +0 -0
  463. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
  464. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +0 -0
  465. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx +0 -0
  466. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/appearance/page.tsx +0 -0
  467. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +0 -0
  468. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/notifications/page.tsx +0 -0
  469. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +0 -0
  470. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/profile/page.tsx +0 -0
  471. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/slash-commands/page.tsx +0 -0
  472. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/about/page.tsx +0 -0
  473. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
  474. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/layout.tsx +0 -0
  475. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/page.tsx +0 -0
  476. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/[slug]/page.tsx +0 -0
  477. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/page.tsx +0 -0
  478. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/changelog/page.tsx +0 -0
  479. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/community/page.tsx +0 -0
  480. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/contact/page.tsx +0 -0
  481. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +0 -0
  482. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/help/page.tsx +0 -0
  483. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
  484. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/cookies/page.tsx +0 -0
  485. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/privacy/page.tsx +0 -0
  486. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/terms/page.tsx +0 -0
  487. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/[step]/page.tsx +0 -0
  488. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/page.tsx +0 -0
  489. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
  490. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/layout.tsx +0 -0
  491. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/page.tsx +0 -0
  492. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/security/page.tsx +0 -0
  493. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +0 -0
  494. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/[id]/route.ts +0 -0
  495. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/route.ts +0 -0
  496. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/users/route.ts +0 -0
  497. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/export/route.ts +0 -0
  498. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/route.ts +0 -0
  499. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/summary/route.ts +0 -0
  500. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stats/route.ts +0 -0
  501. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stripe-events/route.ts +0 -0
  502. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/impersonate/route.ts +0 -0
  503. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/route.ts +0 -0
  504. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/route.ts +0 -0
  505. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
  506. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
  507. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/request/route.ts +0 -0
  508. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts +0 -0
  509. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
  510. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
  511. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/confirm/route.ts +0 -0
  512. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/request/route.ts +0 -0
  513. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
  514. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
  515. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/checkout/route.ts +0 -0
  516. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/invoices/route.ts +0 -0
  517. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/me/[...path]/route.ts +0 -0
  518. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/portal/route.ts +0 -0
  519. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/contact/route.ts +0 -0
  520. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/[messageId]/rate/route.ts +0 -0
  521. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
  522. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
  523. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/[shareId]/route.ts +0 -0
  524. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/route.ts +0 -0
  525. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/export/route.ts +0 -0
  526. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
  527. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +0 -0
  528. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/tool-stats/route.ts +0 -0
  529. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +0 -0
  530. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +0 -0
  531. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
  532. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/invitations/[token]/route.ts +0 -0
  533. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/[docId]/route.ts +0 -0
  534. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/route.ts +0 -0
  535. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/route.ts +0 -0
  536. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/route.ts +0 -0
  537. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/trigger/route.ts +0 -0
  538. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/connectors/route.ts +0 -0
  539. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/route.ts +0 -0
  540. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/route.ts +0 -0
  541. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/[id]/route.ts +0 -0
  542. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/builtin/route.ts +0 -0
  543. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/custom/route.ts +0 -0
  544. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/route.ts +0 -0
  545. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/avatar/route.ts +0 -0
  546. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/invitations/route.ts +0 -0
  547. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/[userId]/route.ts +0 -0
  548. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/route.ts +0 -0
  549. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/route.ts +0 -0
  550. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/route.ts +0 -0
  551. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/[id]/route.ts +0 -0
  552. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/route.ts +0 -0
  553. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +0 -0
  554. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/avatar/route.ts +0 -0
  555. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/route.ts +0 -0
  556. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -0
  557. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +0 -0
  558. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +0 -0
  559. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -0
  560. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +0 -0
  561. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -0
  562. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -0
  563. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +0 -0
  564. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +0 -0
  565. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +0 -0
  566. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -0
  567. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +0 -0
  568. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +0 -0
  569. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -0
  570. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +0 -0
  571. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -0
  572. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -0
  573. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -0
  574. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/apple-icon.tsx +0 -0
  575. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +0 -0
  576. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
  577. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/icon.tsx +0 -0
  578. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
  579. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/manifest.ts +0 -0
  580. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +0 -0
  581. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/opengraph-image.tsx +0 -0
  582. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
  583. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/robots.ts +0 -0
  584. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/app/sitemap.ts +0 -0
  585. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/admin-nav.tsx +0 -0
  586. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/user-detail-drawer.tsx +0 -0
  587. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/forgot-password-form.tsx +0 -0
  588. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
  589. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
  590. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/oauth-buttons.tsx +0 -0
  591. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
  592. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/reset-password-form.tsx +0 -0
  593. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/billing-card.tsx +0 -0
  594. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/credits-panel.tsx +0 -0
  595. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/index.ts +0 -0
  596. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/invoices-panel.tsx +0 -0
  597. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/payment-methods-panel.tsx +0 -0
  598. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/seat-selector-dialog.tsx +0 -0
  599. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/subscription-panel.tsx +0 -0
  600. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/usage-gauge.tsx +0 -0
  601. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/blog/mdx-components.tsx +0 -0
  602. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/brand-override.tsx +0 -0
  603. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.tsx +0 -0
  604. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-empty-state.tsx +0 -0
  605. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +0 -0
  606. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
  607. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-panel.tsx +0 -0
  608. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
  609. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/map-leaflet.tsx +0 -0
  610. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/map-message.tsx +0 -0
  611. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
  612. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/pending-messages.tsx +0 -0
  613. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +0 -0
  614. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +0 -0
  615. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-command-palette.tsx +0 -0
  616. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-commands.ts +0 -0
  617. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -0
  618. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/active-sessions.tsx +0 -0
  619. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/onboarding-banner.tsx +0 -0
  620. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-hero.tsx +0 -0
  621. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/quick-actions.tsx +0 -0
  622. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/recent-activity.tsx +0 -0
  623. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/segmented-control.tsx +0 -0
  624. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card.tsx +0 -0
  625. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/subscription-chip.tsx +0 -0
  626. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/team-summary.tsx +0 -0
  627. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/tool-usage.tsx +0 -0
  628. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/top-models.tsx +0 -0
  629. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline.tsx +0 -0
  630. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
  631. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  632. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/create-kb-dialog.tsx +0 -0
  633. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/index.ts +0 -0
  634. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/kb-list.tsx +0 -0
  635. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
  636. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +0 -0
  637. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -0
  638. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/command-palette.tsx +0 -0
  639. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
  640. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  641. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +0 -0
  642. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/mobile-tab-bar.tsx +0 -0
  643. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/page-transition.tsx +0 -0
  644. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
  645. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/cookies-content.tsx +0 -0
  646. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/privacy-content.tsx +0 -0
  647. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/terms-content.tsx +0 -0
  648. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/animated-number.tsx +0 -0
  649. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/brand-icon.tsx +0 -0
  650. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/code-preview.tsx +0 -0
  651. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/contact-form.tsx +0 -0
  652. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/cookie-banner.tsx +0 -0
  653. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/data-flow-diagram.tsx +0 -0
  654. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/faq-accordion.tsx +0 -0
  655. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-glyph.tsx +0 -0
  656. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-mockup.tsx +0 -0
  657. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-section.tsx +0 -0
  658. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/final-cta.tsx +0 -0
  659. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/footer-config.ts +0 -0
  660. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero-demo.tsx +0 -0
  661. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero.tsx +0 -0
  662. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/highlight.tsx +0 -0
  663. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/how-it-works.tsx +0 -0
  664. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/legal-page.tsx +0 -0
  665. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/logos-strip.tsx +0 -0
  666. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-footer.tsx +0 -0
  667. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-page-layout.tsx +0 -0
  668. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marquee.tsx +0 -0
  669. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/newsletter-signup.tsx +0 -0
  670. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pill-nav.tsx +0 -0
  671. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pricing-teaser.tsx +0 -0
  672. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/reveal.tsx +0 -0
  673. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/section.tsx +0 -0
  674. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-carousel.tsx +0 -0
  675. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-grid.tsx +0 -0
  676. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-shell.tsx +0 -0
  677. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-state.ts +0 -0
  678. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-agent.tsx +0 -0
  679. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-data.tsx +0 -0
  680. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-done.tsx +0 -0
  681. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-team.tsx +0 -0
  682. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-welcome.tsx +0 -0
  683. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/drag-drop-overlay.tsx +0 -0
  684. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-wizard.tsx +0 -0
  685. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/seo/json-ld.tsx +0 -0
  686. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/brand-color-picker.tsx +0 -0
  687. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx +0 -0
  688. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-section.tsx +0 -0
  689. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/slash-commands-manager.tsx +0 -0
  690. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/empty-state.tsx +0 -0
  691. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/error-state.tsx +0 -0
  692. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/index.ts +0 -0
  693. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/loading-state.tsx +0 -0
  694. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/create-org-dialog.tsx +0 -0
  695. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/index.ts +0 -0
  696. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/invite-member-dialog.tsx +0 -0
  697. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/members-table.tsx +0 -0
  698. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/org-switcher.tsx +0 -0
  699. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
  700. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
  701. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
  702. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +0 -0
  703. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +0 -0
  704. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert.tsx +0 -0
  705. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +0 -0
  706. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
  707. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
  708. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
  709. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
  710. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +0 -0
  711. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +0 -0
  712. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
  713. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
  714. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
  715. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
  716. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +0 -0
  717. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +0 -0
  718. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/question-prompt.tsx +0 -0
  719. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +0 -0
  720. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +0 -0
  721. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +0 -0
  722. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +0 -0
  723. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
  724. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/skeleton.tsx +0 -0
  725. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/spinner.tsx +0 -0
  726. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +0 -0
  727. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +0 -0
  728. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +0 -0
  729. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +0 -0
  730. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +0 -0
  731. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -0
  732. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +0 -0
  733. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-users.ts +0 -0
  734. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
  735. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-billing.ts +0 -0
  736. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +0 -0
  737. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
  738. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-invitations.ts +0 -0
  739. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-knowledge-bases.ts +0 -0
  740. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-members.ts +0 -0
  741. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-organizations.ts +0 -0
  742. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +0 -0
  743. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-slash-commands.ts +0 -0
  744. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
  745. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
  746. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +0 -0
  747. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
  748. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/blog.ts +0 -0
  749. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/changelog.ts +0 -0
  750. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
  751. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/contact-info.ts +0 -0
  752. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts +0 -0
  753. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +0 -0
  754. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/schema-org.ts +0 -0
  755. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/seo.ts +0 -0
  756. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
  757. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/slash-commands-api.ts +0 -0
  758. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/teaser-plans.ts +0 -0
  759. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
  760. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  761. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
  762. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
  763. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
  764. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
  765. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
  766. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
  767. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/file-preview-store.ts +0 -0
  768. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/kb-selection-store.ts +0 -0
  769. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/org-store.ts +0 -0
  770. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +0 -0
  771. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
  772. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
  773. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  774. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
  775. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/billing.ts +0 -0
  776. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -0
  777. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -0
  778. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/knowledge-base.ts +0 -0
  779. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/organization.ts +0 -0
  780. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +0 -0
  781. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/src/types/speech.d.ts +0 -0
  782. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  783. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/vercel.json +0 -0
  784. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  785. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
  786. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
  787. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
  788. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
  789. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
  790. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
  791. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
  792. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
  793. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
  794. {fastapi_fullstack-0.2.11 → fastapi_fullstack-0.2.12}/template/{{cookiecutter.project_slug}}/nginx/ssl/.gitkeep +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-fullstack
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: Full-stack FastAPI + Next.js template generator with PydanticAI/LangChain agents, WebSocket streaming, 20+ enterprise integrations, and Logfire/LangSmith observability. Ship AI apps fast. CLI tool to generate production-ready FastAPI + Next.js projects with AI agents, auth, and observability.
5
5
  Project-URL: Homepage, https://github.com/vstorm-co/full-stack-ai-agent-template
6
6
  Project-URL: Documentation, https://github.com/vstorm-co/full-stack-ai-agent-template#readme
@@ -490,6 +490,12 @@ def new(output: Path | None, no_input: bool, name: str | None, minimal: bool) ->
490
490
  default=False,
491
491
  help="Enable the skills system (SkillsToolset loads SKILL.md files from backend/skills/, PydanticAI only)",
492
492
  )
493
+ @click.option(
494
+ "--deep-research",
495
+ is_flag=True,
496
+ default=False,
497
+ help="Enable the deep research agent (TODO planner + subagents + context manager, PydanticAI only)",
498
+ )
493
499
  @click.option("--session-management", is_flag=True, help="Enable session management")
494
500
  @click.option(
495
501
  "--reverse-proxy",
@@ -768,6 +774,7 @@ def create(
768
774
  antv_charts: bool,
769
775
  code_execution: bool,
770
776
  skills: bool,
777
+ deep_research: bool,
771
778
  session_management: bool,
772
779
  reverse_proxy: str,
773
780
  kubernetes: bool,
@@ -1199,6 +1206,7 @@ def create(
1199
1206
  enable_antv_charts=antv_charts,
1200
1207
  enable_code_execution=code_execution,
1201
1208
  enable_skills=skills,
1209
+ enable_deep_research=deep_research,
1202
1210
  enable_session_management=session_management,
1203
1211
  reverse_proxy=_rp_map[reverse_proxy],
1204
1212
  enable_kubernetes=kubernetes,
@@ -328,6 +328,7 @@ class ProjectConfig(BaseModel):
328
328
  enable_antv_charts: bool = False
329
329
  enable_code_execution: bool = False
330
330
  enable_skills: bool = False
331
+ enable_deep_research: bool = False
331
332
  use_telegram: bool = False
332
333
  use_slack: bool = False
333
334
  enable_cors: bool = True
@@ -490,6 +491,12 @@ class ProjectConfig(BaseModel):
490
491
  "PydanticDeep uses Logfire for observability."
491
492
  )
492
493
 
494
+ if self.enable_deep_research and self.ai_framework != AIFrameworkType.PYDANTIC_AI:
495
+ raise ValueError(
496
+ "Deep research requires the PydanticAI framework. "
497
+ "Quick fix: set --ai-framework pydantic_ai, or drop --deep-research."
498
+ )
499
+
493
500
  # CrewAI 1.13.x pins opentelemetry-sdk<1.35 which conflicts with
494
501
  # logfire>=4.30 (needs opentelemetry-sdk>=1.39). Disable logfire when
495
502
  # using CrewAI to keep dependencies resolvable.
@@ -817,6 +824,7 @@ class ProjectConfig(BaseModel):
817
824
  "enable_antv_charts": self.enable_antv_charts,
818
825
  "enable_code_execution": self.enable_code_execution,
819
826
  "enable_skills": self.enable_skills,
827
+ "enable_deep_research": self.enable_deep_research,
820
828
  "enable_webhooks": self.enable_webhooks,
821
829
  # Legacy fixed values (WebSocket always uses JWT)
822
830
  "websocket_auth": "jwt",
@@ -970,6 +970,30 @@ def prompt_skills() -> bool:
970
970
  )
971
971
 
972
972
 
973
+ def prompt_deep_research() -> bool:
974
+ """Prompt for the deep research agent (PydanticAI only)."""
975
+ console.print()
976
+ console.print("[bold cyan]Deep Research Agent[/]")
977
+ console.print(
978
+ "Turns the assistant into a deep research agent: a TODO planner, "
979
+ "researcher/analyst/writer subagents, and an automatic context manager. "
980
+ "The planner delegates web work to subagents and surfaces progress in a "
981
+ "live research panel. PydanticAI only. Activate at runtime with "
982
+ "ENABLE_DEEP_RESEARCH=true."
983
+ )
984
+ console.print()
985
+
986
+ return cast(
987
+ bool,
988
+ _check_cancelled(
989
+ questionary.confirm(
990
+ "Enable the deep research agent (PydanticAI only)?",
991
+ default=False,
992
+ ).ask()
993
+ ),
994
+ )
995
+
996
+
973
997
  def prompt_langsmith() -> bool:
974
998
  """Prompt for LangSmith observability."""
975
999
  return cast(
@@ -1482,6 +1506,7 @@ def run_interactive_prompts() -> ProjectConfig:
1482
1506
  "enable_antv_charts": False,
1483
1507
  "enable_code_execution": False,
1484
1508
  "enable_skills": False,
1509
+ "enable_deep_research": False,
1485
1510
  "rag_features": RAGFeatures(),
1486
1511
  "orm_type": OrmType.SQLALCHEMY,
1487
1512
  "sandbox_backend": "state",
@@ -1658,6 +1683,12 @@ def run_interactive_prompts() -> ProjectConfig:
1658
1683
  else:
1659
1684
  state["enable_skills"] = False
1660
1685
 
1686
+ def step_deep_research() -> None:
1687
+ if state["ai_framework"] == AIFrameworkType.PYDANTIC_AI:
1688
+ state["enable_deep_research"] = prompt_deep_research()
1689
+ else:
1690
+ state["enable_deep_research"] = False
1691
+
1661
1692
  def step_langsmith() -> None:
1662
1693
  if state["ai_framework"] in (
1663
1694
  AIFrameworkType.LANGCHAIN,
@@ -1731,6 +1762,7 @@ def run_interactive_prompts() -> ProjectConfig:
1731
1762
  ("AntV Diagrams & Maps", step_antv_charts),
1732
1763
  ("Code Execution", step_code_execution),
1733
1764
  ("Skills System", step_skills),
1765
+ ("Deep Research", step_deep_research),
1734
1766
  ("LangSmith", step_langsmith),
1735
1767
  ("Messaging Channels", step_channels),
1736
1768
  ("Teams & Billing", step_teams_billing),
@@ -1780,6 +1812,7 @@ def run_interactive_prompts() -> ProjectConfig:
1780
1812
  enable_antv_charts = state["enable_antv_charts"]
1781
1813
  enable_code_execution = state["enable_code_execution"]
1782
1814
  enable_skills = state["enable_skills"]
1815
+ enable_deep_research = state["enable_deep_research"]
1783
1816
  rag_features = state["rag_features"]
1784
1817
  enable_langsmith = state["enable_langsmith"]
1785
1818
  use_telegram = state["use_telegram"]
@@ -1825,6 +1858,7 @@ def run_interactive_prompts() -> ProjectConfig:
1825
1858
  enable_antv_charts=enable_antv_charts,
1826
1859
  enable_code_execution=enable_code_execution,
1827
1860
  enable_skills=enable_skills,
1861
+ enable_deep_research=enable_deep_research,
1828
1862
  use_telegram=use_telegram,
1829
1863
  use_slack=use_slack,
1830
1864
  rate_limit_requests=rate_limit_requests,
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-fullstack"
3
- version = "0.2.11"
3
+ version = "0.2.12"
4
4
  description = "Full-stack FastAPI + Next.js template generator with PydanticAI/LangChain agents, WebSocket streaming, 20+ enterprise integrations, and Logfire/LangSmith observability. Ship AI apps fast. CLI tool to generate production-ready FastAPI + Next.js projects with AI agents, auth, and observability."
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.11"
@@ -289,6 +289,7 @@ These variables are set automatically by the generator.
289
289
  | `enable_antv_charts` | bool | `false` | Adds the interactive `create_map` tool (Leaflet/OpenStreetMap, works out of the box) plus AntV advanced-diagram tools (flowchart, mind-map, org-chart, sankey, ...) via an `mcp-server-chart` Docker sidecar. Wired into all 5 frameworks. The AntV diagrams need the sidecar running (`docker compose --profile antv up -d`) and `ENABLE_ANTV_CHARTS=true` at runtime; maps work without it. Present in the production compose but profile-gated — off by default and publishes no host port, so it's opt-in per environment; for prod, self-host GPT-Vis-SSR via `ANTV_VIS_REQUEST_SERVER` rather than AntV's public render backend | Requires an AI framework |
290
290
  | `enable_code_execution` | bool | `false` | Adds a `run_python` tool backed by the Monty sandboxed Python interpreter (`pydantic-monty`). The model can compute projections, run aggregations, and call `create_chart`/`create_map` from inside the sandbox — charts render as interactive Recharts cards immediately. Sandbox allows `math`, `asyncio`, `json`, `datetime`, `re`; no `statistics`, `random`, `itertools`, numpy/pandas. Activated at runtime with `ENABLE_CODE_EXECUTION=true`. **PydanticAI only.** Temporary shim — swap to the official `CodeExecutionToolset` when it ships in pydantic-ai | Requires `use_pydantic_ai` |
291
291
  | `enable_skills` | bool | `false` | Adds a `pydantic-ai-skills` `SkillsToolset` that loads `SKILL.md` files from `backend/skills/` as agent tools (the model picks a skill, then follows its instructions). Ships the loader only — drop your own skills into `backend/skills/`; the toolset no-ops when the directory is empty. Pairs well with `enable_code_execution` for skills that compute. **PydanticAI only.** | Requires `use_pydantic_ai` |
292
+ | `enable_deep_research` | bool | `false` | Turns the assistant into a deep research agent: a TODO planner (`pydantic-ai-todo`), researcher/analyst/writer subagents (`subagents-pydantic-ai`), and an automatic context manager (`summarization-pydantic-ai`). The planner delegates web work to subagents and streams a live research panel (plan checklist, subagent status, context-usage meter). TODO state persists in PostgreSQL when available, else in memory. Activated at runtime with `ENABLE_DEEP_RESEARCH=true`; the client can opt a single turn out with `deep_research=false`. **PydanticAI only.** | Requires `use_pydantic_ai` |
292
293
 
293
294
  **Notes:**
294
295
 
@@ -94,6 +94,7 @@
94
94
  "enable_antv_charts": false,
95
95
  "enable_code_execution": false,
96
96
  "enable_skills": false,
97
+ "enable_deep_research": false,
97
98
  "enable_webhooks": false,
98
99
  "websocket_auth": "jwt",
99
100
  "websocket_auth_jwt": true,
@@ -50,6 +50,7 @@ enable_charts = "{{ cookiecutter.enable_charts }}" == "True"
50
50
  charts_channel_png = "{{ cookiecutter.charts_channel_png }}" == "True"
51
51
  enable_antv_charts = "{{ cookiecutter.enable_antv_charts }}" == "True"
52
52
  enable_code_execution = "{{ cookiecutter.enable_code_execution }}" == "True"
53
+ enable_deep_research = "{{ cookiecutter.enable_deep_research }}" == "True"
53
54
  use_pydantic_deep = "{{ cookiecutter.use_pydantic_deep }}" == "True"
54
55
  use_telegram = "{{ cookiecutter.use_telegram }}" == "True"
55
56
  use_slack = "{{ cookiecutter.use_slack }}" == "True"
@@ -156,6 +157,14 @@ if not enable_antv_charts:
156
157
  remove_file(os.path.join(frontend_src, "components", "chat", "map-message.tsx"))
157
158
  if not enable_code_execution:
158
159
  remove_file(os.path.join(backend_app, "agents", "tools", "code_execution.py"))
160
+ if not enable_deep_research:
161
+ remove_file(os.path.join(backend_app, "services", "research.py"))
162
+ remove_file(os.path.join(backend_app, "db", "todo_pool.py"))
163
+ if use_frontend:
164
+ frontend_src = os.path.join(os.getcwd(), "frontend", "src")
165
+ remove_file(os.path.join(frontend_src, "components", "chat", "research-panel.tsx"))
166
+ remove_file(os.path.join(frontend_src, "stores", "research-store.ts"))
167
+ remove_file(os.path.join(frontend_src, "stores", "chat-mode-store.ts"))
159
168
 
160
169
  # --- No-AI mode: remove all AI/chat/conversation files ---
161
170
  if not use_ai:
@@ -440,12 +449,14 @@ if not use_any_background_tasks:
440
449
  remove_file(os.path.join(worker_dir, "taskiq_app.py"))
441
450
  remove_file(os.path.join(worker_dir, "arq_app.py"))
442
451
  remove_dir(os.path.join(worker_dir, "tasks"))
452
+ remove_file(os.path.join(backend_tests, "test_worker_taskiq.py"))
443
453
  else:
444
454
  if not use_celery:
445
455
  remove_file(os.path.join(worker_dir, "celery_app.py"))
446
456
  if not use_taskiq:
447
457
  remove_file(os.path.join(worker_dir, "taskiq_app.py"))
448
458
  remove_file(os.path.join(worker_dir, "tasks", "schedules.py"))
459
+ remove_file(os.path.join(backend_tests, "test_worker_taskiq.py"))
449
460
  if not use_arq:
450
461
  remove_file(os.path.join(worker_dir, "arq_app.py"))
451
462
 
@@ -283,8 +283,8 @@ taskiq-scheduler:
283
283
 
284
284
  # === Docker: Backend (Development) ===
285
285
  docker-up:
286
- docker-compose build app
287
- docker-compose up -d
286
+ docker compose build app
287
+ docker compose up -d
288
288
  @echo ""
289
289
  @echo "✅ Backend services started!"
290
290
  @echo " API: http://localhost:{{ cookiecutter.backend_port }}"
@@ -300,25 +300,25 @@ docker-up:
300
300
  {%- endif %}
301
301
 
302
302
  docker-down:
303
- docker-compose down
303
+ docker compose down
304
304
  {%- if cookiecutter.use_frontend %}
305
- docker-compose -f docker-compose.frontend.yml down 2>/dev/null || true
305
+ docker compose -f docker-compose.frontend.yml down 2>/dev/null || true
306
306
  {%- endif %}
307
307
 
308
308
  docker-logs:
309
- docker-compose logs -f
309
+ docker compose logs -f
310
310
 
311
311
  docker-build:
312
- docker-compose build
312
+ docker compose build
313
313
 
314
314
  docker-shell:
315
- docker-compose exec app /bin/bash
315
+ docker compose exec app /bin/bash
316
316
 
317
317
  {%- if cookiecutter.use_frontend %}
318
318
 
319
319
  # === Docker: Frontend (Development) ===
320
320
  docker-frontend:
321
- docker-compose -f docker-compose.frontend.yml up -d
321
+ docker compose -f docker-compose.frontend.yml up -d
322
322
  @echo ""
323
323
  @echo "✅ Frontend started!"
324
324
  @echo " URL: http://localhost:{{ cookiecutter.frontend_port }}"
@@ -326,18 +326,18 @@ docker-frontend:
326
326
  @echo "Note: Backend must be running (make docker-up)"
327
327
 
328
328
  docker-frontend-down:
329
- docker-compose -f docker-compose.frontend.yml down
329
+ docker compose -f docker-compose.frontend.yml down
330
330
 
331
331
  docker-frontend-logs:
332
- docker-compose -f docker-compose.frontend.yml logs -f
332
+ docker compose -f docker-compose.frontend.yml logs -f
333
333
 
334
334
  docker-frontend-build:
335
- docker-compose -f docker-compose.frontend.yml build
335
+ docker compose -f docker-compose.frontend.yml build
336
336
  {%- endif %}
337
337
 
338
338
  # === Docker: Production (with Traefik) ===
339
339
  docker-prod:
340
- docker-compose -f docker-compose.prod.yml up -d
340
+ docker compose -f docker-compose.prod.yml up -d
341
341
  @echo ""
342
342
  @echo "✅ Production services started with Traefik!"
343
343
  @echo ""
@@ -352,36 +352,36 @@ docker-prod:
352
352
  @echo " Traefik: https://traefik.$$DOMAIN"
353
353
 
354
354
  docker-prod-down:
355
- docker-compose -f docker-compose.prod.yml down
355
+ docker compose -f docker-compose.prod.yml down
356
356
 
357
357
  docker-prod-logs:
358
- docker-compose -f docker-compose.prod.yml logs -f
358
+ docker compose -f docker-compose.prod.yml logs -f
359
359
 
360
360
  docker-prod-build:
361
- docker-compose -f docker-compose.prod.yml build
361
+ docker compose -f docker-compose.prod.yml build
362
362
 
363
363
  {%- if cookiecutter.use_postgresql %}
364
364
 
365
365
  # === Docker: Individual Services ===
366
366
  docker-db:
367
- docker-compose up -d db
367
+ docker compose up -d db
368
368
  @echo ""
369
369
  @echo "✅ PostgreSQL started on port 5432"
370
370
  @echo " Connection: postgresql://postgres:postgres@localhost:5432/{{ cookiecutter.project_slug }}"
371
371
 
372
372
  docker-db-stop:
373
- docker-compose stop db
373
+ docker compose stop db
374
374
  {%- endif %}
375
375
 
376
376
  {%- if cookiecutter.enable_redis %}
377
377
 
378
378
  docker-redis:
379
- docker-compose up -d redis
379
+ docker compose up -d redis
380
380
  @echo ""
381
381
  @echo "✅ Redis started on port 6379"
382
382
 
383
383
  docker-redis-stop:
384
- docker-compose stop redis
384
+ docker compose stop redis
385
385
  {%- endif %}
386
386
 
387
387
  {%- if cookiecutter.use_frontend %}
@@ -259,6 +259,12 @@ ENABLE_CODE_EXECUTION=true
259
259
  CODE_EXECUTION_TIMEOUT_SECS=10
260
260
  CODE_EXECUTION_MAX_ALLOCATIONS=50000000
261
261
  {%- endif %}
262
+ {%- if cookiecutter.enable_deep_research %}
263
+
264
+ ENABLE_DEEP_RESEARCH=true
265
+ DEEP_RESEARCH_MAX_TOKENS=120000
266
+ DEEP_RESEARCH_COMPRESS_THRESHOLD=0.8
267
+ {%- endif %}
262
268
  {%- if cookiecutter.enable_langsmith %}
263
269
 
264
270
  # === LangSmith Observability ===
@@ -48,6 +48,9 @@ from app.agents.prompts import DEFAULT_SYSTEM_PROMPT
48
48
  {%- if cookiecutter.enable_rag %}
49
49
  from app.agents.prompts import get_system_prompt_with_rag
50
50
  {%- endif %}
51
+ {%- if cookiecutter.enable_deep_research %}
52
+ from app.agents.prompts import get_research_prompt
53
+ {%- endif %}
51
54
  from app.agents.tools import get_current_datetime
52
55
  from app.agents.tools.ask_user_tool import MAX_QUESTIONS, QuestionItem, format_answers
53
56
  {%- if cookiecutter.enable_rag %}
@@ -167,6 +170,32 @@ class Deps:
167
170
  {%- if cookiecutter.enable_code_execution %}
168
171
  emit_tool_event: EmitToolEvent | None = None
169
172
  {%- endif %}
173
+ {%- if cookiecutter.enable_deep_research %}
174
+ # Required by SubAgentDepsProtocol; kept empty (capabilities carry the agents).
175
+ subagents: dict[str, Any] = field(default_factory=dict)
176
+
177
+ def clone_for_subagent(self, max_depth: int = 0) -> "Deps":
178
+ """Create isolated deps for a delegated subagent.
179
+
180
+ Required by ``subagents-pydantic-ai`` (``SubAgentDepsProtocol``). Shares
181
+ the lightweight context but drops the interactive hooks and hands over an
182
+ empty ``subagents`` dict when ``max_depth <= 0`` so a subagent cannot
183
+ recurse.
184
+ """
185
+ return Deps(
186
+ user_id=self.user_id,
187
+ user_name=self.user_name,
188
+ {%- if cookiecutter.enable_teams and cookiecutter.enable_rag %}
189
+ kb_collection_names=self.kb_collection_names,
190
+ {%- endif %}
191
+ metadata=self.metadata,
192
+ ask_user=None,
193
+ {%- if cookiecutter.enable_code_execution %}
194
+ emit_tool_event=None,
195
+ {%- endif %}
196
+ subagents={} if max_depth <= 0 else self.subagents,
197
+ )
198
+ {%- endif %}
170
199
 
171
200
 
172
201
  class AssistantAgent:
@@ -181,7 +210,15 @@ class AssistantAgent:
181
210
  temperature: float | None = None,
182
211
  system_prompt: str | None = None,
183
212
  thinking_effort: str | None = None,
213
+ {%- if cookiecutter.enable_deep_research %}
214
+ deep_research: bool = False,
215
+ research_capabilities: list[Any] | None = None,
216
+ {%- endif %}
184
217
  ):
218
+ {%- if cookiecutter.enable_deep_research %}
219
+ self.deep_research = deep_research
220
+ self.research_capabilities = research_capabilities or []
221
+ {%- endif %}
185
222
  self.model_name = model_name or settings.AI_MODEL
186
223
  # ``temperature`` stays ``None`` when caller didn't set it — don't fall
187
224
  # back to settings.AI_TEMPERATURE here. Reasoning/o-series models
@@ -191,10 +228,22 @@ class AssistantAgent:
191
228
  self.thinking_effort = thinking_effort if thinking_effort is not None else (
192
229
  settings.AI_THINKING_EFFORT if settings.AI_THINKING_ENABLED else None
193
230
  )
231
+ {%- if cookiecutter.enable_deep_research %}
232
+ if deep_research:
233
+ self.system_prompt = system_prompt or get_research_prompt()
234
+ {%- if cookiecutter.enable_rag %}
235
+ else:
236
+ self.system_prompt = system_prompt or get_system_prompt_with_rag()
237
+ {%- else %}
238
+ else:
239
+ self.system_prompt = system_prompt or DEFAULT_SYSTEM_PROMPT
240
+ {%- endif %}
241
+ {%- else %}
194
242
  {%- if cookiecutter.enable_rag %}
195
243
  self.system_prompt = system_prompt or get_system_prompt_with_rag()
196
244
  {%- else %}
197
245
  self.system_prompt = system_prompt or DEFAULT_SYSTEM_PROMPT
246
+ {%- endif %}
198
247
  {%- endif %}
199
248
  self._agent: Agent[Deps, str] | None = None
200
249
 
@@ -202,14 +251,28 @@ class AssistantAgent:
202
251
  """Create and configure the PydanticAI agent."""
203
252
  model = _build_model(self.model_name)
204
253
 
205
- capabilities = [ReinjectSystemPrompt()]
254
+ capabilities: list[Any] = [ReinjectSystemPrompt()]
206
255
  if self.thinking_effort:
207
- capabilities.append(Thinking(effort=self.thinking_effort))
256
+ capabilities.append(Thinking(effort=self.thinking_effort)) # ty: ignore[invalid-argument-type]
257
+ {%- if cookiecutter.enable_web_search or cookiecutter.enable_web_fetch %}
258
+ # Local DuckDuckGo / fetch (the installed extras) — works uniformly across
259
+ # all providers, unlike provider-native web search.
260
+ {%- if cookiecutter.enable_deep_research %}
261
+ if not self.deep_research:
262
+ {%- if cookiecutter.enable_web_search %}
263
+ capabilities.append(WebSearch(native=False, local="duckduckgo"))
264
+ {%- endif %}
265
+ {%- if cookiecutter.enable_web_fetch %}
266
+ capabilities.append(WebFetch(native=False, local=True))
267
+ {%- endif %}
268
+ {%- else %}
208
269
  {%- if cookiecutter.enable_web_search %}
209
- capabilities.append(WebSearch())
270
+ capabilities.append(WebSearch(native=False, local="duckduckgo"))
210
271
  {%- endif %}
211
272
  {%- if cookiecutter.enable_web_fetch %}
212
- capabilities.append(WebFetch())
273
+ capabilities.append(WebFetch(native=False, local=True))
274
+ {%- endif %}
275
+ {%- endif %}
213
276
  {%- endif %}
214
277
 
215
278
  # The unified ``Thinking()`` capability enables reasoning, but for the
@@ -241,6 +304,10 @@ class AssistantAgent:
241
304
  if skills_dir.exists():
242
305
  toolsets.append(SkillsToolset(directories=[str(skills_dir)]))
243
306
  {%- endif %}
307
+ {%- if cookiecutter.enable_deep_research %}
308
+
309
+ capabilities.extend(self.research_capabilities)
310
+ {%- endif %}
244
311
 
245
312
  agent = Agent[Deps, str](
246
313
  model=model,
@@ -530,6 +597,10 @@ def get_agent(
530
597
  model_name: str | None = None,
531
598
  thinking_effort: str | None = None,
532
599
  temperature: float | None = None,
600
+ {%- if cookiecutter.enable_deep_research %}
601
+ deep_research: bool = False,
602
+ research_capabilities: list[Any] | None = None,
603
+ {%- endif %}
533
604
  ) -> AssistantAgent:
534
605
  """Factory function to create an AssistantAgent.
535
606
 
@@ -538,6 +609,12 @@ def get_agent(
538
609
  thinking_effort: Override thinking effort ("low", "medium", "high", or None to disable).
539
610
  temperature: Sampling temperature (typically 0.0-2.0). ``None`` falls back to
540
611
  ``settings.AI_TEMPERATURE``.
612
+ {%- if cookiecutter.enable_deep_research %}
613
+ deep_research: Build the planner persona and drop the planner's own web
614
+ tools so it delegates to subagents.
615
+ research_capabilities: Pre-built deep-research capabilities (
616
+ subagents, context manager), already ordered with the context manager last.
617
+ {%- endif %}
541
618
 
542
619
  Returns:
543
620
  Configured AssistantAgent instance.
@@ -546,6 +623,10 @@ def get_agent(
546
623
  model_name=model_name,
547
624
  thinking_effort=thinking_effort,
548
625
  temperature=temperature,
626
+ {%- if cookiecutter.enable_deep_research %}
627
+ deep_research=deep_research,
628
+ research_capabilities=research_capabilities,
629
+ {%- endif %}
549
630
  )
550
631
 
551
632
 
@@ -171,3 +171,42 @@ Retrieval budget: start with one focused search using short, distinctive keyword
171
171
  Citations: when you use retrieved documents, attach numbered references like [1], [2] to the specific claims they support, and list those sources at the end (filename, plus page if available). Cite only sources that appear in the search results — never fabricate citations, filenames, or page numbers.
172
172
 
173
173
  Missing evidence is not automatically a "no". If the documents don't cover the question, say briefly what you couldn't find, then still help: answer from general knowledge where that's appropriate (and note that you're doing so), or ask for the specific document or detail you'd need."""
174
+ {%- if cookiecutter.enable_deep_research %}
175
+
176
+
177
+ RESEARCH_SYSTEM_PROMPT = """You are a deep-research agent. You answer a research question by planning the work, delegating it to specialist subagents in parallel, and composing a well-sourced report. Work as a project lead, not a lone writer.
178
+
179
+ # How to run a research task
180
+ The user has explicitly switched on deep research, so ALWAYS run the full research flow for their request — plan, delegate to subagents, then synthesize a cited report. Never short-circuit with a quick direct answer, even if you think you already know it.
181
+
182
+ 0. **Clarify the scope with the user first.** Most research requests arrive under-specified, and researching the wrong thing wastes a lot of work. So BEFORE planning, judge whether you have enough to research well — and if not, call the `ask_user` tool ONCE up front with 2-4 batched questions, then wait for the answers before doing anything else. Treat a request as under-specified whenever the user hasn't pinned down the details that would materially change what you research. For a product, topic, or vendor (a car, gadget, software, company…), that usually means: the exact variant/generation and model year, new vs. used (or budget), the region/market, and the decision or use-case they care about (buying, comparing alternatives, reliability, running costs, etc.). Offer sensible `options` on each question so the user can answer in one click, and keep `allow_custom` on. Only skip the questions when the user already supplied those specifics, or explicitly asked for a general/high-level overview. When in doubt, ASK — a quick clarification is far cheaper than a misdirected report.
183
+ 1. **Plan.** Break the question into 3 to 6 concrete research steps and record them as a TODO plan. Seed the plan by calling `add_todo` once per step (each with a short `content` and an `active_form`). Do NOT use `write_todos` — it replaces the whole list silently and the user won't see your plan form. As you work, call `update_todo_status` to flip each step pending → in_progress → completed.
184
+ 2. **Delegate in parallel.** Use the `task` tool to hand each research step to the right subagent, and ALWAYS pass `mode="async"` so steps run concurrently and the user can watch them progress. Spawn the independent steps together, then call `wait_tasks` (with the returned task ids) to collect their results. Do not delegate the same step twice.
185
+ - `researcher` — gathers facts from the web; returns findings with source URLs/titles. Use it for anything needing current or external information.
186
+ - `analyst` — reasons over gathered findings: compares, computes, spots trends and contradictions. Text-only, no web.
187
+ - `writer` — composes the final structured report from the findings + analysis. Text-only.
188
+ 3. **Synthesize.** Once the subagents return, mark the remaining TODOs completed and write the final answer yourself (or via the `writer`), integrating the findings.
189
+
190
+ # The report
191
+ - Lead with a short direct answer, then the supporting detail.
192
+ - Attach numbered citations `[1]`, `[2]` to specific claims, and end with a `Sources` list (title + URL) drawn ONLY from what the researcher actually returned. Never invent a source, URL, or figure.
193
+ - When the findings contain comparable numbers (a trend, a ranking, a breakdown), render at least one chart so the report has a visual. Describe the chart's takeaway in a sentence; don't paste its JSON.
194
+
195
+ # Cost discipline
196
+ Keep the plan tight (3 to 6 steps), give each subagent one clear job, and don't spawn more researchers than the question needs — parallel subagents multiply token cost. Prefer one focused web pass per sub-question over many rephrasings."""
197
+
198
+
199
+ def get_research_prompt() -> str:
200
+ """Return the deep-research system prompt, or the default prompt when the
201
+ feature is disabled at runtime.
202
+ """
203
+ from app.core.config import settings
204
+
205
+ if not settings.ENABLE_DEEP_RESEARCH:
206
+ {%- if cookiecutter.enable_rag %}
207
+ return get_system_prompt_with_rag()
208
+ {%- else %}
209
+ return DEFAULT_SYSTEM_PROMPT
210
+ {%- endif %}
211
+ return RESEARCH_SYSTEM_PROMPT
212
+ {%- endif %}
@@ -56,7 +56,7 @@ logger = logging.getLogger(__name__)
56
56
 
57
57
  # Map LLM_PROVIDER settings value → pydantic-ai provider prefix
58
58
  _PROVIDER_PREFIXES: dict[str, str] = {
59
- "openai": "openai",
59
+ "openai": "openai-responses",
60
60
  "anthropic": "anthropic",
61
61
  "google": "google-gla", # Google AI (Gemini) via GOOGLE_API_KEY
62
62
  "openrouter": "openrouter",
@@ -201,16 +201,21 @@ class PydanticDeepAssistant:
201
201
  def _get_model_string(self) -> str:
202
202
  """Build pydantic-ai model string with provider prefix.
203
203
 
204
- If the model name already contains ':', returns it unchanged.
205
- Otherwise prepends the provider prefix from LLM_PROVIDER setting.
204
+ If the model name already contains ':', it is used as-is — except a bare
205
+ ``openai:`` prefix, which is rewritten to ``openai-responses:`` so it hits
206
+ the Responses API (tools + reasoning models). Otherwise the prefix from the
207
+ LLM_PROVIDER setting is prepended.
206
208
 
207
209
  Examples:
208
- "gpt-5.5" → "openai:gpt-5.5"
210
+ "gpt-5.5" → "openai-responses:gpt-5.5"
209
211
  "claude-opus-4-7" → "anthropic:claude-opus-4-7"
210
212
  "gemini-2.5-flash" → "google-gla:gemini-2.5-flash"
211
- "openai:gpt-5.5" → "openai:gpt-5.5" (unchanged)
213
+ "openai:gpt-5.5" → "openai-responses:gpt-5.5" (rewritten)
214
+ "openai-responses:gpt-5.5" → "openai-responses:gpt-5.5" (unchanged)
212
215
  """
213
216
  if ":" in self.model_name:
217
+ if self.model_name.startswith("openai:"):
218
+ return f"openai-responses:{self.model_name.removeprefix('openai:')}"
214
219
  return self.model_name
215
220
  prefix = _PROVIDER_PREFIXES.get(settings.LLM_PROVIDER, settings.LLM_PROVIDER)
216
221
  return f"{prefix}:{self.model_name}"
@@ -105,6 +105,8 @@ def register_exception_handlers(app: FastAPI) -> None:
105
105
 
106
106
  Call this after creating the FastAPI application instance.
107
107
  """
108
- app.add_exception_handler(AppException, app_exception_handler)
108
+ # Handler returns None for WebSocket connections (no JSONResponse there),
109
+ # which Starlette's HTTP-handler type doesn't model.
110
+ app.add_exception_handler(AppException, app_exception_handler) # ty: ignore[invalid-argument-type]
109
111
  # Uncomment to catch all unhandled exceptions:
110
112
  # app.add_exception_handler(Exception, unhandled_exception_handler)
@@ -138,52 +138,52 @@ async def impersonate_user(
138
138
  {%- elif cookiecutter.use_sqlite %}
139
139
 
140
140
  @router.get("", response_model=AdminUserList)
141
- def list_users(
141
+ async def list_users(
142
142
  _: CurrentAdmin,
143
143
  service: UserSvc,
144
144
  skip: int = Query(0, ge=0),
145
145
  limit: int = Query(50, ge=1, le=500),
146
146
  search: str | None = Query(None),
147
147
  ) -> Any:
148
- return service.admin_list_with_counts(skip=skip, limit=limit, search=search)
148
+ return await service.admin_list_with_counts(skip=skip, limit=limit, search=search)
149
149
 
150
150
 
151
151
  @router.get("/{user_id}", response_model=UserRead)
152
- def get_user(
152
+ async def get_user(
153
153
  user_id: str,
154
154
  _: CurrentAdmin,
155
155
  service: UserSvc,
156
156
  ) -> Any:
157
- return service.get_by_id(user_id)
157
+ return await service.get_by_id(user_id)
158
158
 
159
159
 
160
160
  @router.patch("/{user_id}", response_model=UserRead)
161
- def update_user(
161
+ async def update_user(
162
162
  user_id: str,
163
163
  user_in: UserUpdate,
164
164
  _: CurrentAdmin,
165
165
  service: UserSvc,
166
166
  ) -> Any:
167
- return service.update(user_id, user_in)
167
+ return await service.update(user_id, user_in)
168
168
 
169
169
 
170
170
  @router.delete("/{user_id}", status_code=status.HTTP_204_NO_CONTENT, response_model=None)
171
- def delete_user(
171
+ async def delete_user(
172
172
  user_id: str,
173
173
  _: CurrentAdmin,
174
174
  service: UserSvc,
175
175
  ) -> None:
176
- service.get_by_id(user_id)
177
- service.delete(user_id)
176
+ await service.get_by_id(user_id)
177
+ await service.delete(user_id)
178
178
 
179
179
 
180
180
  @router.post("/{user_id}/impersonate", response_model=dict)
181
- def impersonate_user(
181
+ async def impersonate_user(
182
182
  user_id: str,
183
183
  admin: CurrentAdmin,
184
184
  service: UserSvc,
185
185
  ) -> Any:
186
- target = service.get_by_id(user_id)
186
+ target = await service.get_by_id(user_id)
187
187
  token = create_access_token(
188
188
  subject=str(target.id),
189
189
  expires_delta=timedelta(hours=1),