fastapi-fullstack 0.2.15__tar.gz → 0.2.16__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 (885) hide show
  1. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/PKG-INFO +2 -2
  2. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/fastapi_gen/cli.py +17 -0
  3. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/fastapi_gen/config.py +7 -0
  4. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/fastapi_gen/prompts.py +7 -0
  5. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/pyproject.toml +2 -2
  6. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/VARIABLES.md +1 -0
  7. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/cookiecutter.json +1 -0
  8. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/hooks/post_gen_project.py +16 -0
  9. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.gitignore +5 -0
  10. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/CLAUDE.md +92 -0
  11. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0025_message_thinking.py +27 -0
  12. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +2 -0
  13. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +2 -0
  14. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +1 -0
  15. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py +4 -1
  16. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +43 -8
  17. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +1 -0
  18. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +1 -0
  19. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +3 -3
  20. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +3 -3
  21. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docker-compose.yml +3 -3
  22. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/assets/user-avatar.jpg +0 -0
  23. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/entry.css +7 -0
  24. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/index.html +26 -0
  25. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/main.tsx +74 -0
  26. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/postcss.config.mjs +5 -0
  27. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/shims/next-dynamic.ts +25 -0
  28. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/shims/next-image.tsx +28 -0
  29. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/shims/next-intl.ts +16 -0
  30. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/shims/next-link.tsx +12 -0
  31. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/shims/next-navigation.ts +22 -0
  32. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/vite-env.d.ts +9 -0
  33. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/demo-export/vite.config.ts +38 -0
  34. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/package.json +6 -2
  35. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.impl.tsx +1 -1
  36. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +6 -19
  37. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/map-message.tsx +1 -1
  38. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +6 -0
  39. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/research-replay-block.tsx +153 -0
  40. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-feed.tsx +8 -3
  41. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +26 -7
  42. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/fetch-url.tsx +46 -0
  43. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/web-search.tsx +24 -3
  44. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx +1329 -0
  45. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-replay.ts +18 -3
  46. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-step-replay.ts +34 -8
  47. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/agent-step-captions.ts +21 -0
  48. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/conversation-to-chat.ts +40 -10
  49. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/src/lib/research-from-tools.ts +72 -0
  50. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/frontend/src/lib/sql-format.ts +28 -0
  51. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +9 -1
  52. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +1 -0
  53. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +35 -0
  54. fastapi_fullstack-0.2.16/template/{{cookiecutter.project_slug}}/scripts/export_demo_html.py +239 -0
  55. fastapi_fullstack-0.2.15/template/{{cookiecutter.project_slug}}/CLAUDE.md +0 -187
  56. fastapi_fullstack-0.2.15/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx +0 -189
  57. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/.gitignore +0 -0
  58. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/LICENSE +0 -0
  59. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/README.md +0 -0
  60. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/fastapi_gen/__init__.py +0 -0
  61. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/fastapi_gen/generator.py +0 -0
  62. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md +0 -0
  63. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md +0 -0
  64. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/commands/review.md +0 -0
  65. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/api-conventions.md +0 -0
  66. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/architecture.md +0 -0
  67. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/code-style.md +0 -0
  68. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/exceptions-security.md +0 -0
  69. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/frontend.md +0 -0
  70. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/schemas-models.md +0 -0
  71. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/rules/testing.md +0 -0
  72. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/settings.json +0 -0
  73. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/agent-tool/SKILL.md +0 -0
  74. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/alembic-migration/SKILL.md +0 -0
  75. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/background-task/SKILL.md +0 -0
  76. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/billing-stripe/SKILL.md +0 -0
  77. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/channel-bot/SKILL.md +0 -0
  78. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/frontend-feature/SKILL.md +0 -0
  79. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/pytest-suite/SKILL.md +0 -0
  80. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.claude/skills/rag-knowledge/SKILL.md +0 -0
  81. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  82. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
  83. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
  84. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/CONTRIBUTING.md +0 -0
  85. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/ENV_VARS.md +0 -0
  86. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md +0 -0
  87. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/Makefile +0 -0
  88. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/README.md +0 -0
  89. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/SECURITY.md +0 -0
  90. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  91. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/.env.example +0 -0
  92. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  93. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
  94. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
  95. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  96. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  97. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0000_create_users.py +0 -0
  98. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0001_create_organization_tables.py +0 -0
  99. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0002_backfill_personal_orgs.py +0 -0
  100. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0003_add_is_app_admin.py +0 -0
  101. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_5_create_core_tables.py +0 -0
  102. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0004_create_audit_log.py +0 -0
  103. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0005_add_org_id_to_conversations_and_rag.py +0 -0
  104. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0006_backfill_org_id_on_conversations.py +0 -0
  105. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0007_create_knowledge_bases.py +0 -0
  106. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0008_backfill_default_kbs.py +0 -0
  107. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0009_conv_active_kb_ids.py +0 -0
  108. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0010_org_billing_seats.py +0 -0
  109. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0011_create_plan_price_tables.py +0 -0
  110. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0012_create_subscription_table.py +0 -0
  111. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0013_create_stripe_event_table.py +0 -0
  112. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0014_credits_usage_events.py +0 -0
  113. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0015_create_mv_usage_daily.py +0 -0
  114. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0016_user_onboarding_at.py +0 -0
  115. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0018_user_slash_commands.py +0 -0
  116. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0019_user_external_id.py +0 -0
  117. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0020_conversation_external_user_id.py +0 -0
  118. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0021_create_items.py +0 -0
  119. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0022_sync_source_org_scope.py +0 -0
  120. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0023_add_is_demo_conversations.py +0 -0
  121. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0024_create_webhook_tables.py +0 -0
  122. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  123. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  124. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
  125. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +0 -0
  126. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +0 -0
  127. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +0 -0
  128. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +0 -0
  129. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -0
  130. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +0 -0
  131. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py +0 -0
  132. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
  133. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/ask_user_tool.py +0 -0
  134. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_tool.py +0 -0
  135. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py +0 -0
  136. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/fetch_url.py +0 -0
  137. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py +0 -0
  138. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/research.py +0 -0
  139. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py +0 -0
  140. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/utils.py +0 -0
  141. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  142. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +0 -0
  143. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +0 -0
  144. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  145. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  146. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -0
  147. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py +0 -0
  148. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py +0 -0
  149. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_stats.py +0 -0
  150. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_users.py +0 -0
  151. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +0 -0
  152. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
  153. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/billing.py +0 -0
  154. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/channels.py +0 -0
  155. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/contact.py +0 -0
  156. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +0 -0
  157. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/files.py +0 -0
  158. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
  159. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/invitations.py +0 -0
  160. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +0 -0
  161. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py +0 -0
  162. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/marketing.py +0 -0
  163. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_slash_commands.py +0 -0
  164. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/members.py +0 -0
  165. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
  166. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/org_integrations.py +0 -0
  167. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/organizations.py +0 -0
  168. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/projects.py +0 -0
  169. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/public_demos.py +0 -0
  170. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/rag.py +0 -0
  171. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  172. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/slack_webhook.py +0 -0
  173. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/telegram_webhook.py +0 -0
  174. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
  175. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  176. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  177. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  178. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  179. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  180. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py +0 -0
  181. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
  182. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/create_app_admin.py +0 -0
  183. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  184. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/rag.py +0 -0
  185. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  186. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/sync_stripe_plans.py +0 -0
  187. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  188. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/audit.py +0 -0
  189. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  190. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py +0 -0
  191. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +0 -0
  192. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/crypto.py +0 -0
  193. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  194. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
  195. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  196. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/logging.py +0 -0
  197. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
  198. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  199. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  200. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  201. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
  202. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  203. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  204. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -0
  205. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/audit_log.py +0 -0
  206. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py +0 -0
  207. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py +0 -0
  208. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_session.py +0 -0
  209. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/chat_file.py +0 -0
  210. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation_share.py +0 -0
  211. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/credit_transaction.py +0 -0
  212. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +0 -0
  213. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/knowledge_base.py +0 -0
  214. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py +0 -0
  215. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/organization.py +0 -0
  216. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/plan.py +0 -0
  217. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/project.py +0 -0
  218. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/rag_document.py +0 -0
  219. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
  220. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/stripe_event.py +0 -0
  221. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/subscription.py +0 -0
  222. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_log.py +0 -0
  223. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_source.py +0 -0
  224. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
  225. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user_slash_command.py +0 -0
  226. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
  227. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
  228. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/db/todo_pool.py +0 -0
  229. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/main.py +0 -0
  230. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -0
  231. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py +0 -0
  232. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py +0 -0
  233. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py +0 -0
  234. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/chat_file.py +0 -0
  235. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation_share.py +0 -0
  236. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/credit_transaction.py +0 -0
  237. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/invitation.py +0 -0
  238. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +0 -0
  239. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/knowledge_base.py +0 -0
  240. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/member.py +0 -0
  241. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py +0 -0
  242. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/organization.py +0 -0
  243. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/plan.py +0 -0
  244. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/project.py +0 -0
  245. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/rag_document.py +0 -0
  246. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  247. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/stripe_event.py +0 -0
  248. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/subscription.py +0 -0
  249. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_log.py +0 -0
  250. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/sync_source.py +0 -0
  251. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/usage_event.py +0 -0
  252. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
  253. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user_slash_command.py +0 -0
  254. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  255. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  256. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/admin.py +0 -0
  257. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  258. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/billing.py +0 -0
  259. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/channel_bot.py +0 -0
  260. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/contact.py +0 -0
  261. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation_share.py +0 -0
  262. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py +0 -0
  263. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +0 -0
  264. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/knowledge_base.py +0 -0
  265. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/marketing.py +0 -0
  266. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py +0 -0
  267. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/organization.py +0 -0
  268. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/password_reset.py +0 -0
  269. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/project.py +0 -0
  270. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/rag.py +0 -0
  271. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  272. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/sync_source.py +0 -0
  273. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  274. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
  275. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user_slash_command.py +0 -0
  276. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  277. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -0
  278. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/admin.py +0 -0
  279. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +0 -0
  280. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/anomaly_detection.py +0 -0
  281. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/__init__.py +0 -0
  282. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/checkout_service.py +0 -0
  283. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/credit_service.py +0 -0
  284. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/exceptions.py +0 -0
  285. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/facade.py +0 -0
  286. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/__init__.py +0 -0
  287. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/customer_events.py +0 -0
  288. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/invoice_events.py +0 -0
  289. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/payment_events.py +0 -0
  290. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/handlers/subscription_events.py +0 -0
  291. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/pricing.py +0 -0
  292. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/stripe_client.py +0 -0
  293. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/subscription_service.py +0 -0
  294. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/billing/webhook_handler.py +0 -0
  295. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py +0 -0
  296. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/__init__.py +0 -0
  297. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/base.py +0 -0
  298. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/chart_render.py +0 -0
  299. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/router.py +0 -0
  300. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/slack.py +0 -0
  301. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/channels/telegram.py +0 -0
  302. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/contact.py +0 -0
  303. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation_share.py +0 -0
  304. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/__init__.py +0 -0
  305. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/exceptions.py +0 -0
  306. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/__init__.py +0 -0
  307. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/base.py +0 -0
  308. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/log.py +0 -0
  309. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/resend.py +0 -0
  310. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/providers/smtp.py +0 -0
  311. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/service.py +0 -0
  312. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/email/templates.py +0 -0
  313. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/file_storage.py +0 -0
  314. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/file_upload.py +0 -0
  315. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/health.py +0 -0
  316. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/invitation.py +0 -0
  317. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +0 -0
  318. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/knowledge_base.py +0 -0
  319. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/member.py +0 -0
  320. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py +0 -0
  321. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/newsletter.py +0 -0
  322. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/organization.py +0 -0
  323. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/project.py +0 -0
  324. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/__init__.py +0 -0
  325. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/config.py +0 -0
  326. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/__init__.py +0 -0
  327. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/google_drive.py +0 -0
  328. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/connectors/s3.py +0 -0
  329. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/documents.py +0 -0
  330. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/embeddings.py +0 -0
  331. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/image_describer.py +0 -0
  332. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/ingestion.py +0 -0
  333. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/models.py +0 -0
  334. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/reranker.py +0 -0
  335. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/retrieval.py +0 -0
  336. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/__init__.py +0 -0
  337. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/base.py +0 -0
  338. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/google_drive.py +0 -0
  339. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/sources/s3.py +0 -0
  340. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag/vectorstore.py +0 -0
  341. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_document.py +0 -0
  342. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_status.py +0 -0
  343. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rag_sync.py +0 -0
  344. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/__init__.py +0 -0
  345. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/rules.py +0 -0
  346. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/service.py +0 -0
  347. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/rate_limit/storage.py +0 -0
  348. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/research.py +0 -0
  349. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  350. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/sync_source.py +0 -0
  351. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/usage.py +0 -0
  352. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
  353. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/user_slash_command.py +0 -0
  354. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  355. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
  356. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -0
  357. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/__init__.py +0 -0
  358. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/channel.py +0 -0
  359. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/background/rag.py +0 -0
  360. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
  361. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/prefect_app.py +0 -0
  362. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
  363. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
  364. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/anomaly_tasks.py +0 -0
  365. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/cleanup_tasks.py +0 -0
  366. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/email_tasks.py +0 -0
  367. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/rag_tasks.py +0 -0
  368. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
  369. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  370. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  371. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  372. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  373. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  374. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
  375. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
  376. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  377. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
  378. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_openapi.py +0 -0
  379. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
  380. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  381. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -0
  382. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +0 -0
  383. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_chart_tool.py +0 -0
  384. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  385. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  386. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_conversation_kb_toggle.py +0 -0
  387. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  388. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_fetch_url.py +0 -0
  389. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_kb_scoping.py +0 -0
  390. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py +0 -0
  391. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_rbac_teams.py +0 -0
  392. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  393. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories_teams.py +0 -0
  394. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  395. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
  396. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_conversation.py +0 -0
  397. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_members.py +0 -0
  398. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_services_organizations.py +0 -0
  399. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_ssrf.py +0 -0
  400. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_stripe_seats.py +0 -0
  401. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_tenant_isolation.py +0 -0
  402. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_web_search.py +0 -0
  403. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker_taskiq.py +0 -0
  404. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
  405. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
  406. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/architecture.md +0 -0
  407. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/commands.md +0 -0
  408. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/configuration.md +0 -0
  409. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/deploy.md +0 -0
  410. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/file-processing.md +0 -0
  411. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md +0 -0
  412. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md +0 -0
  413. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/add-background-task.md +0 -0
  414. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/add-rag-source.md +0 -0
  415. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/add-sync-connector.md +0 -0
  416. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/configure-sync-sources.md +0 -0
  417. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/customize-agent-prompt.md +0 -0
  418. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/howto/use-ratings.md +0 -0
  419. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -0
  420. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/permissions.md +0 -0
  421. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
  422. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.html +0 -0
  423. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/email_verification.txt +0 -0
  424. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.html +0 -0
  425. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/invitation.txt +0 -0
  426. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.html +0 -0
  427. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/low_credits.txt +0 -0
  428. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.html +0 -0
  429. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/magic_link.txt +0 -0
  430. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.html +0 -0
  431. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/newsletter_welcome.txt +0 -0
  432. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.html +0 -0
  433. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/password_reset.txt +0 -0
  434. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.html +0 -0
  435. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_failed.txt +0 -0
  436. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.html +0 -0
  437. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/payment_succeeded.txt +0 -0
  438. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.html +0 -0
  439. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_canceled.txt +0 -0
  440. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.html +0 -0
  441. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/subscription_changed.txt +0 -0
  442. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.html +0 -0
  443. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_ending.txt +0 -0
  444. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.html +0 -0
  445. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/trial_expired.txt +0 -0
  446. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.html +0 -0
  447. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.txt +0 -0
  448. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
  449. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.editorconfig +0 -0
  450. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  451. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  452. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.husky/pre-commit +0 -0
  453. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  454. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  455. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
  456. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
  457. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/content/blog/rag-defaults-that-age-well.mdx +0 -0
  458. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/content/blog/shipping-ai-saas-template.mdx +0 -0
  459. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/content/blog/streaming-tool-calls-without-tears.mdx +0 -0
  460. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  461. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  462. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  463. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  464. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs +0 -0
  465. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  466. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
  467. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
  468. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
  469. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  470. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  471. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/public/.gitkeep +0 -0
  472. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/forgot-password/page.tsx +0 -0
  473. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
  474. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
  475. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/magic-link-sent/page.tsx +0 -0
  476. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
  477. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/reset-password/page.tsx +0 -0
  478. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/conversations/page.tsx +0 -0
  479. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/layout.tsx +0 -0
  480. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/page.tsx +0 -0
  481. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/page.tsx +0 -0
  482. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/ratings/ratings-chart.tsx +0 -0
  483. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/stripe-events/page.tsx +0 -0
  484. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/system/page.tsx +0 -0
  485. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/admin/users/page.tsx +0 -0
  486. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/page.tsx +0 -0
  487. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/credits/usage-spark.tsx +0 -0
  488. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/invoices/page.tsx +0 -0
  489. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/layout.tsx +0 -0
  490. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/page.tsx +0 -0
  491. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/payment-methods/page.tsx +0 -0
  492. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/subscription/page.tsx +0 -0
  493. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/page.tsx +0 -0
  494. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/billing/usage/usage-charts.tsx +0 -0
  495. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -0
  496. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -0
  497. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dev/components/page.tsx +0 -0
  498. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/error.tsx +0 -0
  499. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/invitations/[token]/page.tsx +0 -0
  500. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/[id]/page.tsx +0 -0
  501. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/page.tsx +0 -0
  502. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
  503. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/integrations/page.tsx +0 -0
  504. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/members/page.tsx +0 -0
  505. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx +0 -0
  506. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
  507. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx +0 -0
  508. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx +0 -0
  509. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/appearance/page.tsx +0 -0
  510. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +0 -0
  511. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/notifications/page.tsx +0 -0
  512. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx +0 -0
  513. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/profile/page.tsx +0 -0
  514. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/slash-commands/page.tsx +0 -0
  515. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/about/page.tsx +0 -0
  516. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
  517. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/layout.tsx +0 -0
  518. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/magic-link/page.tsx +0 -0
  519. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/[slug]/page.tsx +0 -0
  520. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/blog/page.tsx +0 -0
  521. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/changelog/page.tsx +0 -0
  522. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/community/page.tsx +0 -0
  523. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/contact/page.tsx +0 -0
  524. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/demo/[id]/page.tsx +0 -0
  525. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/demo/page.tsx +0 -0
  526. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/error.tsx +0 -0
  527. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/help/page.tsx +0 -0
  528. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
  529. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/cookies/page.tsx +0 -0
  530. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/privacy/page.tsx +0 -0
  531. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/legal/terms/page.tsx +0 -0
  532. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/[step]/page.tsx +0 -0
  533. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/onboarding/page.tsx +0 -0
  534. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
  535. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/layout.tsx +0 -0
  536. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/pricing/page.tsx +0 -0
  537. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/security/page.tsx +0 -0
  538. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/shared/[token]/page.tsx +0 -0
  539. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/[id]/demo/route.ts +0 -0
  540. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/[id]/route.ts +0 -0
  541. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/route.ts +0 -0
  542. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/conversations/users/route.ts +0 -0
  543. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/export/route.ts +0 -0
  544. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/route.ts +0 -0
  545. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/ratings/summary/route.ts +0 -0
  546. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stats/route.ts +0 -0
  547. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/stripe-events/route.ts +0 -0
  548. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/impersonate/route.ts +0 -0
  549. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/route.ts +0 -0
  550. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/route.ts +0 -0
  551. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
  552. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
  553. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/request/route.ts +0 -0
  554. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts +0 -0
  555. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
  556. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
  557. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/confirm/route.ts +0 -0
  558. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/request/route.ts +0 -0
  559. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
  560. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
  561. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/checkout/route.ts +0 -0
  562. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/invoices/route.ts +0 -0
  563. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/me/[...path]/route.ts +0 -0
  564. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/portal/route.ts +0 -0
  565. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/contact/route.ts +0 -0
  566. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/[messageId]/rate/route.ts +0 -0
  567. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
  568. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
  569. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/[shareId]/route.ts +0 -0
  570. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/shares/route.ts +0 -0
  571. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/export/route.ts +0 -0
  572. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
  573. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/shared-with-me/route.ts +0 -0
  574. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/tool-stats/route.ts +0 -0
  575. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/[id]/route.ts +0 -0
  576. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/files/upload/route.ts +0 -0
  577. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
  578. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/invitations/[token]/route.ts +0 -0
  579. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/[docId]/download/route.ts +0 -0
  580. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/[docId]/route.ts +0 -0
  581. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/documents/route.ts +0 -0
  582. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/route.ts +0 -0
  583. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/route.ts +0 -0
  584. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/trigger/route.ts +0 -0
  585. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/connectors/route.ts +0 -0
  586. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/route.ts +0 -0
  587. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/route.ts +0 -0
  588. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/[id]/route.ts +0 -0
  589. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/builtin/route.ts +0 -0
  590. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/custom/route.ts +0 -0
  591. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/route.ts +0 -0
  592. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/avatar/route.ts +0 -0
  593. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/[sourceId]/route.ts +0 -0
  594. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/[sourceId]/trigger/route.ts +0 -0
  595. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/connectors/route.ts +0 -0
  596. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/integrations/route.ts +0 -0
  597. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/invitations/route.ts +0 -0
  598. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/[userId]/route.ts +0 -0
  599. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/members/route.ts +0 -0
  600. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/[id]/route.ts +0 -0
  601. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/orgs/route.ts +0 -0
  602. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/[id]/route.ts +0 -0
  603. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/sessions/route.ts +0 -0
  604. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/avatar/[userId]/route.ts +0 -0
  605. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/avatar/route.ts +0 -0
  606. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/users/me/route.ts +0 -0
  607. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/agent/models/route.ts +0 -0
  608. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/[documentId]/route.ts +0 -0
  609. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/documents/route.ts +0 -0
  610. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/info/route.ts +0 -0
  611. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/ingest/route.ts +0 -0
  612. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/[name]/route.ts +0 -0
  613. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/collections/route.ts +0 -0
  614. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/download/route.ts +0 -0
  615. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/[docId]/route.ts +0 -0
  616. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/documents/route.ts +0 -0
  617. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/search/route.ts +0 -0
  618. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/supported-formats/route.ts +0 -0
  619. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/[syncId]/route.ts +0 -0
  620. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/connectors/route.ts +0 -0
  621. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/local/route.ts +0 -0
  622. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/route.ts +0 -0
  623. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/[sourceId]/trigger/route.ts +0 -0
  624. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/v1/rag/sync/sources/route.ts +0 -0
  625. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/apple-icon.tsx +0 -0
  626. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/global-error.tsx +0 -0
  627. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
  628. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/icon.tsx +0 -0
  629. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
  630. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/manifest.ts +0 -0
  631. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/not-found.tsx +0 -0
  632. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/opengraph-image.tsx +0 -0
  633. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
  634. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/robots.ts +0 -0
  635. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/sitemap.ts +0 -0
  636. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/admin-nav.tsx +0 -0
  637. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/admin/user-detail-drawer.tsx +0 -0
  638. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/forgot-password-form.tsx +0 -0
  639. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
  640. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
  641. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/oauth-buttons.tsx +0 -0
  642. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
  643. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/reset-password-form.tsx +0 -0
  644. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/billing-card.tsx +0 -0
  645. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/credits-panel.tsx +0 -0
  646. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/index.ts +0 -0
  647. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/invoices-panel.tsx +0 -0
  648. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/payment-methods-panel.tsx +0 -0
  649. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/seat-selector-dialog.tsx +0 -0
  650. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/subscription-panel.tsx +0 -0
  651. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/billing/usage-gauge.tsx +0 -0
  652. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/blog/mdx-components.tsx +0 -0
  653. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/brand-override.tsx +0 -0
  654. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.tsx +0 -0
  655. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx +0 -0
  656. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-empty-state.tsx +0 -0
  657. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
  658. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +0 -0
  659. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
  660. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-card.tsx +0 -0
  661. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/file-preview-panel.tsx +0 -0
  662. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +0 -0
  663. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/map-leaflet.tsx +0 -0
  664. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.impl.tsx +0 -0
  665. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
  666. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
  667. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/pending-messages.tsx +0 -0
  668. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/rating-buttons.tsx +0 -0
  669. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/research-panel.tsx +0 -0
  670. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/share-dialog.tsx +0 -0
  671. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-command-palette.tsx +0 -0
  672. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/slash-commands.ts +0 -0
  673. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/sources-panel.tsx +0 -0
  674. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-panel.tsx +0 -0
  675. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +0 -0
  676. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/ask-user.tsx +0 -0
  677. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/datetime.tsx +0 -0
  678. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/generic.tsx +0 -0
  679. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/rag.tsx +0 -0
  680. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/run-python.tsx +0 -0
  681. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/skills.tsx +0 -0
  682. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/active-sessions.tsx +0 -0
  683. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/onboarding-banner.tsx +0 -0
  684. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-header.tsx +0 -0
  685. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-hero.tsx +0 -0
  686. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/page-tabs.tsx +0 -0
  687. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/quick-actions.tsx +0 -0
  688. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/recent-activity.tsx +0 -0
  689. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/segmented-control.tsx +0 -0
  690. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card-spark.tsx +0 -0
  691. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/stat-card.tsx +0 -0
  692. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/subscription-chip.tsx +0 -0
  693. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/team-summary.tsx +0 -0
  694. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/tool-usage.tsx +0 -0
  695. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/top-models.tsx +0 -0
  696. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline-chart.tsx +0 -0
  697. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline.tsx +0 -0
  698. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
  699. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  700. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/create-kb-dialog.tsx +0 -0
  701. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/file-viewer.tsx +0 -0
  702. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/index.ts +0 -0
  703. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/kb-list.tsx +0 -0
  704. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
  705. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/auth-guard.tsx +0 -0
  706. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/breadcrumb.tsx +0 -0
  707. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/command-palette.tsx +0 -0
  708. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
  709. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  710. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/landing-nav.tsx +0 -0
  711. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/mobile-tab-bar.tsx +0 -0
  712. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/not-found-back-button.tsx +0 -0
  713. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/page-transition.tsx +0 -0
  714. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
  715. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/cookies-content.tsx +0 -0
  716. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/privacy-content.tsx +0 -0
  717. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/legal/terms-content.tsx +0 -0
  718. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/animated-number.tsx +0 -0
  719. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/brand-icon.tsx +0 -0
  720. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/case-study.tsx +0 -0
  721. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/code-preview.tsx +0 -0
  722. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/comparison-table.tsx +0 -0
  723. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/contact-form.tsx +0 -0
  724. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/cookie-banner.tsx +0 -0
  725. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/data-flow-diagram.tsx +0 -0
  726. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/enterprise-security.tsx +0 -0
  727. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/faq-accordion.tsx +0 -0
  728. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-bento.tsx +0 -0
  729. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-glyph.tsx +0 -0
  730. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-mockup.tsx +0 -0
  731. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/feature-section.tsx +0 -0
  732. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/final-cta.tsx +0 -0
  733. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/footer-config.ts +0 -0
  734. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero-demo.tsx +0 -0
  735. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/hero.tsx +0 -0
  736. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/highlight.tsx +0 -0
  737. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/how-it-works.tsx +0 -0
  738. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/integrations-grid.tsx +0 -0
  739. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/legal-page.tsx +0 -0
  740. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/logos-strip.tsx +0 -0
  741. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-footer.tsx +0 -0
  742. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marketing-page-layout.tsx +0 -0
  743. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/marquee.tsx +0 -0
  744. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/newsletter-signup.tsx +0 -0
  745. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/outcomes-band.tsx +0 -0
  746. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pill-nav.tsx +0 -0
  747. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/pricing-teaser.tsx +0 -0
  748. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/reveal.tsx +0 -0
  749. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/section.tsx +0 -0
  750. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/smooth-scroll.tsx +0 -0
  751. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-carousel.tsx +0 -0
  752. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/marketing/testimonial-grid.tsx +0 -0
  753. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-shell.tsx +0 -0
  754. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/onboarding-state.ts +0 -0
  755. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-agent.tsx +0 -0
  756. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-data.tsx +0 -0
  757. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-done.tsx +0 -0
  758. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-team.tsx +0 -0
  759. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/onboarding/step-welcome.tsx +0 -0
  760. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/drag-drop-overlay.tsx +0 -0
  761. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-logs.tsx +0 -0
  762. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-wizard.tsx +0 -0
  763. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/seo/json-ld.tsx +0 -0
  764. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/brand-color-picker.tsx +0 -0
  765. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx +0 -0
  766. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-section.tsx +0 -0
  767. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/slash-commands-manager.tsx +0 -0
  768. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/empty-state.tsx +0 -0
  769. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/error-state.tsx +0 -0
  770. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/index.ts +0 -0
  771. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/states/loading-state.tsx +0 -0
  772. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/create-org-dialog.tsx +0 -0
  773. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/index.ts +0 -0
  774. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/invite-member-dialog.tsx +0 -0
  775. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/members-table.tsx +0 -0
  776. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/teams/org-switcher.tsx +0 -0
  777. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
  778. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
  779. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
  780. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/accordion.tsx +0 -0
  781. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert-dialog.tsx +0 -0
  782. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/alert.tsx +0 -0
  783. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/avatar.tsx +0 -0
  784. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
  785. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
  786. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
  787. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
  788. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/checkbox.tsx +0 -0
  789. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/confirm-dialog.tsx +0 -0
  790. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/data-table.tsx +0 -0
  791. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dialog.tsx +0 -0
  792. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/dropdown-menu.tsx +0 -0
  793. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/form-field.tsx +0 -0
  794. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/icon-button.tsx +0 -0
  795. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
  796. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
  797. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
  798. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/popover.tsx +0 -0
  799. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/progress.tsx +0 -0
  800. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/question-prompt.tsx +0 -0
  801. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/radio-group.tsx +0 -0
  802. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/scroll-area.tsx +0 -0
  803. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/section-heading.tsx +0 -0
  804. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/select.tsx +0 -0
  805. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/separator.tsx +0 -0
  806. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
  807. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/skeleton.tsx +0 -0
  808. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/spinner.tsx +0 -0
  809. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/switch.tsx +0 -0
  810. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/table.tsx +0 -0
  811. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx +0 -0
  812. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx +0 -0
  813. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx +0 -0
  814. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -0
  815. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts +0 -0
  816. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-users.ts +0 -0
  817. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
  818. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-billing.ts +0 -0
  819. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +0 -0
  820. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversation-shares.ts +0 -0
  821. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
  822. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-copy-to-clipboard.ts +0 -0
  823. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-invitations.ts +0 -0
  824. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-knowledge-bases.ts +0 -0
  825. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-members.ts +0 -0
  826. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-org-integrations.ts +0 -0
  827. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-organizations.ts +0 -0
  828. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-projects.ts +0 -0
  829. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-slash-commands.ts +0 -0
  830. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
  831. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
  832. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/active-route.ts +0 -0
  833. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts +0 -0
  834. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
  835. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/blog.ts +0 -0
  836. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/changelog.ts +0 -0
  837. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/chat-sources.ts +0 -0
  838. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
  839. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/contact-info.ts +0 -0
  840. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts +0 -0
  841. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts +0 -0
  842. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts +0 -0
  843. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/schema-org.ts +0 -0
  844. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/seo.ts +0 -0
  845. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
  846. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/slash-commands-api.ts +0 -0
  847. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/teaser-plans.ts +0 -0
  848. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
  849. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  850. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
  851. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
  852. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
  853. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-mode-store.ts +0 -0
  854. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
  855. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
  856. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
  857. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/file-preview-store.ts +0 -0
  858. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +0 -0
  859. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/kb-selection-store.ts +0 -0
  860. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/org-store.ts +0 -0
  861. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/project-store.ts +0 -0
  862. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/research-store.ts +0 -0
  863. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
  864. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sources-panel-store.ts +0 -0
  865. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
  866. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  867. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
  868. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/billing.ts +0 -0
  869. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -0
  870. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/knowledge-base.ts +0 -0
  871. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/organization.ts +0 -0
  872. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/project.ts +0 -0
  873. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/speech.d.ts +0 -0
  874. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  875. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/vercel.json +0 -0
  876. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  877. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
  878. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
  879. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
  880. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
  881. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
  882. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
  883. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
  884. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
  885. {fastapi_fullstack-0.2.15 → fastapi_fullstack-0.2.16}/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.15
