fastapi-fullstack 0.1.14__tar.gz → 0.1.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 (257) hide show
  1. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/PKG-INFO +1 -1
  2. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/fastapi_gen/config.py +20 -0
  3. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/fastapi_gen/prompts.py +26 -14
  4. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/pyproject.toml +1 -1
  5. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/VARIABLES.md +4 -2
  6. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/cookiecutter.json +1 -0
  7. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/hooks/post_gen_project.py +3 -0
  8. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/CLAUDE.md +1 -0
  9. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/.env.example +16 -0
  10. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py +11 -0
  11. fastapi_fullstack-0.1.16/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +526 -0
  12. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/agent.py +569 -0
  13. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +16 -0
  14. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +9 -0
  15. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx +28 -1
  16. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/index.ts +1 -0
  17. fastapi_fullstack-0.1.16/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx +138 -0
  18. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-chat.ts +78 -1
  19. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-local-chat.ts +78 -1
  20. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/chat.ts +41 -0
  21. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/.gitignore +0 -0
  22. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/LICENSE +0 -0
  23. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/README.md +0 -0
  24. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/fastapi_gen/__init__.py +0 -0
  25. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/fastapi_gen/cli.py +0 -0
  26. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/fastapi_gen/generator.py +0 -0
  27. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/.env.prod.example +0 -0
  28. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml +0 -0
  29. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/.gitignore +0 -0
  30. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml +0 -0
  31. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/AGENTS.md +0 -0
  32. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/Makefile +0 -0
  33. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/README.md +0 -0
  34. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/.dockerignore +0 -0
  35. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml +0 -0
  36. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/Dockerfile +0 -0
  37. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/alembic/env.py +0 -0
  38. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako +0 -0
  39. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep +0 -0
  40. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/alembic.ini +0 -0
  41. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/__init__.py +0 -0
  42. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/admin.py +0 -0
  43. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +0 -0
  44. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/crewai_assistant.py +0 -0
  45. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py +0 -0
  46. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py +0 -0
  47. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py +0 -0
  48. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py +0 -0
  49. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/datetime_tool.py +0 -0
  50. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py +0 -0
  51. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +0 -0
  52. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py +0 -0
  53. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/router.py +0 -0
  54. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py +0 -0
  55. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +0 -0
  56. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/auth.py +0 -0
  57. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/conversations.py +0 -0
  58. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/health.py +0 -0
  59. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py +0 -0
  60. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py +0 -0
  61. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/sessions.py +0 -0
  62. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py +0 -0
  63. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py +0 -0
  64. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/ws.py +0 -0
  65. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py +0 -0
  66. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py +0 -0
  67. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +0 -0
  68. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py +0 -0
  69. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py +0 -0
  70. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/example.py +0 -0
  71. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/commands/seed.py +0 -0
  72. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py +0 -0
  73. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py +0 -0
  74. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py +0 -0
  75. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py +0 -0
  76. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/logfire_setup.py +0 -0
  77. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/middleware.py +0 -0
  78. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/oauth.py +0 -0
  79. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/rate_limit.py +0 -0
  80. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/sanitize.py +0 -0
  81. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/core/security.py +0 -0
  82. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py +0 -0
  83. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/base.py +0 -0
  84. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +0 -0
  85. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/conversation.py +0 -0
  86. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py +0 -0
  87. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/session.py +0 -0
  88. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py +0 -0
  89. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py +0 -0
  90. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/db/session.py +0 -0
  91. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/main.py +0 -0
  92. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/__init__.py +0 -0
  93. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/pipelines/base.py +0 -0
  94. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +0 -0
  95. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/base.py +0 -0
  96. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/conversation.py +0 -0
  97. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py +0 -0
  98. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/session.py +0 -0
  99. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/user.py +0 -0
  100. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/repositories/webhook.py +0 -0
  101. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/__init__.py +0 -0
  102. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/base.py +0 -0
  103. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/conversation.py +0 -0
  104. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py +0 -0
  105. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/session.py +0 -0
  106. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/token.py +0 -0
  107. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/user.py +0 -0
  108. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.py +0 -0
  109. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py +0 -0
  110. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/conversation.py +0 -0
  111. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/item.py +0 -0
  112. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/session.py +0 -0
  113. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/user.py +0 -0
  114. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/services/webhook.py +0 -0
  115. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/__init__.py +0 -0
  116. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/arq_app.py +0 -0
  117. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/celery_app.py +0 -0
  118. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/taskiq_app.py +0 -0
  119. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/__init__.py +0 -0
  120. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/examples.py +0 -0
  121. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/schedules.py +0 -0
  122. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/app/worker/tasks/taskiq_examples.py +0 -0
  123. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/cli/__init__.py +0 -0
  124. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/cli/commands.py +0 -0
  125. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/scripts/.gitkeep +0 -0
  126. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/__init__.py +0 -0
  127. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/__init__.py +0 -0
  128. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_auth.py +0 -0
  129. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_exceptions.py +0 -0
  130. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_health.py +0 -0
  131. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_items.py +0 -0
  132. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_metrics.py +0 -0
  133. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/api/test_users.py +0 -0
  134. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/conftest.py +0 -0
  135. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_admin.py +0 -0
  136. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_agents.py +0 -0
  137. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_clients.py +0 -0
  138. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_commands.py +0 -0
  139. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py +0 -0
  140. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_pipelines.py +0 -0
  141. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py +0 -0
  142. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_security.py +0 -0
  143. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_services.py +0 -0
  144. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/backend/tests/test_worker.py +0 -0
  145. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +0 -0
  146. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +0 -0
  147. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +0 -0
  148. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docker-compose.yml +0 -0
  149. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docs/adding_features.md +0 -0
  150. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docs/architecture.md +0 -0
  151. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docs/patterns.md +0 -0
  152. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/docs/testing.md +0 -0
  153. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/.dockerignore +0 -0
  154. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/.env.example +0 -0
  155. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/.gitignore +0 -0
  156. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/.prettierignore +0 -0
  157. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/.prettierrc +0 -0
  158. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +0 -0
  159. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/README.md +0 -0
  160. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.setup.ts +0 -0
  161. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/auth.spec.ts +0 -0
  162. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/chat.spec.ts +0 -0
  163. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts +0 -0
  164. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts +0 -0
  165. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/messages/en.json +0 -0
  166. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json +0 -0
  167. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/next.config.ts +0 -0
  168. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/package.json +0 -0
  169. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts +0 -0
  170. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs +0 -0
  171. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/layout.tsx +0 -0
  172. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/login/page.tsx +0 -0
  173. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(auth)/register/page.tsx +0 -0
  174. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/chat/page.tsx +0 -0
  175. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/dashboard/page.tsx +0 -0
  176. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/layout.tsx +0 -0
  177. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx +0 -0
  178. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/auth/callback/page.tsx +0 -0
  179. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/layout.tsx +0 -0
  180. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/page.tsx +0 -0
  181. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +0 -0
  182. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +0 -0
  183. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +0 -0
  184. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +0 -0
  185. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +0 -0
  186. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts +0 -0
  187. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/messages/route.ts +0 -0
  188. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/[id]/route.ts +0 -0
  189. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/conversations/route.ts +0 -0
  190. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/api/health/route.ts +0 -0
  191. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/globals.css +0 -0
  192. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/layout.tsx +0 -0
  193. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/app/providers.tsx +0 -0
  194. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/index.ts +0 -0
  195. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/login-form.tsx +0 -0
  196. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/auth/register-form.tsx +0 -0
  197. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx +0 -0
  198. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx +0 -0
  199. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/copy-button.tsx +0 -0
  200. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/local-conversation-sidebar.tsx +0 -0
  201. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/markdown-content.tsx +0 -0
  202. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-item.tsx +0 -0
  203. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/message-list.tsx +0 -0
  204. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +0 -0
  205. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx +0 -0
  206. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts +0 -0
  207. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/language-switcher.tsx +0 -0
  208. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/header.tsx +0 -0
  209. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/index.ts +0 -0
  210. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/layout/sidebar.tsx +0 -0
  211. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/index.ts +0 -0
  212. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-provider.tsx +0 -0
  213. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/theme/theme-toggle.tsx +0 -0
  214. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/badge.tsx +0 -0
  215. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.test.tsx +0 -0
  216. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/button.tsx +0 -0
  217. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/card.tsx +0 -0
  218. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/index.ts +0 -0
  219. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/input.tsx +0 -0
  220. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/label.tsx +0 -0
  221. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/sheet.tsx +0 -0
  222. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +0 -0
  223. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts +0 -0
  224. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conversations.ts +0 -0
  225. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-websocket.ts +0 -0
  226. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts +0 -0
  227. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts +0 -0
  228. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +0 -0
  229. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/server-api.ts +0 -0
  230. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.test.ts +0 -0
  231. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/lib/utils.ts +0 -0
  232. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts +0 -0
  233. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.test.ts +0 -0
  234. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/auth-store.ts +0 -0
  235. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-sidebar-store.ts +0 -0
  236. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/chat-store.ts +0 -0
  237. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/conversation-store.ts +0 -0
  238. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/index.ts +0 -0
  239. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/local-chat-store.ts +0 -0
  240. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/sidebar-store.ts +0 -0
  241. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/stores/theme-store.ts +0 -0
  242. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/api.ts +0 -0
  243. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/auth.ts +0 -0
  244. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/conversation.ts +0 -0
  245. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/src/types/index.ts +0 -0
  246. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json +0 -0
  247. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/vitest.config.ts +0 -0
  248. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/frontend/vitest.setup.ts +0 -0
  249. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/configmap.yaml +0 -0
  250. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/deployment.yaml +0 -0
  251. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/ingress.yaml +0 -0
  252. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml +0 -0
  253. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml +0 -0
  254. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml +0 -0
  255. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml +0 -0
  256. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.16}/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +0 -0
  257. {fastapi_fullstack-0.1.14 → fastapi_fullstack-0.1.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.1.14
3
+ Version: 0.1.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-fastapi-nextjs-llm-template
6
6
  Project-URL: Documentation, https://github.com/vstorm-co/full-stack-fastapi-nextjs-llm-template#readme
@@ -91,6 +91,7 @@ class AIFrameworkType(str, Enum):
91
91
  LANGCHAIN = "langchain"
92
92
  LANGGRAPH = "langgraph"
93
93
  CREWAI = "crewai"
94
+ DEEPAGENTS = "deepagents"
94
95
 
95
96
 
96
97
  class LLMProviderType(str, Enum):
@@ -277,6 +278,14 @@ class ProjectConfig(BaseModel):
277
278
  and self.llm_provider == LLMProviderType.OPENROUTER
278
279
  ):