3
+ Version: 0.2.16
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
@@ -21,7 +21,7 @@ Classifier: Topic :: Software Development :: Code Generators
21
21
  Requires-Python: >=3.11
22
22
  Requires-Dist: arq>=0.28.0
23
23
  Requires-Dist: celery>=5.6.3
24
- Requires-Dist: click>=8.3.0
24
+ Requires-Dist: click>=8.3.3
25
25
  Requires-Dist: cookiecutter>=2.7.0
26
26
  Requires-Dist: email-validator>=2.3.0
27
27
  Requires-Dist: httpx>=0.28.1
@@ -50,6 +50,7 @@ def _preflight_check( # noqa: C901
50
50
  frontend: str,
51
51
  admin_panel: bool,
52
52
  marketing_site: bool,
53
+ demo_export: bool,
53
54
  oauth_google: bool,
54
55
  gdrive_rag: bool,
55
56
  s3_rag: bool,
@@ -152,6 +153,13 @@ def _preflight_check( # noqa: C901
152
153
  "Add --frontend nextjs or drop --marketing-site",
153
154
  )
154
155
  )
156
+ if demo_export and frontend == "none":
157
+ issues.append(
158
+ (
159
+ "--demo-export requires --frontend nextjs (it bundles the real replay UI into the HTML)",
160
+ "Add --frontend nextjs or drop --demo-export",
161
+ )
162
+ )
155
163
  if admin_panel and frontend == "none":
156
164
  click.echo(
157
165
  click.style(
@@ -631,6 +639,12 @@ def new(output: Path | None, no_input: bool, name: str | None, minimal: bool) ->
631
639
  default=False,
632
640
  help="Generate marketing/landing pages",
633
641
  )
642
+ @click.option(
643
+ "--demo-export",
644
+ is_flag=True,
645
+ default=False,
646
+ help="Self-contained HTML demo export (Vite bundle + exporter script; requires --frontend)",
647
+ )
634
648
  @click.option(
635
649
  "--i18n/--no-i18n",
636
650
  "i18n",
@@ -793,6 +807,7 @@ def create(
793
807
  email_provider: str,
794
808
  newsletter: bool,
795
809
  marketing_site: bool,
810
+ demo_export: bool,
796
811
  i18n: bool,
797
812
  example_resource: bool,
798
813
  changelog: bool,
@@ -1117,6 +1132,7 @@ def create(
1117
1132
  frontend=frontend,
1118
1133
  admin_panel=admin_panel,
1119
1134
  marketing_site=marketing_site,
1135
+ demo_export=demo_export,
1120
1136
  oauth_google=oauth_google,
1121
1137
  gdrive_rag=gdrive_rag,
1122
1138
  s3_rag=s3_rag,
@@ -1213,6 +1229,7 @@ def create(
1213
1229
  email_provider=EmailProviderType(email_provider),
1214
1230
  enable_newsletter_signup=newsletter,
1215
1231
  enable_marketing_site=marketing_site,
1232
+ enable_demo_export=demo_export,
1216
1233
  enable_i18n=i18n,
1217
1234
  include_example_crud=example_resource,
1218
1235
  enable_changelog=changelog,
@@ -395,6 +395,7 @@ class ProjectConfig(BaseModel):
395
395
 
396
396
  # Marketing / Frontend pages
397
397
  enable_marketing_site: bool = False
398
+ enable_demo_export: bool = False
398
399
  enable_i18n: bool = True
399
400
  include_example_crud: bool = False
400
401
  enable_changelog: bool = False
@@ -618,6 +619,11 @@ class ProjectConfig(BaseModel):
618
619
  "Marketing site requires a frontend (landing/blog/legal pages need a UI). "
619
620
  "Quick fix: add --frontend nextjs, or drop --marketing-site."
620
621
  )
622
+ if self.enable_demo_export and self.frontend == FrontendType.NONE:
623
+ raise ValueError(
624
+ "Demo export requires a frontend (it bundles the real replay UI into the HTML). "
625
+ "Quick fix: add --frontend nextjs, or drop --demo-export."
626
+ )
621
627
  if self.oauth_provider != OAuthProvider.NONE and self.frontend == FrontendType.NONE:
622
628
  raise ValueError(
623
629
  "OAuth requires a frontend for the callback page. "
@@ -969,6 +975,7 @@ class ProjectConfig(BaseModel):
969
975
  "enable_admin_features_system_health": self.enable_admin_features_system_health,
970
976
  # Marketing / Frontend pages
971
977
  "enable_marketing_site": self.enable_marketing_site,
978
+ "enable_demo_export": self.enable_demo_export and self.frontend != FrontendType.NONE,
972
979
  "enable_changelog": self.enable_changelog,
973
980
  "enable_testimonials": self.enable_testimonials,
974
981
  "enable_comparison_pages": self.enable_comparison_pages,
@@ -1450,6 +1450,11 @@ def prompt_marketing_features() -> dict[str, bool]:
1450
1450
  value="status_badge",
1451
1451
  checked=True,
1452
1452
  ),
1453
+ questionary.Choice(
1454
+ "Demo export (offline HTML replay of a saved conversation)",
1455
+ value="demo_export",
1456
+ checked=False,
1457
+ ),
1453
1458
  ],
1454
1459
  ).ask()
1455
1460
  )
@@ -1461,6 +1466,7 @@ def prompt_marketing_features() -> dict[str, bool]:
1461
1466
  "enable_comparison_pages": "comparison_pages" in features,
1462
1467
  "enable_affiliate_program": "affiliate_program" in features,
1463
1468
  "enable_status_badge": "status_badge" in features,
1469
+ "enable_demo_export": "demo_export" in features,
1464
1470
  }