279
280
  raise ValueError("OpenRouter is not supported with CrewAI")
281
+ if (
282
+ self.enable_ai_agent
283
+ and self.ai_framework == AIFrameworkType.DEEPAGENTS
284
+ and self.llm_provider == LLMProviderType.OPENROUTER
285
+ ):
286
+ raise ValueError(
287
+ "DeepAgents does not support OpenRouter. Use OpenAI or Anthropic provider instead."
288
+ )
280
289
  if (
281
290
  self.enable_rate_limiting
282
291
  and self.rate_limit_storage == RateLimitStorageType.REDIS
@@ -330,6 +339,16 @@ class ProjectConfig(BaseModel):
330
339
  "Webhooks require a database to store subscriptions and delivery history"
331
340
  )
332
341
 
342
+ # OAuth requires JWT authentication
343
+ if self.oauth_provider != OAuthProvider.NONE and self.auth not in (
344
+ AuthType.JWT,
345
+ AuthType.BOTH,
346
+ ):
347
+ raise ValueError(
348
+ "OAuth authentication requires JWT auth to be enabled. "
349
+ "OAuth uses JWT tokens for session management after social login."
350
+ )
351
+
333
352
  # Background task queues require Redis
334
353
  if (
335
354
  self.background_tasks
@@ -438,6 +457,7 @@ class ProjectConfig(BaseModel):
438
457
  "use_langchain": self.ai_framework == AIFrameworkType.LANGCHAIN,
439
458
  "use_langgraph": self.ai_framework == AIFrameworkType.LANGGRAPH,
440
459
  "use_crewai": self.ai_framework == AIFrameworkType.CREWAI,
460
+ "use_deepagents": self.ai_framework == AIFrameworkType.DEEPAGENTS,
441
461
  "llm_provider": self.llm_provider.value,
442
462
  "use_openai": self.llm_provider == LLMProviderType.OPENAI,
443
463
  "use_anthropic": self.llm_provider == LLMProviderType.ANTHROPIC,
@@ -226,8 +226,12 @@ def prompt_oauth() -> OAuthProvider:
226
226
  )