1465
1471
 
1466
1472
 
@@ -1801,6 +1807,7 @@ def run_interactive_prompts() -> ProjectConfig:
1801
1807
  "enable_comparison_pages": True,
1802
1808
  "enable_affiliate_program": True,
1803
1809
  "enable_status_badge": True,
1810
+ "enable_demo_export": False,
1804
1811
  }
1805
1812
  if frontend != FrontendType.NONE
1806
1813
  else {}
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-fullstack"
3
- version = "0.2.15"
3
+ version = "0.2.16"
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"
@@ -44,7 +44,7 @@ classifiers = [
44
44
  ]
45
45
 
46
46
  dependencies = [
47
- "click>=8.3.0",
47
+ "click>=8.3.3",
48
48
  "cookiecutter>=2.7.0",
49
49
  "rich>=15.0.0",
50
50
  "questionary>=2.1.0",
@@ -196,6 +196,7 @@ These variables are set automatically by the generator.
196
196
  | `enable_cors` | bool | `true` | Enable CORS middleware | - |
197
197
  | `enable_webhooks` | bool | `false` | Enable webhook support | - |
198
198
  | `enable_conversation_persistence` | bool | `true` | Enable conversation persistence (derived from `use_ai`) | Computed from `use_ai` |
199
+ | `enable_demo_export` | bool | `false` | Self-contained HTML demo export: a `frontend/demo-export/` Vite single-file bundle + `scripts/export_demo_html.py` that render a saved conversation to one offline `.html` replay | Requires a frontend |
199
200
  | `include_example_crud` | bool | `false` | Include example CRUD endpoints (always disabled) | Always false |
200
201
  | `enable_i18n` | bool | `true` | Enable internationalization in frontend (always enabled) | Always true |
201
202
  | `seed_admin_email` | string | `""` | Email of a user to auto-promote to app-admin on first startup (via `FIRST_ADMIN_EMAIL` env var) | - |
@@ -84,6 +84,7 @@
84
84
  "use_all_providers": false,
85
85
  "use_ai": true,
86
86
  "enable_conversation_persistence": true,
87
+ "enable_demo_export": false,
87
88
  "enable_langsmith": false,
88
89
  "enable_web_search": false,
89
90
  "enable_web_fetch": false,
@@ -41,7 +41,9 @@ enable_rag_image_description = "{{ cookiecutter.enable_rag_image_description }}"
41
41
  enable_google_drive_ingestion = "{{ cookiecutter.enable_google_drive_ingestion }}" == "True"
42
42
  enable_s3_ingestion = "{{ cookiecutter.enable_s3_ingestion }}" == "True"
43
43
  enable_web_search = "{{ cookiecutter.enable_web_search }}" == "True"
44
+ enable_web_fetch = "{{ cookiecutter.enable_web_fetch }}" == "True"
44
45
  web_fetch_tool = "{{ cookiecutter.web_fetch_tool }}" == "True"
46
+ enable_demo_export = "{{ cookiecutter.enable_demo_export }}" == "True"
45
47
  enable_charts = "{{ cookiecutter.enable_charts }}" == "True"
46
48
  charts_channel_png = "{{ cookiecutter.charts_channel_png }}" == "True"
47
49
  enable_code_execution = "{{ cookiecutter.enable_code_execution }}" == "True"
@@ -154,6 +156,20 @@ if not enable_deep_research and use_frontend:
154
156
  frontend_src = os.path.join(os.getcwd(), "frontend", "src")
155
157
  remove_file(os.path.join(frontend_src, "stores", "research-store.ts"))
156
158
  remove_file(os.path.join(frontend_src, "stores", "chat-mode-store.ts"))
159
+ remove_file(os.path.join(frontend_src, "lib", "research-from-tools.ts"))
160
+ remove_file(os.path.join(frontend_src, "components", "chat", "research-replay-block.tsx"))
161
+
162
+ # The fetched-page tool-result renderer is only referenced when web fetch is on.
163
+ if not enable_web_fetch and use_frontend:
164
+ frontend_src = os.path.join(os.getcwd(), "frontend", "src")
165
+ remove_file(os.path.join(frontend_src, "components", "chat", "tool-results", "fetch-url.tsx"))
166
+
167
+ # Self-contained HTML demo export (Vite single-file bundle + exporter script).
168
+ # Only meaningful with a frontend to bundle; drop everything otherwise. The
169
+ # scripts/ dir exists solely for this exporter, so remove it wholesale.
170
+ if not (enable_demo_export and use_frontend):
171
+ remove_dir(os.path.join(os.getcwd(), "frontend", "demo-export"))
172
+ remove_dir(os.path.join(os.getcwd(), "scripts"))
157
173
 
158
174
  if not enable_subagents and use_frontend:
159
175
  frontend_src = os.path.join(os.getcwd(), "frontend", "src")
@@ -99,5 +99,10 @@ logs/
99
99
  # OS
100
100
  .DS_Store
101
101
  Thumbs.db
102
+ {%- if cookiecutter.enable_demo_export %}
103
+
104
+ # Demo-export Vite build output (regenerated by `bun run build:demo-export`)
105
+ frontend/demo-export/dist/
106
+ {%- endif %}
102
107
 
103
108
  # Project specific
@@ -0,0 +1,92 @@
1
+ # CLAUDE.md
2
+
3
+ ## Project Overview
4
+
5
+ **{{ cookiecutter.project_name }}** - FastAPI application generated with [Full-Stack AI Agent Template](https://github.com/vstorm-co/full-stack-ai-agent-template).
6
+
7
+ **Stack:** FastAPI + Pydantic v2
8
+ {%- if True %}, PostgreSQL (async via asyncpg){%- endif %}
9
+ {%- if False %}, MongoDB (async via Motor){%- endif %}
10
+ {%- if False %}, SQLite (sync){%- endif %}
11
+ , JWT + API Key auth
12
+ {%- if cookiecutter.enable_redis %}, Redis{%- endif %}
13
+ {%- if cookiecutter.use_pydantic_ai %}, PydanticAI{%- endif %}
14
+ {%- if cookiecutter.use_langchain %}, LangChain{%- endif %}
15
+ {%- if cookiecutter.use_langgraph %}, LangGraph{%- endif %}{%- if cookiecutter.use_deepagents %}, DeepAgents{%- endif %}
16
+ {%- if cookiecutter.enable_rag %}, RAG ({{ cookiecutter.vector_store }}){%- endif %}
17
+ {%- if cookiecutter.use_celery %}, Celery{%- endif %}
18
+ {%- if cookiecutter.use_taskiq %}, Taskiq{%- endif %}
19
+ {%- if cookiecutter.use_frontend %}, Next.js 15 (i18n){%- endif %}
20
+
21
+ ## Commands
22
+
23
+ ```bash
24
+ # Backend
25
+ cd backend
26
+ uv run uvicorn app.main:app --reload --port {{ cookiecutter.backend_port }}
27
+ uv run pytest
28
+ uv run pytest tests/test_file.py::test_name -v
29
+ uv run ruff check . --fix && uv run ruff format .
30
+ uv run ty check
31
+
32
+ # Database migrations
33
+ uv run alembic upgrade head
34
+ uv run alembic revision --autogenerate -m "Description"
35
+ {%- if cookiecutter.use_frontend %}
36
+
37
+ # Frontend
38
+ cd frontend
39
+ bun dev
40
+ bun test
41
+ bun run lint
42
+ {%- endif %}
43
+ {%- if cookiecutter.enable_docker %}
44
+
45
+ # Docker
46
+ docker compose up -d
47
+ {%- endif %}
48
+ {%- if cookiecutter.enable_rag %}
49
+
50
+ # RAG
51
+ uv run {{ cookiecutter.project_slug }} rag-collections
52
+ uv run {{ cookiecutter.project_slug }} rag-ingest /path/to/file.pdf --collection docs
53
+ uv run {{ cookiecutter.project_slug }} rag-search "query" --collection docs
54
+ {%- if cookiecutter.enable_google_drive_ingestion %}
55
+ uv run {{ cookiecutter.project_slug }} rag-sync-gdrive --collection docs
56
+ {%- endif %}
57
+ {%- if cookiecutter.enable_s3_ingestion %}
58
+ uv run {{ cookiecutter.project_slug }} rag-sync-s3 --collection docs
59
+ {%- endif %}
60
+
61
+ # Sync Sources
62
+ uv run {{ cookiecutter.project_slug }} cmd rag-sources
63
+ uv run {{ cookiecutter.project_slug }} cmd rag-source-add
64
+ uv run {{ cookiecutter.project_slug }} cmd rag-source-sync
65
+ {%- endif %}
66
+ ```
67
+
68
+ ## Hard Boundaries
69
+
70
+ Non-obvious rules that are easy to violate and cross-cutting enough to state up front:
71
+
72
+ - Repositories use `db.flush()` + `db.refresh()`, **never** `db.commit()` — the session auto-commits via `get_db_session`.
73
+ - Routes call services only — **never** import or call repositories directly.
74
+ - Route handlers return `-> Any`; serialization is handled by `response_model` (avoids double Pydantic validation).
75
+ - `datetime.now(UTC)`, never `datetime.utcnow()`.
76
+ - `secrets.compare_digest()` for API key comparison, never `==`.
77
+
78
+ ## Detailed Conventions
79
+
80
+ Path-scoped guidance lives in `.claude/rules/*` and loads automatically when you edit matching files — it is intentionally NOT repeated here:
81
+
82
+ - `architecture.md` — Routes → Services → Repositories, dependency injection, thin vs. thick domains
83
+ - `schemas-models.md` — Pydantic v2 schemas (`*Create`/`*Update`/`*Read`/`*List`), SQLAlchemy models
84
+ - `api-conventions.md` — REST structure, status codes, response format, pagination, auth
85
+ - `exceptions-security.md` — domain exceptions (`NotFoundError`, etc.), JWT, RBAC
86
+ - `code-style.md` — formatting, naming, imports, type hints
87
+ - `testing.md` — test structure, fixtures, async patterns
88
+ {%- if cookiecutter.use_frontend %}
89
+ - `frontend.md` — Next.js 15 conventions
90
+ {%- endif %}
91
+
92
+ Longer-form docs: `docs/architecture.md`, `docs/adding_features.md`, `docs/testing.md`, `docs/patterns.md`.
@@ -0,0 +1,27 @@
1
+ """messages: add thinking column for the reasoning trace
2
+
3
+ Revision ID: 0025
4
+ Revises: 0024_create_webhook_tables
5
+
6
+ Adds a nullable ``thinking`` text column to messages so the assistant's
7
+ reasoning trace (streamed live as ``thinking_delta``) is persisted alongside
8
+ the turn. Enables loaded conversations — and the self-contained HTML export —
9
+ to show the THINKING block, not just live streaming.
10
+ """
11
+
12
+ import sqlalchemy as sa
13
+
14
+ from alembic import op
15
+
16
+ revision = "0025"
17
+ down_revision = "0024_create_webhook_tables"
18
+ branch_labels = None
19
+ depends_on = None
20
+
21
+
22
+ def upgrade() -> None:
23
+ op.add_column("messages", sa.Column("thinking", sa.Text(), nullable=True))
24
+
25
+
26
+ def downgrade() -> None:
27
+ op.drop_column("messages", "thinking")
@@ -113,6 +113,7 @@ class Message(TimestampMixin, SQLModel, table=True):
113
113
  )
114
114
  role: str = Field(max_length=20) # user, assistant, system
115
115
  content: str = Field(sa_column=Column(Text, nullable=False))
116
+ thinking: str | None = Field(default=None, sa_column=Column(Text, nullable=True))
116
117
  model_name: str | None = Field(default=None, max_length=100)
117
118
  tokens_used: int | None = Field(default=None)
118
119
 
@@ -291,6 +292,7 @@ class Message(Base, TimestampMixin):
291
292
  String(20), nullable=False
292
293
  ) # user, assistant, system
293
294
  content: Mapped[str] = mapped_column(Text, nullable=False)
295
+ thinking: Mapped[str | None] = mapped_column(Text, nullable=True)
294
296
  model_name: Mapped[str | None] = mapped_column(String(100), nullable=True)
295
297
  tokens_used: Mapped[int | None] = mapped_column(Integer, nullable=True)
296
298
 
@@ -411,6 +411,7 @@ async def create_message(
411
411
  conversation_id: UUID,
412
412
  role: str,
413
413
  content: str,
414
+ thinking: str | None = None,
414
415
  model_name: str | None = None,
415
416
  tokens_used: int | None = None,
416
417
  ) -> Message:
@@ -419,6 +420,7 @@ async def create_message(
419
420
  conversation_id=conversation_id,
420
421
  role=role,
421
422
  content=content,
423
+ thinking=thinking,
422
424
  model_name=model_name,
423
425
  tokens_used=tokens_used,
424
426
  )
@@ -72,6 +72,7 @@ class MessageBase(BaseSchema):
72
72
 
73
73
  role: Literal["user", "assistant", "system"] = Field(..., description="Message role")
74
74
  content: str = Field(..., description="Message content")
75
+ thinking: str | None = Field(default=None, description="Reasoning trace (assistant turns)")
75
76
 