227
227
 
228
228
 
229
- def prompt_logfire() -> tuple[bool, LogfireFeatures]:
230
- """Prompt for Logfire configuration."""
229
+ def prompt_logfire(background_tasks: BackgroundTaskType) -> tuple[bool, LogfireFeatures]:
230
+ """Prompt for Logfire configuration.
231
+
232
+ Args:
233
+ background_tasks: Selected background task system (affects which options are shown).
234
+ """
231
235
  console.print()
232
236
  console.print("[bold cyan]Observability (Logfire)[/]")
233
237
  console.print()
@@ -242,16 +246,23 @@ def prompt_logfire() -> tuple[bool, LogfireFeatures]:
242
246
  if not enable_logfire:
243
247
  return False, LogfireFeatures()
244
248
 
249
+ # Build choices dynamically - only show Celery option when Celery is selected
250
+ choices = [
251
+ questionary.Choice("FastAPI instrumentation", value="fastapi", checked=True),
252
+ questionary.Choice("Database instrumentation", value="database", checked=True),
253
+ questionary.Choice("Redis instrumentation", value="redis", checked=False),
254
+ questionary.Choice("HTTPX instrumentation", value="httpx", checked=False),
255
+ ]
256
+
257
+ if background_tasks == BackgroundTaskType.CELERY:
258
+ choices.insert(
259
+ 3, questionary.Choice("Celery instrumentation", value="celery", checked=False)
260
+ )
261
+
245
262
  features = _check_cancelled(
246
263
  questionary.checkbox(
247
264
  "Logfire features:",
248
- choices=[
249
- questionary.Choice("FastAPI instrumentation", value="fastapi", checked=True),
250
- questionary.Choice("Database instrumentation", value="database", checked=True),
251
- questionary.Choice("Redis instrumentation", value="redis", checked=False),
252
- questionary.Choice("Celery/Taskiq instrumentation", value="celery", checked=False),
253
- questionary.Choice("HTTPX instrumentation", value="httpx", checked=False),
254
- ],
265
+ choices=choices,
255
266
  ).ask()
256
267
  )
257
268
 
@@ -616,6 +627,7 @@ def prompt_ai_framework() -> AIFrameworkType:
616
627
  questionary.Choice("LangChain", value=AIFrameworkType.LANGCHAIN),
617
628
  questionary.Choice("LangGraph (ReAct agent)", value=AIFrameworkType.LANGGRAPH),
618
629
  questionary.Choice("CrewAI (multi-agent crews)", value=AIFrameworkType.CREWAI),
630
+ questionary.Choice("DeepAgents (agentic coding)", value=AIFrameworkType.DEEPAGENTS),
619
631
  ]
620
632
 
621
633
  return cast(
@@ -635,7 +647,7 @@ def prompt_llm_provider(ai_framework: AIFrameworkType) -> LLMProviderType:
635
647
 
636
648
  Args:
637
649
  ai_framework: The selected AI framework. OpenRouter is only
638
- available for PydanticAI (not LangChain, LangGraph, or CrewAI).
650
+ available for PydanticAI (not LangChain, LangGraph, CrewAI, or DeepAgents).
639
651
  """
640
652
  console.print()
641
653
  console.print("[bold cyan]LLM Provider[/]")
@@ -833,12 +845,12 @@ def run_interactive_prompts() -> ProjectConfig:
833
845
  ).ask()
834
846
  )
835
847
 
836
- # Logfire
837
- enable_logfire, logfire_features = prompt_logfire()
838
-
839
- # Background tasks
848
+ # Background tasks (before Logfire so we can conditionally show Celery instrumentation)
840
849
  background_tasks = prompt_background_tasks()
841
850
 
851
+ # Logfire
852
+ enable_logfire, logfire_features = prompt_logfire(background_tasks)
853
+
842
854
  # Integrations (pass context for dynamic option filtering)
843
855
  integrations = prompt_integrations(database=database, orm_type=orm_type)
844
856
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "fastapi-fullstack"
3
- version = "0.1.14"
3
+ version = "0.1.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"
@@ -187,11 +187,12 @@ These variables are set automatically by the generator.
187
187
  | Variable | Type | Default | Description | Dependencies |
188
188
  |----------|------|---------|-------------|--------------|
189
189
  | `enable_ai_agent` | bool | `false` | Enable AI agent functionality | - |
190
- | `ai_framework` | enum | `"pydantic_ai"` | AI framework. Values: `pydantic_ai`, `langchain`, `langgraph`, `crewai` | Requires `enable_ai_agent` |
190
+ | `ai_framework` | enum | `"pydantic_ai"` | AI framework. Values: `pydantic_ai`, `langchain`, `langgraph`, `crewai`, `deepagents` | Requires `enable_ai_agent` |
191
191
  | `use_pydantic_ai` | bool | `true` | PydanticAI is selected | Computed from `ai_framework` |
192
192
  | `use_langchain` | bool | `false` | LangChain is selected | Computed from `ai_framework` |
193
193
  | `use_langgraph` | bool | `false` | LangGraph (ReAct agent) is selected | Computed from `ai_framework` |
194
194
  | `use_crewai` | bool | `false` | CrewAI (multi-agent crews) is selected | Computed from `ai_framework` |
195
+ | `use_deepagents` | bool | `false` | DeepAgents (agentic coding) is selected | Computed from `ai_framework` |
195
196
  | `llm_provider` | enum | `"openai"` | LLM provider. Values: `openai`, `anthropic`, `openrouter` | Requires `enable_ai_agent` |
196
197
  | `use_openai` | bool | `true` | OpenAI is selected | Computed from `llm_provider` |
197
198
  | `use_anthropic` | bool | `false` | Anthropic is selected | Computed from `llm_provider` |
@@ -202,7 +203,8 @@ These variables are set automatically by the generator.
202
203
  - PydanticAI uses `iter()` for full event streaming over WebSocket
203
204
  - LangGraph implements a ReAct (Reasoning + Acting) agent pattern with graph-based architecture
204
205
  - CrewAI enables multi-agent teams that collaborate on complex tasks
205
- - OpenRouter with LangChain, LangGraph, or CrewAI is not supported
206
+ - DeepAgents provides an agentic coding assistant with built-in filesystem tools (ls, read_file, write_file, edit_file, glob, grep) and task management
207
+ - OpenRouter with LangChain, LangGraph, CrewAI, or DeepAgents is not supported
206
208
 
207
209
  ---
208
210
 
@@ -63,6 +63,7 @@
63
63
  "use_langchain": false,
64
64
  "use_langgraph": false,
65
65
  "use_crewai": false,
66
+ "use_deepagents": false,
66
67
  "llm_provider": "openai",
67
68
  "use_openai": true,
68
69
  "use_anthropic": false,
@@ -24,6 +24,7 @@ use_pydantic_ai = "{{ cookiecutter.use_pydantic_ai }}" == "True"
24
24
  use_langchain = "{{ cookiecutter.use_langchain }}" == "True"
25
25
  use_langgraph = "{{ cookiecutter.use_langgraph }}" == "True"
26
26
  use_crewai = "{{ cookiecutter.use_crewai }}" == "True"
27
+ use_deepagents = "{{ cookiecutter.use_deepagents }}" == "True"
27
28
  enable_admin_panel = "{{ cookiecutter.enable_admin_panel }}" == "True"
28
29
  enable_websockets = "{{ cookiecutter.enable_websockets }}" == "True"
29
30
  enable_redis = "{{ cookiecutter.enable_redis }}" == "True"
@@ -99,6 +100,8 @@ else:
99
100
  remove_file(os.path.join(backend_app, "agents", "langgraph_assistant.py"))
100
101
  if not use_crewai:
101
102
  remove_file(os.path.join(backend_app, "agents", "crewai_assistant.py"))
103
+ if not use_deepagents:
104
+ remove_file(os.path.join(backend_app, "agents", "deepagents_assistant.py"))
102
105
 
103
106
  # --- Example CRUD files ---
104
107
  if not include_example_crud or not use_database:
@@ -14,6 +14,7 @@
14
14
  {%- if cookiecutter.enable_ai_agent and cookiecutter.use_langchain %}, LangChain{%- endif %}
15
15
  {%- if cookiecutter.enable_ai_agent and cookiecutter.use_langgraph %}, LangGraph{%- endif %}
16
16
  {%- if cookiecutter.enable_ai_agent and cookiecutter.use_crewai %}, CrewAI{%- endif %}
17
+ {%- if cookiecutter.enable_ai_agent and cookiecutter.use_deepagents %}, DeepAgents{%- endif %}
17
18
  {%- if cookiecutter.use_celery %}, Celery{%- endif %}
18
19
  {%- if cookiecutter.use_taskiq %}, Taskiq{%- endif %}
19
20
  {%- if cookiecutter.use_frontend %}, Next.js 15{%- endif %}
@@ -136,6 +136,22 @@ LANGCHAIN_API_KEY=
136
136
  LANGCHAIN_PROJECT={{ cookiecutter.project_slug }}
137
137
  LANGCHAIN_ENDPOINT=https://api.smith.langchain.com
138
138
  {%- endif %}
139
+ {%- if cookiecutter.use_deepagents %}
140
+
141
+ # === DeepAgents Configuration ===
142
+ # Skills paths (comma-separated, relative paths e.g. "/skills/user/,/skills/project/")
143
+ DEEPAGENTS_SKILLS_PATHS=
144
+ # Enable/disable built-in tools
145
+ DEEPAGENTS_ENABLE_FILESYSTEM=true
146
+ DEEPAGENTS_ENABLE_EXECUTE=false
147
+ DEEPAGENTS_ENABLE_TODOS=true
148
+ DEEPAGENTS_ENABLE_SUBAGENTS=true
149
+ # Human-in-the-loop: tools requiring approval (comma-separated, or "all")
150
+ # e.g. "write_file,edit_file,execute" or leave empty to disable HITL
151
+ DEEPAGENTS_INTERRUPT_TOOLS=
152
+ # Allowed decisions for interrupted tools (approve, edit, reject)
153
+ DEEPAGENTS_ALLOWED_DECISIONS=approve,edit,reject
154
+ {%- endif %}
139
155
  {%- endif %}
140
156
 
141
157
  {%- if cookiecutter.enable_cors %}
@@ -38,6 +38,17 @@ Agents work together in a team to accomplish complex tasks.
38
38
  from app.agents.crewai_assistant import CrewAIAssistant, CrewConfig, CrewContext
39
39
 
40
40
  __all__ = ["CrewAIAssistant", "CrewConfig", "CrewContext"]
41
+ {%- elif cookiecutter.enable_ai_agent and cookiecutter.use_deepagents %}
42
+ """AI Agents module using DeepAgents.
43
+
44
+ This module contains an agentic coding assistant built with DeepAgents.
45
+ DeepAgents provides built-in tools for filesystem operations, task management,
46
+ and code execution.
47
+ """
48
+
49
+ from app.agents.deepagents_assistant import AgentContext, AgentState, DeepAgentsAssistant
50
+
51
+ __all__ = ["DeepAgentsAssistant", "AgentContext", "AgentState"]
41
52
  {%- else %}
42
53
  """AI Agents - not configured."""
43
54
  {%- endif %}