76
77
 
77
78
  class MessageCreate(MessageBase):
@@ -223,6 +223,7 @@ async def persist_assistant_turn(
223
223
  output: str,
224
224
  model_name: str | None,
225
225
  collected_tool_calls: list[dict[str, Any]],
226
+ thinking: str | None = None,
226
227
  ) -> str | None:
227
228
  """Persist the assistant message and any tool calls. Returns the saved message id."""
228
229
  try:
@@ -230,7 +231,9 @@ async def persist_assistant_turn(
230
231
  conv_service = get_conversation_service(db)
231
232
  assistant_msg = await conv_service.add_message(
232
233
  UUID(conversation_id),
233
- MessageCreate(role="assistant", content=output, model_name=model_name),
234
+ MessageCreate(
235
+ role="assistant", content=output, thinking=thinking, model_name=model_name
236
+ ),
234
237
  )
235
238
  for tc in collected_tool_calls:
236
239
  try:
@@ -250,6 +250,7 @@ class AgentSession:
250
250
  {%- endif %}
251
251
 
252
252
  collected_tool_calls: list[dict[str, Any]] = []
253
+ collected_thinking: list[str] = []
253
254
  {%- if cookiecutter.enable_deep_research %}
254
255
  {%- if cookiecutter.enable_subagents %}
255
256
  self._subagent_task_manager = (
@@ -277,7 +278,9 @@ class AgentSession:
277
278
  async with assistant.agent.iter(
278
279
  user_input, deps=self.deps, message_history=model_history
279
280
  ) as agent_run:
280
- await self._stream_agent_run(agent_run, user_message, collected_tool_calls)
281
+ await self._stream_agent_run(
282
+ agent_run, user_message, collected_tool_calls, collected_thinking
283
+ )
281
284
  finally:
282
285
  if poller is not None:
283
286
  poller.cancel()
@@ -296,7 +299,9 @@ class AgentSession:
296
299
  async with assistant.agent.iter(
297
300
  user_input, deps=self.deps, message_history=model_history
298
301
  ) as agent_run:
299
- await self._stream_agent_run(agent_run, user_message, collected_tool_calls)
302
+ await self._stream_agent_run(
303
+ agent_run, user_message, collected_tool_calls, collected_thinking
304
+ )
300
305
  {%- endif %}
301
306
 
302
307
  # Update in-memory history only after a complete agent run
@@ -314,6 +319,7 @@ class AgentSession:
314
319
  agent_run.result.output,
315
320
  getattr(assistant, "model_name", None),
316
321
  collected_tool_calls,
322
+ thinking="".join(collected_thinking) or None,
317
323
  )
318
324
 
319
325
  {%- if cookiecutter.enable_billing and cookiecutter.enable_teams and cookiecutter.enable_credits_system %}
@@ -601,6 +607,7 @@ class AgentSession:
601
607
  agent_run: Any,
602
608
  user_message: str,
603
609
  collected_tool_calls: list[dict[str, Any]],
610
+ collected_thinking: list[str],
604
611
  ) -> None:
605
612
  """Drive the agent_run iterator, dispatching each node to its streaming helper."""
606
613
  async for node in agent_run:
@@ -614,7 +621,7 @@ class AgentSession:
614
621
  elif Agent.is_model_request_node(node):
615
622
  await send_event(self.websocket, "model_request_start", {})
616
623
  async with node.stream(agent_run.ctx) as request_stream:
617
- await self._stream_request_events(request_stream)
624
+ await self._stream_request_events(request_stream, collected_thinking)
618
625
  elif Agent.is_call_tools_node(node):
619
626
  await send_event(self.websocket, "call_tools_start", {})
620
627
  async with node.stream(agent_run.ctx) as handle_stream:
@@ -624,7 +631,9 @@ class AgentSession:
624
631
  self.websocket, "final_result", {"output": agent_run.result.output}
625
632
  )
626
633
 
627
- async def _stream_request_events(self, request_stream: Any) -> None:
634
+ async def _stream_request_events(
635
+ self, request_stream: Any, collected_thinking: list[str]
636
+ ) -> None:
628
637
  """Forward model-request events (text/thinking/tool deltas + final-result start).
629
638
  {%- if cookiecutter.enable_deep_research %}
630
639
 
@@ -673,6 +682,9 @@ class AgentSession:
673
682
  )
674
683
  {%- endif %}
675
684
  elif isinstance(event.part, ThinkingPart) and event.part.content:
685
+ if collected_thinking:
686
+ collected_thinking.append(" ")
687
+ collected_thinking.append(event.part.content)
676
688
  await send_event(
677
689
  self.websocket,
678
690
  "thinking_delta",
@@ -691,6 +703,7 @@ class AgentSession:
691
703
  {%- endif %}
692
704
  elif isinstance(event.delta, ThinkingPartDelta):
693
705
  if event.delta.content_delta:
706
+ collected_thinking.append(event.delta.content_delta)
694
707
  await send_event(
695
708
  self.websocket,
696
709
  "thinking_delta",
@@ -814,6 +827,10 @@ class AgentSession:
814
827
  self.current_conversation_id: str | None = None
815
828
  {%- endif %}
816
829
  self._last_usage_metadata: Any = None
830
+ # TODO: reasoning is streamed to the UI (thinking_delta) but not collected for
831
+ # persistence here — Message.thinking stays empty for this framework. The text is
832
+ # already extracted below; accumulate it per turn and pass it to
833
+ # persist_assistant_turn(thinking=...) like the PydanticAI session does.
817
834
  self._thinking_streamed: bool = False
818
835
  self._turn_task: asyncio.Task[None] | None = None
819
836
 
@@ -1274,6 +1291,10 @@ class AgentSession:
1274
1291
  self.current_conversation_id: str | None = None
1275
1292
  {%- endif %}
1276
1293
  self._last_usage_metadata: Any = None
1294
+ # TODO: reasoning is streamed to the UI (thinking_delta) but not collected for
1295
+ # persistence here — Message.thinking stays empty for this framework. The text is
1296
+ # already extracted below; accumulate it per turn and pass it to
1297
+ # persist_assistant_turn(thinking=...) like the PydanticAI session does.
1277
1298
  self._thinking_streamed: bool = False
1278
1299
  self._turn_task: asyncio.Task[None] | None = None
1279
1300
 
@@ -1743,6 +1764,10 @@ class AgentSession:
1743
1764
  # invalidate any pending interrupt anyway).
1744
1765
  self._current_thinking_effort: str | None = None
1745
1766
  self._last_usage_metadata: Any = None
1767
+ # TODO: reasoning is streamed to the UI (thinking_delta) but not collected for
1768
+ # persistence here — Message.thinking stays empty for this framework. The text is
1769
+ # already extracted below; accumulate it per turn and pass it to
1770
+ # persist_assistant_turn(thinking=...) like the PydanticAI session does.
1746
1771
  self._thinking_streamed: bool = False
1747
1772
  {%- if cookiecutter.use_database %}
1748
1773
  self.current_conversation_id: str | None = None
@@ -2465,17 +2490,19 @@ class AgentSession:
2465
2490
  kb_token = _active_kb_collections.set(kb_names)
2466
2491
  try:
2467
2492
  collected_tool_calls: list[dict[str, Any]] = []
2493
+ collected_thinking: list[str] = []
2468
2494
  async with assistant.agent.iter(user_input, deps=assistant.deps) as agent_run:
2469
2495
  await self._stream_agent_run(
2470
- agent_run, user_message, collected_tool_calls
2496
+ agent_run, user_message, collected_tool_calls, collected_thinking
2471
2497
  )
2472
2498
  finally:
2473
2499
  _active_kb_collections.reset(kb_token)
2474
2500
  {%- else %}
2475
2501
  collected_tool_calls: list[dict[str, Any]] = []
2502
+ collected_thinking: list[str] = []
2476
2503
  async with assistant.agent.iter(user_input, deps=assistant.deps) as agent_run:
2477
2504
  await self._stream_agent_run(
2478
- agent_run, user_message, collected_tool_calls
2505
+ agent_run, user_message, collected_tool_calls, collected_thinking
2479
2506
  )
2480
2507
  {%- endif %}
2481
2508
 
@@ -2486,6 +2513,7 @@ class AgentSession:
2486
2513
  agent_run.result.output,
2487
2514
  getattr(assistant, "model_name", None),
2488
2515
  collected_tool_calls,
2516
+ thinking="".join(collected_thinking) or None,
2489
2517
  )
2490
2518
 
2491
2519
  await send_event(
@@ -2587,6 +2615,7 @@ class AgentSession:
2587
2615
  agent_run: Any,
2588
2616
  user_message: str,
2589
2617
  collected_tool_calls: list[dict[str, Any]],
2618
+ collected_thinking: list[str],
2590
2619
  ) -> None:
2591
2620
  """Drive the pydantic-ai agent_run iterator, forwarding all events."""
2592
2621
  async for node in agent_run:
@@ -2600,7 +2629,7 @@ class AgentSession:
2600
2629
  elif Agent.is_model_request_node(node):
2601
2630
  await send_event(self.websocket, "model_request_start", {})
2602
2631
  async with node.stream(agent_run.ctx) as request_stream:
2603
- await self._stream_request_events(request_stream)
2632
+ await self._stream_request_events(request_stream, collected_thinking)
2604
2633
  elif Agent.is_call_tools_node(node):
2605
2634
  await send_event(self.websocket, "call_tools_start", {})
2606
2635
  async with node.stream(agent_run.ctx) as handle_stream:
@@ -2610,7 +2639,9 @@ class AgentSession:
2610
2639
  self.websocket, "final_result", {"output": agent_run.result.output}
2611
2640
  )
2612
2641
 
2613
- async def _stream_request_events(self, request_stream: Any) -> None:
2642
+ async def _stream_request_events(
2643
+ self, request_stream: Any, collected_thinking: list[str]
2644
+ ) -> None:
2614
2645
  """Forward model-request events (text/thinking/tool deltas + final-result start)."""
2615
2646
  async for event in request_stream:
2616
2647
  if isinstance(event, PartStartEvent):
@@ -2628,6 +2659,9 @@ class AgentSession:
2628
2659
  elif isinstance(event.part, ThinkingPart) and event.part.content:
2629
2660
  # Surface the model's reasoning trace to the UI. Anthropic +
2630
2661
  # OpenAI-reasoning models emit these as the model "thinks".
2662
+ if collected_thinking:
2663
+ collected_thinking.append(" ")
2664
+ collected_thinking.append(event.part.content)
2631
2665
  await send_event(
2632
2666
  self.websocket,
2633
2667
  "thinking_delta",
@@ -2642,6 +2676,7 @@ class AgentSession:
2642
2676
  )
2643
2677
  elif isinstance(event.delta, ThinkingPartDelta):
2644
2678
  if event.delta.content_delta:
2679
+ collected_thinking.append(event.delta.content_delta)
2645
2680
  await send_event(
2646
2681
  self.websocket,
2647
2682
  "thinking_delta",
@@ -524,6 +524,7 @@ class ConversationService:
524
524
  conversation_id=conversation_id,
525
525
  role=data.role,
526
526
  content=data.content,
527
+ thinking=data.thinking,
527
528
  model_name=data.model_name,
528
529
  tokens_used=data.tokens_used,
529
530
  )
@@ -332,6 +332,7 @@ ignore = [
332
332
  known-first-party = ["app", "cli"]
333
333
 
334
334
  [tool.ty.terminal]
335
+ # The "warn" rules below are informational — don't let them fail `ty check`.
335
336
  error-on-warning = false
336
337
 
337
338
  [tool.ty.environment]
@@ -123,7 +123,7 @@ services:
123
123
  {%- if cookiecutter.use_milvus %}
124
124
 
125
125
  etcd:
126
- image: quay.io/coreos/etcd:v3.6.13
126
+ image: quay.io/coreos/etcd:v3.7.0
127
127
  container_name: {{ cookiecutter.project_slug }}_etcd
128
128
  command: >
129
129
  etcd --advertise-client-urls http://etcd:2379
@@ -162,7 +162,7 @@ services:
162
162
  restart: unless-stopped
163
163
 
164
164
  milvus:
165
- image: milvusdb/milvus:v2.6.19
165
+ image: milvusdb/milvus:v2.6.20
166
166
  container_name: {{ cookiecutter.project_slug }}_milvus
167
167
  command: ["milvus", "run", "standalone"]
168
168
  ports:
@@ -196,7 +196,7 @@ services:
196
196
  {%- if cookiecutter.use_qdrant %}
197
197
 
198
198
  qdrant:
199
- image: qdrant/qdrant:v1.18.1
199
+ image: qdrant/qdrant:v1.18.3
200
200
  container_name: {{ cookiecutter.project_slug }}_qdrant
201
201
  ports:
202
202
  - "6333:6333"
@@ -270,7 +270,7 @@ services:
270
270
  {%- if cookiecutter.use_milvus %}
271
271
 
272
272
  etcd:
273
- image: quay.io/coreos/etcd:v3.6.13
273
+ image: quay.io/coreos/etcd:v3.7.0
274
274
  container_name: {{ cookiecutter.project_slug }}_etcd
275
275
  volumes:
276
276
  - etcd_data:/var/lib/etcd
@@ -313,7 +313,7 @@ services:
313
313
  memory: 256M
314
314
 
315
315
  milvus:
316
- image: milvusdb/milvus:v2.6.19
316
+ image: milvusdb/milvus:v2.6.20
317
317
  container_name: {{ cookiecutter.project_slug }}_milvus
318
318
  command: ["milvus", "run", "standalone"]
319
319
  # NO external ports - only accessible within backend-internal network
@@ -348,7 +348,7 @@ services:
348
348
  {%- if cookiecutter.use_qdrant %}
349
349
 
350
350
  qdrant:
351
- image: qdrant/qdrant:v1.18.1
351
+ image: qdrant/qdrant:v1.18.3
352
352
  container_name: {{ cookiecutter.project_slug }}_qdrant
353
353
  # NO external ports in production - only accessible within backend-internal network
354
354
  volumes: