fastapi-fullstack 0.2.16__py3-none-any.whl → 0.2.18__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (95) hide show
  1. {fastapi_fullstack-0.2.16.dist-info → fastapi_fullstack-0.2.18.dist-info}/METADATA +40 -3
  2. {fastapi_fullstack-0.2.16.dist-info → fastapi_fullstack-0.2.18.dist-info}/RECORD +95 -55
  3. fastapi_gen/UPGRADES.yaml +25 -0
  4. fastapi_gen/cli.py +142 -0
  5. fastapi_gen/config.py +18 -0
  6. fastapi_gen/generator.py +2 -0
  7. fastapi_gen/prompts.py +33 -0
  8. fastapi_gen/template/VARIABLES.md +1 -0
  9. fastapi_gen/template/cookiecutter.json +1 -0
  10. fastapi_gen/template/hooks/post_gen_project.py +94 -18
  11. fastapi_gen/template/{{cookiecutter.project_slug}}/.gitignore +7 -0
  12. fastapi_gen/template/{{cookiecutter.project_slug}}/ENV_VARS.md +13 -0
  13. fastapi_gen/template/{{cookiecutter.project_slug}}/Makefile +24 -5
  14. fastapi_gen/template/{{cookiecutter.project_slug}}/README.md +9 -4
  15. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.env.example +14 -0
  16. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0026_create_mcp_connections.py +86 -0
  17. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py +20 -2
  18. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py +8 -5
  19. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp.py +235 -0
  20. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp_oauth.py +378 -0
  21. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py +4 -4
  22. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py +10 -0
  23. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py +10 -0
  24. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_mcp_connections.py +131 -0
  25. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py +10 -2
  26. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/config.py +49 -1
  27. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py +4 -0
  28. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/mcp_connection.py +76 -0
  29. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py +7 -0
  30. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/mcp_connection.py +118 -0
  31. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/mcp_connection.py +139 -0
  32. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py +11 -0
  33. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py +11 -0
  34. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/mcp_connection.py +437 -0
  35. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/pyproject.toml +17 -3
  36. fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_mcp_connections.py +840 -0
  37. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml +2 -2
  38. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml +16 -10
  39. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml +36 -3
  40. fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.yml +2 -2
  41. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/deploy.md +39 -2
  42. fastapi_gen/template/{{cookiecutter.project_slug}}/docs/permissions.md +1 -1
  43. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.env.example +13 -12
  44. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/Dockerfile +6 -0
  45. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/README.md +24 -9
  46. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/package.json +2 -1
  47. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/scripts/gen-mcp-logos.ts +69 -0
  48. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx +3 -3
  49. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/integrations/page.tsx +22 -0
  50. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx +4 -1
  51. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts +4 -14
  52. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts +2 -14
  53. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts +4 -14
  54. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts +6 -18
  55. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts +4 -14
  56. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts +6 -31
  57. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/[id]/route.ts +45 -0
  58. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/[id]/test/route.ts +23 -0
  59. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/oauth/callback/route.ts +47 -0
  60. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/oauth/start/route.ts +24 -0
  61. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/route.ts +43 -0
  62. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/workspace/route.ts +22 -0
  63. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx +115 -2
  64. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx +44 -1
  65. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-mode.tsx +19 -0
  66. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx +34 -0
  67. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/mcp-connections-manager.tsx +830 -0
  68. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx +11 -0
  69. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts +3 -0
  70. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-mcp-connections.ts +119 -0
  71. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/auth-cookies.test.ts +68 -0
  72. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/auth-cookies.ts +61 -0
  73. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts +3 -0
  74. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-catalog.ts +273 -0
  75. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-connections-api.ts +110 -0
  76. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-logos.generated.ts +20 -0
  77. fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts +6 -0
  78. fastapi_gen/template/{{cookiecutter.project_slug}}/nginx/nginx.conf +5 -2
  79. fastapi_gen/upgrade/__init__.py +25 -0
  80. fastapi_gen/upgrade/_render_worker.py +43 -0
  81. fastapi_gen/upgrade/classify.py +125 -0
  82. fastapi_gen/upgrade/fetch.py +293 -0
  83. fastapi_gen/upgrade/manifest.py +192 -0
  84. fastapi_gen/upgrade/merge.py +582 -0
  85. fastapi_gen/upgrade/metadata.py +142 -0
  86. fastapi_gen/upgrade/normalize.py +361 -0
  87. fastapi_gen/upgrade/reconcile.py +132 -0
  88. fastapi_gen/upgrade/recovery.py +131 -0
  89. fastapi_gen/upgrade/rename_guard.py +156 -0
  90. fastapi_gen/upgrade/render.py +154 -0
  91. fastapi_gen/upgrade/report.py +93 -0
  92. fastapi_gen/upgrade/runner.py +479 -0
  93. {fastapi_fullstack-0.2.16.dist-info → fastapi_fullstack-0.2.18.dist-info}/WHEEL +0 -0
  94. {fastapi_fullstack-0.2.16.dist-info → fastapi_fullstack-0.2.18.dist-info}/entry_points.txt +0 -0
  95. {fastapi_fullstack-0.2.16.dist-info → fastapi_fullstack-0.2.18.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: fastapi-fullstack
3
- Version: 0.2.16
3
+ Version: 0.2.18
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
@@ -25,19 +25,21 @@ 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
28
+ Requires-Dist: packaging>=24.0
28
29
  Requires-Dist: pydantic-settings>=2.14.2
29
30
  Requires-Dist: pydantic>=2.13.0
30
31
  Requires-Dist: pytest-asyncio>=1.3.0
31
32
  Requires-Dist: pytest>=9.0.3
33
+ Requires-Dist: pyyaml>=6.0
32
34
  Requires-Dist: questionary>=2.1.0
33
35
  Requires-Dist: rich>=15.0.0
36
+ Requires-Dist: ruff>=0.14.0
34
37
  Requires-Dist: stripe>=15.1.0
35
38
  Requires-Dist: taskiq>=0.12.4
36
39
  Provides-Extra: dev
37
40
  Requires-Dist: pre-commit>=4.0.0; extra == 'dev'
38
41
  Requires-Dist: pytest-cov>=7.0.0; extra == 'dev'
39
42
  Requires-Dist: pytest>=9.0.0; extra == 'dev'
40
- Requires-Dist: ruff>=0.14.0; extra == 'dev'
41
43
  Requires-Dist: ty>=0.0.31; extra == 'dev'
42
44
  Provides-Extra: docs
43
45
  Requires-Dist: mkdocs-material>=9.7.0; extra == 'docs'
@@ -210,6 +212,39 @@ fastapi-fullstack create my_ai_app --minimal
210
212
 
211
213
  </details>
212
214
 
215
+ ### Keeping your project up to date
216
+
217
+ Your project doesn't get stranded on the template version you generated from. Pull the
218
+ latest template improvements into your existing project with a real 3-way merge — your
219
+ customizations are preserved, conflicts are left for you to resolve in your IDE, and the
220
+ whole thing lands on a dedicated branch so it's fully reversible:
221
+
222
+ ```bash
223
+ make upgrade-dry-run # preview what would change (no changes made)
224
+ make upgrade # apply on a `template-upgrade/v…` branch
225
+ # resolve any conflicts in your IDE's 3-way merge editor, then:
226
+ make upgrade-finalize # bump the manifest to the new version
227
+ ```
228
+
229
+ Files only you changed are kept, files only the template changed are updated, and new
230
+ features/migrations are pulled in. By default an upgrade keeps your existing feature set —
231
+ to also adopt optional features added since your version, use:
232
+
233
+ ```bash
234
+ make upgrade-new-features # prompts Yes/No for each new optional feature
235
+ ```
236
+
237
+ One-off flags (e.g. pinning a target version) go through `ARGS`, and you can always call
238
+ the CLI directly instead of `make`:
239
+
240
+ ```bash
241
+ make upgrade ARGS=--to=0.3.0
242
+ uvx fastapi-fullstack@latest upgrade --with-new-features
243
+ ```
244
+
245
+ See the [version-upgrade guide](docs/guides/version-upgrade.md) for the full walkthrough
246
+ (including projects generated before upgrade support existed).
247
+
213
248
  ### Environments
214
249
 
215
250
  | `make` target | Compose file | When to use |
@@ -263,7 +298,9 @@ For frontend deployment to **Vercel**:
263
298
  cd frontend && npx vercel --prod
264
299
  ```
265
300
 
266
- In the Vercel dashboard set `BACKEND_URL`, `BACKEND_WS_URL`, `NEXT_PUBLIC_AUTH_ENABLED=true`.
301
+ In the Vercel dashboard set `BACKEND_URL` (server-side), plus `NEXT_PUBLIC_API_URL`,
302
+ `NEXT_PUBLIC_WS_URL` (`wss://…`) and `NEXT_PUBLIC_SITE_URL` — the `NEXT_PUBLIC_*` ones are
303
+ inlined at build time, so they need a redeploy to take effect.
267
304
 
268
305
  </details>
269
306
 
@@ -1,25 +1,40 @@
1
1
  fastapi_gen/__init__.py,sha256=oK2gEM45SpSYBb-Itgr0GII88-5qfB0kmNkj90FkvQw,257
2
- fastapi_gen/cli.py,sha256=c6SCn0iO-HJDPRi-J8wpcNdMQucA5GsDrVu9sbVV6Tk,55404
3
- fastapi_gen/config.py,sha256=GRjFiQOoixvYlU5uzmphYOYQwTEs1f4uYMRDpqDvUdE,43089
4
- fastapi_gen/generator.py,sha256=ODY7BBJkdn3VE5ISJL5i0tZj2IFoHsrIDvEvx-WtZJk,8349
5
- fastapi_gen/prompts.py,sha256=b_LIh00ZKMejPfFSf8PCHFgEGS85jNK2Jx5ksgFY-zY,65346
6
- fastapi_gen/template/VARIABLES.md,sha256=8tgY_eyn5dtp355SfaseaM__C46cGvufOE2MZ8dRVOM,33571
7
- fastapi_gen/template/cookiecutter.json,sha256=hTL-Xp8mQH-BUCc5PxNZVSh--hf5G5CQi0WX0JOuLZI,6307
8
- fastapi_gen/template/hooks/post_gen_project.py,sha256=MklZrStNKzOSpBvAgTa2vSNbbTMdz5Ek8EroETylGjk,53472
9
- fastapi_gen/template/{{cookiecutter.project_slug}}/.gitignore,sha256=ALWGkiStRSR61YG0jwfnYf8nZ_qo2p5NEMVjye49Bqw,1132
2
+ fastapi_gen/cli.py,sha256=ZpwdniivCiP1bVP54xW2H5hSaQzqUuu7ktfFxBIrNg0,60765
3
+ fastapi_gen/config.py,sha256=zZaIF5erTvs9Cv1cONnMMQ9voI6OLSz0-9d-eztYRDU,44147
4
+ fastapi_gen/generator.py,sha256=vMZ18ANuhCKva2pDklIIAZO7bkwX-ehvPzmFV0ND3vw,8441
5
+ fastapi_gen/prompts.py,sha256=bLosSQJHGitLdfxQc449s2bl045a2up4kJ1noZ1r60I,66482
6
+ fastapi_gen/upgrade/__init__.py,sha256=-JlxOkKPW-rAbldIj2V4czXN3RGoP_tSm2hB0U8OO8M,640
7
+ fastapi_gen/upgrade/_render_worker.py,sha256=dAq5pmWJPdB3VRujFSYSh9tQ8z7klow6rCucgXEH6rE,1363
8
+ fastapi_gen/upgrade/classify.py,sha256=19veC5-h88WX8gf8MWHR0c8e9-G7Am5F6-TxI8NhE30,5745
9
+ fastapi_gen/upgrade/fetch.py,sha256=0_Mp2Dtc8D4A2Z-OkGITz87RMvH7ujUNatFx6c_9WG4,11667
10
+ fastapi_gen/upgrade/manifest.py,sha256=s4jV2PqlHf89kV0o3eEtNiepB-4DWp6hnVBc-xG1A-0,7770
11
+ fastapi_gen/upgrade/merge.py,sha256=7kgdQfX_S7UMPLjxgP_Y43dDun6r1FRzVyUq5RsS1G4,23813
12
+ fastapi_gen/upgrade/metadata.py,sha256=EdlmPbWaZfi0hkORJne_AJgPlhtbXlcQSCIO4kODyUw,5306
13
+ fastapi_gen/upgrade/normalize.py,sha256=PNin6mWjhkcU6IhoLvY0mSTtXd8LIRPruXMYqqm3F_M,14867
14
+ fastapi_gen/upgrade/reconcile.py,sha256=jREtas_-8viC8_YsR7dYSyQw8Xe0z2eob0mWS8lSnTE,5358
15
+ fastapi_gen/upgrade/recovery.py,sha256=CkY92QuR7hGgnEnAN9ai0puEujs3ztmSNUxeZf-MmKI,5627
16
+ fastapi_gen/upgrade/rename_guard.py,sha256=ap0ds5k93Hh6hhQhOxrDPsh-utTE1BeBYysrTHEaYz8,5980
17
+ fastapi_gen/upgrade/render.py,sha256=PmEm7BPmEfUK29RcVgPN9PttTX7oHeWnDgf_vgGja1s,5497
18
+ fastapi_gen/upgrade/report.py,sha256=49v9kq2tkbeqqbdH-kRIM3kccaFfPVfjhi7Tm5cCVvE,3802
19
+ fastapi_gen/upgrade/runner.py,sha256=msnj2RYii6low6gPeZ4TRMlL01Hq8a0zJyLBzPotxCI,19302
20
+ fastapi_gen/UPGRADES.yaml,sha256=DciwcDB-T5LBX-PVTLBqSrm3t6gVL3Mhm5McBkOkORo,1524
21
+ fastapi_gen/template/VARIABLES.md,sha256=9CcimCDgXLshogzr1pjRYUTTmECCL9NAb1OzDFNTfgw,34322
22
+ fastapi_gen/template/cookiecutter.json,sha256=xikYtcbOLG4VOwZXAk-0acbELW8jXhHAGEg4kGEgRdg,6337
23
+ fastapi_gen/template/hooks/post_gen_project.py,sha256=o79caVy6BKSjgK2rpEYlLx0TEA3kAOg03yPDePuGfkY,58054
24
+ fastapi_gen/template/{{cookiecutter.project_slug}}/.gitignore,sha256=yC3ZUp8Txp_1TPDabDlz4pGa2p1cNwr49de0dCcctOw,1515
10
25
  fastapi_gen/template/{{cookiecutter.project_slug}}/.gitlab-ci.yml,sha256=dZh-VSLL5beOtj8_UxBbD86sBdE9ubTpmWvMcrRqr-M,4651
11
26
  fastapi_gen/template/{{cookiecutter.project_slug}}/AGENTS.md,sha256=HqhXNdBq1ZXlFJCC4V3CY8DorTkZkwFJcvv2O77Pwk4,2454
12
27
  fastapi_gen/template/{{cookiecutter.project_slug}}/CLAUDE.md,sha256=OwM3tVeznjnSr8h0Ors27AIqB7DqC8X1rYLw1fQE0x0,3657
13
28
  fastapi_gen/template/{{cookiecutter.project_slug}}/CONTRIBUTING.md,sha256=pxP7KcIbmZbao1HPnFEykJbCHa7VfW2RQWfBMNSE_kE,3304
14
- fastapi_gen/template/{{cookiecutter.project_slug}}/ENV_VARS.md,sha256=t8iwCVu3XV3lAJIvA3nYsbE7Y25JXgkrBMAJt_iiJUc,8234
29
+ fastapi_gen/template/{{cookiecutter.project_slug}}/ENV_VARS.md,sha256=NSNkHTEphs6TCKgY5kzhnLmejw9PQKOP3KmWmvCnCSA,8975
15
30
  fastapi_gen/template/{{cookiecutter.project_slug}}/MANUAL_STEPS.md,sha256=6HJW2WE6-U4jbyQT7BjH17N6I2xAXbaAKbANiNEFNRA,7775
16
- fastapi_gen/template/{{cookiecutter.project_slug}}/Makefile,sha256=QD3Wv03COXT7GsOB_0nSvz6fG8hG0bt3de_uQUgjLJk,17172
17
- fastapi_gen/template/{{cookiecutter.project_slug}}/README.md,sha256=faY_FSgHSMc5PhrHFbJGmJpRa0gxUwZLF6JZ4Qn7Ac4,13878
31
+ fastapi_gen/template/{{cookiecutter.project_slug}}/Makefile,sha256=Pjqb8ph2XTiuEWhC99ECjYGMjq_ZiT8epdN5YgjzLos,18018
32
+ fastapi_gen/template/{{cookiecutter.project_slug}}/README.md,sha256=nXNh5TKj2wMqxZDxoFp7Q1ej87IL-Rt_VTGBkQLfKCw,14314
18
33
  fastapi_gen/template/{{cookiecutter.project_slug}}/SECURITY.md,sha256=7X5u7feq2AXxWv2CMMNQZf5QQ5QkwBnzKlrcLz3RJ_Q,4735
19
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml,sha256=7dmZ1YWeAHk9XtR5WIBZNEvLVwCgKCsthS1XdyFK2oY,12347
20
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml,sha256=nmMjmzmyVudK9vZoFBmHNv4q4-ydq_lW5X4YrxEpP8E,2052
21
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml,sha256=TDcGq3GTvjzRz2IOVPFWZtFfh5atNTNDhO-cb0Y2-R4,22282
22
- fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.yml,sha256=0vmI_ux4O9WVB1ACcgUUnU54BADFTApI3bc4Z9Iz0MU,13634
34
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.dev.yml,sha256=0LdkV4HIJX9lEtqTfYZsjbYARAvxSCeIjZ_VSRrN5LU,12347
35
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.frontend.yml,sha256=5Iu2j3ChoUGn7VTVKLkXbGwtI21z1WdHg0IPhV3dPOQ,2726
36
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.prod.yml,sha256=WJrgVG04QZpuD0j0iOmM7id4gurbFfQu6YJGSwaDWyM,24589
37
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docker-compose.yml,sha256=rcYyrFsuRdY6yMTfVQvnFbOeeRIRkLLdnX2u_x0_ORs,13634
23
38
  fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/settings.json,sha256=i6XfBDlx6N1AXg4-MrjmIzPhxRXvQC9PRXJFZyfNs1Y,363
24
39
  fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/commands/add-endpoint.md,sha256=p0EsXDvW23v4uOSPRlwA84nVrB7_VVL_FnKFEE442AQ,1648
25
40
  fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/commands/fix-issue.md,sha256=3bcQwYzf_EXTit9nlkplUd0-G5T9-gGranogIDS_kjU,800
@@ -41,11 +56,11 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/pytest-suite/S
41
56
  fastapi_gen/template/{{cookiecutter.project_slug}}/.claude/skills/rag-knowledge/SKILL.md,sha256=idONRjVqfUYLEE07ne9jHY56YjO6JLWINzTFgD1-kjk,3081
42
57
  fastapi_gen/template/{{cookiecutter.project_slug}}/.github/workflows/ci.yml,sha256=ATDx2s1maScy40nBkcn3wTpzJ9RuSoMb_7zrYQt48eU,4745
43
58
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.dockerignore,sha256=_iRaYQqTvt8_2yhJZUp60PPaL5XLiUFg0OSa-J_9XIQ,523
44
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.env.example,sha256=o4YsvmFXWALHltoTbXlPtBS7PTHRvp-j5lpc6IoJ8Ho,11365
59
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.env.example,sha256=H60tyAiXjGkaUUurOk_2hNwzwcvQf2Y1q0sNzTy9-Yo,12212
45
60
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/.pre-commit-config.yaml,sha256=22sYeJOrYywl_5PWgPzCyIwhpqmymIDIzx2hlBRQ-yI,681
46
61
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/Dockerfile,sha256=CKyuUKwt41LHIH9VB28TEzes5_TQkUEo9rIBjE3v8a8,2184
47
62
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic.ini,sha256=vncO8XHTAW1ospWsdvtXD5PyMhp91CJmdVfv-6TakAY,737
48
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/pyproject.toml,sha256=g8ekuVxzP88UJWe5ad8Pog0J8sTvpgF0P2Vpm6dqWQE,13864
63
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/pyproject.toml,sha256=nWgclrugZfrxqEA1dgSjMNTMNfCU11Qf0Vs9AjRnpHE,14780
49
64
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/env.py,sha256=ifDazpmfYDUI0KGxaGcAgJbz6HNzu9bQYB6li88OMcU,3163
50
65
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/script.py.mako,sha256=ZCfgWrEMJRDF_WF_GRGptwAIJI6YnAditBG1axwAP9Q,700
51
66
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -75,32 +90,35 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0022
75
90
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0023_add_is_demo_conversations.py,sha256=VCVhhwyvbuuSiGKwXmw4rIgZ8x811AeCQgsDTaxsVCQ,793
76
91
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0024_create_webhook_tables.py,sha256=HExnIhQAJXNCe1vxhagIhUr0BeBBv2MTBadQEY4GtY8,3233
77
92
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0025_message_thinking.py,sha256=8Wi3zcAXADP6WbjuB-Na_Y_OZTx6DDETkrZAVrNEdl8,727
93
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/alembic/versions/0026_create_mcp_connections.py,sha256=ADbedBphmfFnRiZ7fssMjD2fgfqz6YIUf7F2DguKm68,3188
78
94
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/__init__.py,sha256=vNnuyVXC5oZ3yq46meWLNhkUYlMgod70TgvWyvgNhBk,68
79
95
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/admin.py,sha256=QxVibclQNYtROGtf00Lsb5dlskvs4yLZ7SaEz6vf-IA,12990
80
96
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/main.py,sha256=CcUQKjWvANuNCRIS_vEry6ZglCs1wIwD76HkbMa3BHw,18948
81
97
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/__init__.py,sha256=DP_Hrjq0WlyuWhrkplLKmS3pVsoGZgFQgXhAcsjqBlQ,1889
82
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py,sha256=tkYNPv8na9zuCz1D2AFfKV-OhpiOzw1lL-uXXC9LHnA,21471
83
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py,sha256=DDNw13jlftfntPsM2ZVdJQyWqc2FFPcEXFo6wyZttbM,30208
98
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/assistant.py,sha256=NXZTvQBn7iaqQVcXCUwAusSKx1PmBpcDiYl2uUa6hKA,22196
99
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/deepagents_assistant.py,sha256=vziHT47EmLWSh7RJWCAUHGu5orxm1PrINwLEc7OJJN8,30372
84
100
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/langchain_assistant.py,sha256=sX9dbzwR-X-HQvPWLgEunbzEv-DcJp7Db6VsCYwf0eY,13158
85
101
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/langgraph_assistant.py,sha256=uSDnHa7VvbPwQ_csqjMpmTlv_RTym4GkHUasbWlQdpU,15363
102
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp.py,sha256=g3-R_dWEwNUzNN8BPsgc1sqNR1n7JoNiwtUYRgTAm8o,8614
103
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/mcp_oauth.py,sha256=lfn0RGPj6MmEiBQBABD7UfLsXywIZqFj3C7VUKVY2LE,14895
86
104
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/prompts.py,sha256=jc4VHuVLdi-5f0oiZVqJ-8qkAtVKbO8TEQuMv1c4nL0,12523
87
105
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/pydantic_deep_assistant.py,sha256=7zqyaa9vpNprDFj-Lnie8-e-Gv6O4-DO-NK_Ko01SNE,16544
88
106
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/utils.py,sha256=nV5ScbK7TH4LAaiP3zx2pi8FmGHJ6ElHyhLjGbB_PMs,348
89
107
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/__init__.py,sha256=BuDkvOBAShFc1dAk6c_Jk_MWAozW_WA0SJOMbFNbu9I,933
90
108
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/ask_user_tool.py,sha256=zyuSStYw2ZvH20YuAn_VgFh8oR2Mcd8WKVoFEtfIJnA,1407
91
109
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/chart_tool.py,sha256=QJUq0_pk_3Wo4B7q-xYc4D34tpXE7PUJ5bR46xaXgMM,7971
92
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py,sha256=Y0It67Dgnzf5TPgPmB4FuEsw-WjtAI2R74hHgbLI2u8,2168
110
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/code_execution.py,sha256=YTKaxZOS3iDOwhse-Nz93VPmvcgvTn65Y_rMwzXnNy8,2218
93
111
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/fetch_url.py,sha256=3Ea-_F8u5eC0n7on8tDnR1S2Zj6IkyiveKWaMeMUmgU,4052
94
112
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/rag_tool.py,sha256=NFhP2dkt6s3G8Ryj4AhV4EctOHp_ktiGxburxRx4li8,6748
95
113
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/research.py,sha256=p3j5K5FdjJ3JyktyEHVRj_P0DQBV3KJAha7lDyLCrIk,168
96
114
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/agents/tools/web_search.py,sha256=CyRc7-rklcMl6s_9Cnl1xLDcBNm8Q3mMiEu3bYKagQk,3177
97
115
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/__init__.py,sha256=NeESK8RjcyjY9KL1c9H2jIw34RpWmtlHgd8rhPBuolo,18
98
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py,sha256=xIwcwRgpbhXZaGGUwugNvGHVPKC2QR0KWZLPMBwJco4,24821
116
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/deps.py,sha256=zd9VVLpvmbYqNb6ShyhwiM_pt3ByQkBgnChQOH99aJA,25135
99
117
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/exception_handlers.py,sha256=FGDbVsO-UzvWZtcnLW6joZXPZahZc9O13p_tqzlhF6c,3453
100
118
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/router.py,sha256=8E0e0Oef6KrB6raDgrV0Lj-tPKRiQ-5UlGM3yGnz50Q,233
101
119
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/versioning.py,sha256=O5FQre_y1hwJGsbREeKbRKoxEWUVhGNg7gIC76FqyPo,5906
102
120
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/__init__.py,sha256=wIJD_xpViBStOBb4iWBX_hxdPfSKJyAGlcOw81NTWXo,207
103
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py,sha256=i77ftuXWLO9w5g2hJph2HMHYdh8ifdJEdCHlT-nw_hU,7016
121
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/__init__.py,sha256=WeCCXp1dETT-BsVXFzS86wlzXp6YScgij2ahudY2gBg,7292
104
122
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_conversations.py,sha256=Kmzwl-ve6jbukTa5WNQIydOOR1cmIvXWLtamXS9Oj4E,2612
105
123
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_ratings.py,sha256=IbCCteKLbwsj8bp1znBQ2zdGPTePNtIaULmO3eSschg,2540
106
124
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/admin_stats.py,sha256=z6xVC9yac5jcGpt5QK91VdzpgYap9ETWgCx2M6yKITM,1177
@@ -117,6 +135,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/inv
117
135
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/items.py,sha256=43S9OPXxAxrk_F10toYeLM0MRW_O37-w-0CQ8JAwDbo,2285
118
136
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/knowledge_bases.py,sha256=Wu3MzcI7xJWI9A2uRmhskYfOzeLDu-Hfuxdo8gxqD2o,14219
119
137
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/marketing.py,sha256=QG_CjH8_xk9Ii_D0Vjxu4li0y2pHvulUmB8X7n2l58o,750
138
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_mcp_connections.py,sha256=HTCzfTqkLTjYzfMzNFYlvXFAArJomTjZB93eMBBgx0w,4660
120
139
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/me_slash_commands.py,sha256=cCQP6JS8LRaTazgk2K0R4EASZSop1iCK34CAG3Fc3Kc,2685
121
140
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/members.py,sha256=5_Tfwc8s8JqTZUk5XMJ4HAGwEDSsehkrk73VSHUvQjQ,3329
122
141
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/oauth.py,sha256=Zz_fNrh2xNwRpoGdqOCGeZBPf4TcjMm0cAkq0I80x_U,2862
@@ -131,7 +150,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/tel
131
150
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/users.py,sha256=maIccIgybZvB_54IaE9wrI8-TxdAoSb1ATWTDbk3sZU,3802
132
151
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/api/routes/v1/webhooks.py,sha256=1q3lkSy7cEr8KY2PNSbWYhOrJjqHKC3ujMbvxi4mkMs,5647
133
152
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/clients/__init__.py,sha256=gA4EUVDQQoTzeaLzFHZEA6Ps0eO7eo8NYjhNUDkzwzs,281
134
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py,sha256=i_HpxZnpHkyF5U80fS1wDawC4d3ShzGqAObOjgEPP0k,2731
153
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/clients/redis.py,sha256=Q67nC1xl-ImX-oWh-Ii1QBsl9srd9IZt3v8-Pr0bwzw,3075
135
154
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/__init__.py,sha256=P912XHMGspKPltxdR7Ac7anC76a6DyDVXc_o-clV_94,3097
136
155
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/channel.py,sha256=l5tHqHirVT00g0kkPASvcYQANrsm-fq5_F2yTb-3De8,6182
137
156
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/commands/cleanup.py,sha256=ocirlds_LqKbzB-s0Jbz6n0CJdv3Uec34ysZHkm16rQ,2110
@@ -144,7 +163,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/__init__.py,
144
163
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/audit.py,sha256=WVtslbED9i7xRHRMs-kgp6TUcOqCCBqo56DeCfQNSPg,1199
145
164
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/cache.py,sha256=VYZfvIdLdtb1Y8h09IoxqPkDyG8pZtY96hR15Hff8YM,626
146
165
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/channel_crypto.py,sha256=VG98BxIMoXL_6U6B40gCX_p8xHSoOTBPre3zCclVyQs,1608
147
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/config.py,sha256=WSP_b8JMRU7iRqd9FEdu__njXAElunw0TSegb1jt9kk,26303
166
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/config.py,sha256=HnVa4gZwadFI8x9bhUvCdnPGCPbscZB4_gEGACMhgKM,28332
148
167
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/crypto.py,sha256=Uv5x1umwjsvdEqfA5zQmolcwtTA1cmbuwRIkATZkYqw,1295
149
168
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/csrf.py,sha256=5tXguJXdMr8rs2TYTEyvUkY4r6nxcQa1ZrA8E3HPon4,4575
150
169
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/core/exceptions.py,sha256=DRMaSCDwajxldiC530gJLHbsg4NeqdYdat7zBq5i4IQ,3000
@@ -159,7 +178,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/__init__.py,sh
159
178
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/base.py,sha256=TWjarV2D4yIKC7w_e8gR0v6hUE94cBnl0bSa8GYp56s,2108
160
179
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/session.py,sha256=4aGrpl4JQDQVu5kOVQnI2dA4ObbJY5kOZYD94b5afpQ,2991
161
180
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/todo_pool.py,sha256=1sYPvV4KwakfWRwupGuEHehG5CpJOQasK9YszllW-iI,1760
162
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py,sha256=PfBT6Eti7Hu_46Iq3AfFUQgQN38fmXj_muxTVoAm8_E,2765
181
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/__init__.py,sha256=Kkp-ufbZE8g-rqPl4QZC-L-v1ZT7fDaLidUaa6nJCcU,2920
163
182
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/audit_log.py,sha256=D-6uhROUFBSAfCgn6pynV9k95TRyNZmhfEVpD7lJZ80,2977
164
183
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_bot.py,sha256=XlJ7Xk0tgFSusQb2Mbu3aoU8WGkuwsT_opZKmY3_ggQ,4121
165
184
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/channel_identity.py,sha256=RL8g8D8srDkvsyIZdKQClazuQXct_oj5VTaiRkaoHNM,3739
@@ -170,6 +189,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/convers
170
189
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/credit_transaction.py,sha256=BerBTIwkbf-e2OKZQOYFJd-gmrPEP7Zuwn0CJOGXtG4,6475
171
190
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/item.py,sha256=2z8g1K4Q1gFdycP2ZthFpb984Y1zqjWyajCO5Flh2Dw,1532
172
191
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/knowledge_base.py,sha256=Pk_XD_MB9Sd82Nr7Z5tJihlvFRt4HyCIAnj64gSDHwY,3777
192
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/mcp_connection.py,sha256=Paxjxa3nhxOmQfEKV42MXHYxz7VxC79tnS68jj33-g8,3725
173
193
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/message_rating.py,sha256=rUKh_73a64eJmp6Rr0M_2DQp6UgwP966MVHmEzrHnfM,4228
174
194
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/organization.py,sha256=_69TefZwVCLUlLL0olzGIB0l2cQzO1onHFrOZ4tj1T8,12684
175
195
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/plan.py,sha256=iuINd308JyQD2mI3HbQMOmStPqs-YE7DcdmlvUWKXYA,7078
@@ -183,7 +203,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/sync_so
183
203
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/user.py,sha256=JTHHWB41LnR8JYvy3or5JApmAygdY8LIhf0lRt6MtkA,5966
184
204
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/user_slash_command.py,sha256=ZN71Ry1RcIlG1eUoahySsJW1Q7rxm3gKbeoiVnskspQ,4109
185
205
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/db/models/webhook.py,sha256=kl-2FRe0ineDl8mtI9wT1SFnQwqvZtebbfplfE3QtNI,5697
186
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py,sha256=VZnk-iioy8pQbfPaSHkR0HECuzO2yGA0DeK7MCSR0DI,3355
206
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/__init__.py,sha256=Wog9087BD1uhNzf-epXUo7YA5M8QeTuADRYcjL-9C4w,3558
187
207
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_bot.py,sha256=FJ5EaAU8ROyeWeh4OzrCTjWLb4havcQ2KAndL_dcubM,3671
188
208
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_identity.py,sha256=diP-iIg-D1By77eiJg6LDdw2cmKdK6Qi33L7hUtTc9E,2812
189
209
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/channel_session.py,sha256=E-4ThRDfqu41BsFxRMNCWH_4jklSq-Cf6eAPtl45u2A,3675
@@ -194,6 +214,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/cred
194
214
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/invitation.py,sha256=ZrHX2UuCtFXndKBVcyT871yPGa4-7OPzrI3mymwn4R0,3332
195
215
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/item.py,sha256=Mb65qM-CQpF_bHFBu4DWHWpRgAcqmzHqhGDM6XKxjdw,1916
196
216
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/knowledge_base.py,sha256=LNs9mYVWFAOhBtMrvyLxDsF8IZ0vmEwzZTugaPURICE,3342
217
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/mcp_connection.py,sha256=Zr0ixYOXQk0oOrBEyl7N-_PExl5snglbfEj3XFkLwgA,3836
197
218
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/member.py,sha256=8LlGKLIBUO447zeQXwcQyNXuV7rpzYXI_E3DkkQoO-A,3599
198
219
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/message_rating.py,sha256=xEGOPClkHzgT0eBCa-Vyuct3aAFyIwxBWK4o6Hpg7nw,6736
199
220
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/repositories/organization.py,sha256=kMxVcmqcFET71XkyisdB2ikYvqaxI8KJoVoW32Ef-uU,5231
@@ -221,6 +242,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/file.py,s
221
242
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/item.py,sha256=Z3YhlaGPPrSNUMw3IdC4Y86HZoeEJgS-D-S-I16E0cM,1064
222
243
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/knowledge_base.py,sha256=Fyswu3d83PmdM_iQ3e-yhis29O0T-5H0ow0lBmjplvs,1633
223
244
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/marketing.py,sha256=yJyB9PL2tNKS7EfWFXP_qPAQzSUi6Yd8vIixzYI6PC4,637
245
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/mcp_connection.py,sha256=GA6s94dcsOwFIjmDjevnunASOBNkiCHkAmndCDq5TLk,4732
224
246
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/message_rating.py,sha256=3zX4CnvlmJgYVmAF7FqViKLbl6JycOv5o7Xk5xIaQDA,2622
225
247
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/organization.py,sha256=EDDaGv0wXj9FV6ZRv4MrEtcuO8CFomRN2yi_L-1ox6g,3035
226
248
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/password_reset.py,sha256=KfOXAGA__zw9S9XAwUzOH8-vseKeCvySeQ9cHrnUElo,1241
@@ -235,8 +257,8 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/schemas/webhook.p
235
257
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/__init__.py,sha256=2eaFa3riNnh9BVf4A6i7ChK1yqCOA8VyTg1zeL2tYy0,523
236
258
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/admin.py,sha256=FzwzW6FpIx1Ciwj_9lCbWMzi-EWv3v2-J8Sopi9LiZU,5576
237
259
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent.py,sha256=nL7gsIBIHNsyePQHUBSWU5sO9jotfOkCXgE2T9t9hPY,12064
238
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py,sha256=u3OxIMVO4Q0rbouCKlW38YPjUrRNoydK2euoMT8mSR0,15919
239
- fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py,sha256=PRZ0UeRkoqXc8gkjMQOSZvJP5KJqXqyVWwN9NyEb-UA,111483
260
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_invocation.py,sha256=BOUuHp8QVXYmQTX30vQw4Wl2U9D3QsUA3sNrT7CMaRw,16486
261
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/agent_session.py,sha256=z9vK8-CvOQMmQgiuYhGIJFsCkGA1L_9kp4mo27DDUlE,111980
240
262
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/anomaly_detection.py,sha256=uKPCzzdeyDSUbgkD7VwFIubEHhoU1LEoOp3R1_F0SlE,3112
241
263
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/channel_bot.py,sha256=R1tfQQcNxHKZ9C3yOD6Hh4TANY77FL4XNic4Rf40qWo,6383
242
264
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/contact.py,sha256=AuML8RHIozZkchZlNMjHsZhLWpTMxukfy1xk6mak3Bk,1697
@@ -248,6 +270,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/health.p
248
270
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/invitation.py,sha256=-kEZ5mIHYnvQOsQAr7_N-xa5Ce4nFsb9K07n3FlMINc,7700
249
271
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/item.py,sha256=9cEPv90_o2hpLpNFzT0gi7vEt6MuZ5qCbXOGplluzNg,2302
250
272
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/knowledge_base.py,sha256=qkrPAMeGdreKFyLh0yyYy75-B6E_a7fhAvH9kMcvJGI,11794
273
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/mcp_connection.py,sha256=N1YBGXMhqyBhXNBu_gRWUfCT6xBAXB0xas7r6P1OxdQ,18886
251
274
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/member.py,sha256=BCjetJzFEfiudoXAz36ktJrritDIZBfWHUyP7K1Eeoc,7255
252
275
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/message_rating.py,sha256=2CWFqNDyaFTaXAgk1AIPS2gC_6AVFAwjfjUXY4IHCSI,13129
253
276
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/app/services/newsletter.py,sha256=LaT0bLcI5FG-ISdat06Ci1e3QT-1QHLrimcWwR5-Kl8,1545
@@ -341,6 +364,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_conversati
341
364
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_core.py,sha256=7U1k_x36xxou6Mtenb7gx-ZPASpcy4zbEUY85WqwmV4,4239
342
365
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_fetch_url.py,sha256=ZnPxBUYH6KyAWcQf1MTEQEUvb7tpDhXcmbVKRLR2Xuw,3595
343
366
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_kb_scoping.py,sha256=fEV6jEaPtW5oNyRBDAA_S2jHS2QyxXWmOG-EKhYD7Hk,6573
367
+ fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_mcp_connections.py,sha256=bXtouBih2krDRw0Kb-kxvRJuHvI_5O3c-VRzCfif4Ig,34801
344
368
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_migrations.py,sha256=QJDbmRSyGCvZKBerFrSs4kA5f1PHaMNDShzCuqSR2NQ,3603
345
369
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_rbac_teams.py,sha256=ryLOK_4YMtSBfRqeVFEnvcQXoGkQEpDrX0OAsCmm-v8,7037
346
370
  fastapi_gen/template/{{cookiecutter.project_slug}}/backend/tests/test_repositories.py,sha256=uQHtc5I5OZpWnO7rC1Y8C7uw1WZWtG_HNWwxpI2OhtM,1286
@@ -366,10 +390,10 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/docs/adding_features.md,sha25
366
390
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/architecture.md,sha256=Lg8RzpLDO9tA-zVE3lFnllnTkW-FvQwc7-XMseneTq4,11806
367
391
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/commands.md,sha256=fwd58qBEN_mRS4ipOaUnR6A4B3SlqE5piMdsUXXQULg,11621
368
392
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/configuration.md,sha256=dKeJ3tmZp15HbK1ndnfQ3dVVfVGpcj9CSBXQutoxv4A,17645
369
- fastapi_gen/template/{{cookiecutter.project_slug}}/docs/deploy.md,sha256=NkFgg_n6CA9Av-CzM4ALvksafLEF2bt2zBurN-TsgRk,5715
393
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docs/deploy.md,sha256=AvOHofpCqSXTNtt_7LagS5PVIxMQXorALiPe9FtTTU4,7607
370
394
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/file-processing.md,sha256=ss5pGrKvcKPqi2hU31iKd35JS2FzqPWObavfD5DpMmU,11003
371
395
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/patterns.md,sha256=FiEkdtRMkhPcU32spCnnEQFts0gh-3kGchKZoA1QK9A,5976
372
- fastapi_gen/template/{{cookiecutter.project_slug}}/docs/permissions.md,sha256=dEoSArf7qyni9dwz1mXBfpRkcUE-y7zIgJu_SgODoEo,9883
396
+ fastapi_gen/template/{{cookiecutter.project_slug}}/docs/permissions.md,sha256=lzXlt-qE2p2R1tXs-Oc5EKJ4OfFDORsdyTYg5oFfYSc,9877
373
397
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/testing.md,sha256=aWdWyLDRJ7g25KXZqDM1c9OR8BlHE3XrCcB1Awz9imE,2835
374
398
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/howto/add-agent-tool.md,sha256=vQan0rrqcxNWu0GlWt3_DWN81WUddasINoUzxS3jlhE,2188
375
399
  fastapi_gen/template/{{cookiecutter.project_slug}}/docs/howto/add-api-endpoint.md,sha256=vk4vpjvMxuqpDXNC4_KpJpGsluj6BUtgR-If20B3Egg,5883
@@ -407,16 +431,16 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.html,
407
431
  fastapi_gen/template/{{cookiecutter.project_slug}}/emails/compiled/welcome.txt,sha256=WzYZXM4pbV22E_C8KjSCRevn1j7wbx7ojIXYUuzp1e4,240
408
432
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.dockerignore,sha256=aPWb-zCIZu6TI0jiXFs481-eMrOO-FxVvRL3992jrDY,343
409
433
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.editorconfig,sha256=bWeW8XS3NrzXpomZ4w0vGaNxmtkjVdzAz9_OimaGRVM,188
410
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.env.example,sha256=-DZjR8Yz4gVjwlAEVz2WU5lUAtZ6wDUKaUpXc3JGBq8,1076
434
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.env.example,sha256=kKFRnghhxAoGij0jMyzwqycIGyjVwGV-dGgI3OUuErA,1481
411
435
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.gitignore,sha256=fZEN8HisQjcSmxEB3IDWoKA5dTYDzEAXLtqYKvdsprs,439
412
436
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.prettierignore,sha256=wYnkkZcvXw2mtuFVzYAjH-eFldFkK5Xn26fsZZ19BK0,161
413
437
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/.prettierrc,sha256=1byVwTV0G71t2x5Ko6ryNm2oZ8753NfLLqhrCcon4v0,227
414
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/Dockerfile,sha256=gFukCLmTFut_vKbCOIXSuONONsUjxfc20YzfOSPa5MA,2059
415
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/README.md,sha256=VWOZbs83mmN49T9LhPASrSeH9aM-NOHY2eeAhrtD1uA,2504
438
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/Dockerfile,sha256=aRLL3IL_5b-v0Jkev_w9Mif6D3tBa-L_GAwWW5iN1vg,2323
439
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/README.md,sha256=2vyKiIM-umf7-RlKkgeNLIJhPAyWsan22OhSsiKyDJs,3689
416
440
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/eslint.config.mjs,sha256=y48aSi3BZvVi6GvePRqKmfaMJdK6ymN9X5fyeHFlpPU,2663
417
441
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/instrumentation.ts,sha256=KKUhYC1lApvs-Vtw9kkzqYiZBaW5axDvHhxeHznljM4,344
418
442
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/next.config.ts,sha256=5LYPHgUWe0H8oDoQ7aFBT-OlwC0SSvFJMmoroPAYqp0,3497
419
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/package.json,sha256=LftX3RfeQvzHRrjEfdegH2fG6kbFqat-5edWq6rQ69s,3900
443
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/package.json,sha256=Q7948DLAI0Iq7VIKqhcZYzKPu5hWIjvYngKziJU_ZAo,4007
420
444
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/playwright.config.ts,sha256=KVU5cy9ASA9K0ylTbJcDTgS3q_VU5MsqH1-_rH3WiFI,2534
421
445
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/postcss.config.mjs,sha256=36x6wthtMmoOWtsCTnlDwYE5PtF6X8uPAxWyTH2m3d4,94
422
446
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/tsconfig.json,sha256=d8LzqnKr4bNHXByRHfgxcFQwP_5qFpspoaGbQvEpdgc,660
@@ -446,6 +470,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/e2e/home.spec.ts,sha
446
470
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/messages/en.json,sha256=npNKnJ5FCHegyFFt1qmzUFLRwsU7-qS3vqu-oCs6J4M,39390
447
471
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/messages/pl.json,sha256=encON3pOZb_kou5FGnZ4z26_-Z5izZt7teT2-oqAY6M,41547
448
472
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/public/.gitkeep,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
473
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/scripts/gen-mcp-logos.ts,sha256=TTjN9Ux6YVTapMZ9bJKbBqvykSuYoHN7ukmwQzCq058,2725
449
474
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/i18n.ts,sha256=NxoJ_MnO9wqik9wQM-nq4FPaBP8aK6LdaculWIypyII,1276
450
475
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/middleware.ts,sha256=GHlwWtD6i7CtbWGVZlotlkN7sHgh7CUQAABKFSV8cVE,1162
451
476
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/apple-icon.tsx,sha256=MCiMbtWcBan1YmO-hb_yWrAMGt8VLBcDntAQ_DfL3Tg,747
@@ -493,15 +518,16 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(da
493
518
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/invitations/[token]/page.tsx,sha256=-JxzGa7DXbBIoOjNEY0UPO6CuIXIMTS-6kSzYMx7S2o,3039
494
519
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/page.tsx,sha256=Bgr-fksCgjxc_amNxqrRVL_Ebm8znzsawRzpqGGY-do,5580
495
520
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/kb/[id]/page.tsx,sha256=OSkVb53kwqDkYeJ9u9dCZweuODXIsLGXVslMlPqsWa4,22149
496
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx,sha256=soWYXTeVDwX3m-pap_Fal-0YjPXNYOCMpX-rWcKuQaM,7841
521
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/page.tsx,sha256=hyjFIukQ-_8C-FUNZ_QCLiton1ocmWfTLqcFskczSvg,8011
497
522
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/integrations/page.tsx,sha256=luUxOeUi-IjBn4UmOx0qlkcMN1IMu7mfBdROtzmHHKI,8532
498
523
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/orgs/[id]/members/page.tsx,sha256=a6ydq0KQn2XNdY6LoxUMRt3YwuYyLqZVkMbLOP0MjSs,12749
499
524
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/profile/page.tsx,sha256=Eq96ai1eSTRy44W0-NAO5jvefIU-PaU9EtBy8hVNeD4,124
500
525
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/rag/page.tsx,sha256=qxa-V3IMQUgtCNhvQWbVeEr9oO7Fr46b4e0YomsYzVE,38998
501
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx,sha256=P-AkkLYCBhNwASIG1MpJ5akqQn7SIoZg5WLNZ933ShQ,1133
526
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/layout.tsx,sha256=xw9u56iCNebi9L0bmBeCitqWtXXYZWgXw48awkHgS6I,1320
502
527
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/page.tsx,sha256=kvZJWioOIHo4Is_SR8RnzuRv2sqqja3QVZxsvSfJo9c,169
503
528
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/account/page.tsx,sha256=WQBvycs3j-fBu4p0k-Sog3amjfYWthOIvckPSnx47Xo,7688
504
529
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/appearance/page.tsx,sha256=biiOc8xIs7fElMAEL-j6A1rDA82cZRDV3B_8PDvFNjw,884
530
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/integrations/page.tsx,sha256=cSkCCku8MR5--x9yVv4XFDLdoYjgSLAlBE7t4lfPLG0,754
505
531
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/notifications/page.tsx,sha256=TJJcUny68tNlJnuuecN89EAbRvFmfwd7fDM5MC44tDE,6129
506
532
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/profile/page.tsx,sha256=1F0e6cqDaYN9v58dvXQgtG58TKgzbo6hyGv_fCacg8U,12112
507
533
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/[locale]/(dashboard)/settings/slash-commands/page.tsx,sha256=_aGsWXEM-U-1rdQv56Aqe6EwcE9E0qbPa8wZsd1tuhk,747
@@ -538,15 +564,15 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/st
538
564
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/route.ts,sha256=OHFRS6yqJ0Dssp_2JILdMrlWPOwN9IObsETNlrcQYyA,1260
539
565
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/route.ts,sha256=n7qz_WZIQsM9982wk8ggIB0KrcioEJ-nnujB_ElrQzQ,2493
540
566
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/admin/users/[userId]/impersonate/route.ts,sha256=IoQ5agh5YZHujKHcEfuiBRF-yL1WALXM6gkR7c0jLWM,962
541
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts,sha256=ns4uvrWQ-d2nacsF1pTYG1cEakvCzNY7NSa7uMZrMKI,1882
542
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts,sha256=0qxHR2OPvB2-IVKx0oS5f_U85e6EHq1oM5BCkUBsVeA,1167
567
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/login/route.ts,sha256=5RaTlPXW0OqhAXyxPBZc4ACbd0zlxskqVE5wkM3FHL0,1600
568
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/logout/route.ts,sha256=UzERrsLNPhLVYcD6rSAjpqtdol9txwLdReZAW8xvqpo,905
543
569
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/request/route.ts,sha256=NEeaJx8y4KzSCAoYMYy3BxaeIh5P6hnXj4Z3EGe-RIA,684
544
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts,sha256=opdxw2xpY7w6PG_vtQ6ciGeVstBxHY0AtFAil_tnamQ,1468
545
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts,sha256=qifKtoFn6mhc-WKGCgRkMLXAozaV1njzze-7ZC-nMrY,2644
546
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts,sha256=6HCAesKyqQS58QfrLM0LX_9aPDdZ4D7FCxFKQOtzvdU,1505
570
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/magic-link/verify/route.ts,sha256=2PQ6sHiMH3XcJsQUOs0_T9UEUF1JhR-RNEzwXAbl0bk,1215
571
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/me/route.ts,sha256=MEo19GyVCzg8E0SiPvf8pmLxbiKgj_80565XKiJ7Azc,2238
572
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/oauth-callback/route.ts,sha256=Frn_q5_2SY-KrtrqKt2m0fLiDZeGtn1i6GK1X74FT-I,1252
547
573
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/confirm/route.ts,sha256=u96o_UzWdjLkTFnHfe39BndXK6aNY4F_H-gNjOTwU1M,688
548
574
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/password-reset/request/route.ts,sha256=Udibt_OsmUVlF4KhrhoptCg7nc3X58Qt16mwb-Lg9cQ,688
549
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts,sha256=NMmXK5X92mofkQ9ca24xrB5vYb2avJWPa7408M2Ibw8,1978
575
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/refresh/route.ts,sha256=siZmFcGWKSQHnxBacQ4Zw0kUdMMFHnaMdzSV1wqYB8A,1307
550
576
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/auth/register/route.ts,sha256=nZVHtIebfXLSFQo1YKiwRSG1sq8sx057O6Y_ufmVF94,792
551
577
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/checkout/route.ts,sha256=p1M8tlu9k2OWCcImClgU8_9HuvQ9RNGzo3Nh8HSvwEg,886
552
578
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/billing/invoices/route.ts,sha256=-x41bnrREpw__eKDQLVvswWo3xaBG80AFKpS2zLPvEo,860
@@ -575,6 +601,12 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/
575
601
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/route.ts,sha256=5Y96zHirwgZhROejP2LAyK_kVwYLElXFTdmDKJOP0Mo,973
576
602
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/[sourceId]/trigger/route.ts,sha256=IU2F3WBgiETvCQBWpm7oPQ0bWWGZgSwP0dM81dtKyaw,968
577
603
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/kb/[id]/sync-sources/connectors/route.ts,sha256=i68p3bxidYopxGs7ZUMMzCy2agkG8kI12cbkbE-I4fE,908
604
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/route.ts,sha256=9ssesBlgu2-4jyU1jimWD7WDSNwhRm5rQq-AKI4YxHY,1619
605
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/[id]/route.ts,sha256=d-xvMvseZd68jwgaB3t_yFnNneaiSsADvgXWbKsSVDU,1777
606
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/[id]/test/route.ts,sha256=IJbJftTveoO4OU8fMLpk65s6mW8mlGG6bNCuz97nqDE,904
607
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/oauth/callback/route.ts,sha256=j2nrYRQQ-Au03TWFZqsz92Qt6L9TQfx0ns4LJtsKuL4,1780
608
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/oauth/start/route.ts,sha256=N_fbP-BqQImxZx6KCAimAP8fv6HIZVPnq86bgfUIUxI,922
609
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/mcp-connections/workspace/route.ts,sha256=wxUYbfVtLaNDfJRv-uCqh1jLagX5DMFQkX2pXaxthok,831
578
610
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/route.ts,sha256=nFnbErcpX6XRS47569Zh_kWNK5h-2vEEWJ8ZsYW_ylg,820
579
611
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/[id]/route.ts,sha256=gWLH48KoJhWqj_2ThbHNgKMecTeqE80hxTiZxxfflVs,1775
580
612
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/app/api/me/slash-commands/builtin/route.ts,sha256=Iy6uXOdtRujZrRWoqG41nNvmGNfhG6NugvERwib497M,915
@@ -634,7 +666,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/blog/
634
666
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.impl.tsx,sha256=uFKDkl9bIL4TZ2xwbUrZXWKzLVeJJEKPTX99e2uN-xw,12267
635
667
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chart-message.tsx,sha256=ZpsuzDVcyyqa931jJ4NF8Be_hLy6VnH_xYECpCkbRew,1584
636
668
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-container.tsx,sha256=7pBOadMRnKKglZdIGdhjW1rHPCJ8-Tfe0OSEeN72y4A,15926
637
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx,sha256=3AlRkCKfn3tgZ7BNyJG0gRtd1_w599TFIR8wUiKhaak,22010
669
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-controls.tsx,sha256=B8LcOBcVSfIrxEUPxeS5DiNhKdHyCenvHs9rU93jCtQ,26472
638
670
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-empty-state.tsx,sha256=MDliSs2OeBqAdgsDB8n2F6hAnph171ToMKyWKNhGNZM,3450
639
671
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/chat-input.tsx,sha256=93lH1N65c1unaYZsAdfCY7BJy6uaY_-nX0XXfunexvk,14101
640
672
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/conversation-sidebar.tsx,sha256=p_Dl_CJ6vGV-JPvbyTfMUb7Y54xDbzoMeqiPWFSuVHY,14254
@@ -659,7 +691,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/
659
691
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-feed.tsx,sha256=0pDGWnBc1GNCOgl9fhc9YUlBavqTQtSxXbKxRFXE9Eo,3655
660
692
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/subagent-panel.tsx,sha256=ObR1ACPfOLUllCZmrwCcYV0vFhyms7yOtYYNkZ2Duk8,6268
661
693
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-approval-dialog.tsx,sha256=TIwATvTCIB-NQMEay0KvKrsk1bfjnvX-8IdhOBK0L9I,3814
662
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx,sha256=BjQgDx5OXieqVfVVOKNwMi0YfDaRdkbzkBU63Uikh5w,12396
694
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-call-card.tsx,sha256=aqPsTKSFaxzHNNNh32MksGaKdr_EADa1JvNhGTJqRdI,14377
663
695
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/ask-user.tsx,sha256=0WDPIa2VfVCCZAD9ErSDm8k_obQ-6Jzk8NUEju-U3P4,1850
664
696
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/datetime.tsx,sha256=8QD9Goqr0LQSUJZ8YBxX03tFfXBpSr_0UxDLbgAuK_s,1124
665
697
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/chat/tool-results/fetch-url.tsx,sha256=SuOfe4LCJR52mRU2Bd4tr_UbHViYBym06KlInrCiaMM,1919
@@ -684,7 +716,8 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashb
684
716
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/top-models.tsx,sha256=SCF6Km4k-6vZ1PJ34_-I1HI_kOtWG6LPRUZZP7mbiG0,5378
685
717
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline-chart.tsx,sha256=5qOWHGrRL1RowATqM6dnL4Fpp17QZemQQHy40WOHr3Y,2996
686
718
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/dashboard/usage-timeline.tsx,sha256=9UTnbjkAJxpoJddtJ-LC8znxNTatrUb9RxZvy4aLqak,4878
687
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx,sha256=NOe7uRFArkjqpXLHU_6M842hz6xgqTRYaRjLd_6vMfQ,54265
719
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-mode.tsx,sha256=KKh7HJoTYLb4wnuWTCr3uczJ8m1fBFv5kH_4ZGHl6mw,701
720
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/demo/demo-replay.tsx,sha256=Biq5P-5PFvYj_5iOELwAJaILpCl0rWflDR6qhSC064g,55773
688
721
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/google-icon.tsx,sha256=c_mbeTuAWdBIqIIi4eQkhdBIu3EwxjjCf8oQCsPYwwA,45
689
722
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/icons/index.ts,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
690
723
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/kb/create-kb-dialog.tsx,sha256=FmM1SgExL8FopJ08tL49dXc06Bm3iooQtE8EQvhRgQU,3396
@@ -751,7 +784,8 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/s
751
784
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/rag/sync-source-wizard.tsx,sha256=Aa1LaYGBvMv6bYfMK-poW7tvTqp19rDCNIt3kglQVeM,25071
752
785
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/seo/json-ld.tsx,sha256=vUrp3n5go5GANeqDaLbf40T1CHNA8yTSiABmkGgWIVU,802
753
786
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/brand-color-picker.tsx,sha256=evHmTScSe68Xn8dKvjAzwoI_RZeO6QbgE0J5FAsyz4s,4687
754
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx,sha256=ZbPG5XaQ-Y8MITZ1VdBIOP2VXG_Qz3bcUi_iTdp20zc,3720
787
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/mcp-connections-manager.tsx,sha256=MxV3KdimB0XMm998zJ9Ikkd0PbOcapaVp6rhuMSRMe8,32644
788
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-nav.tsx,sha256=rZuVmouWSW7cYqt7kueYg6YY_2HoTlxHkxPdjSe5MvA,3982
755
789
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/settings-section.tsx,sha256=4Xvb2-w55uajQwE0dRFPgxEmeOLQH7YZLwvCs0kuSBA,2915
756
790
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/settings/slash-commands-manager.tsx,sha256=-hgqCH7rnB1bmlPIww-fjbo-5HD88BDBwnwKY8nF-xw,10515
757
791
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/states/empty-state.tsx,sha256=HmPs65DEc3FEQIL4vNNNG4QMLwwyDcLY1KZZ9w-qFUE,2070
@@ -800,7 +834,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/ta
800
834
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tabs.tsx,sha256=mFMFXs8LxanwG_c39vyVHlbGL9sBy_rY0ZGFEdqyPIY,1911
801
835
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/textarea.tsx,sha256=bOrveFUVzOWmYgXkPBG6CCkAxHEQQR23yKwCQ_TU7AY,659
802
836
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/components/ui/tooltip.tsx,sha256=a2r38J5b79pdRdp6NHxBl45mR1WdbpIqJjzGuYBgefI,976
803
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts,sha256=EO-xaqAt7YxwcgbLhQN_jS1p7Vyg7L-vapOB0LuEr88,1271
837
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/index.ts,sha256=2UQfL7OoK9vxka1Bwjheq3K2R4FyqNcWMpPRMwymscU,1384
804
838
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-conversations.ts,sha256=FO5Aw9fnIXmN6_W9h-rBph0JJnpn6XZ1ELGG8Cd8ZGE,4159
805
839
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-admin-users.ts,sha256=mayVriTAdSpS8-h8SfXihbRfIJ7hqQKezwUbpGiNQFg,2917
806
840
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-auth.ts,sha256=t_ty2PTLpxhY4UDMop9-Qm21n6Ne8swEPwDhlPzUPOA,4936
@@ -812,6 +846,7 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-conver
812
846
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-copy-to-clipboard.ts,sha256=PKdzoWMTTthOqzC9Fj_paf42EkaFpFjl1LO-8Pj8tE0,437
813
847
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-invitations.ts,sha256=lYO8cPB7JhIroICQ91z-yNitpwhnTw6lTQ9HSVMoLPo,2611
814
848
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-knowledge-bases.ts,sha256=ClQL-ylG6QvoYWMvSB91ihD5WHk9bwSVUscPHdvtbaw,12779
849
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-mcp-connections.ts,sha256=iQ4hdjn2zj0HuEfXjh_mmiZA6ClQCP5Qb8cOvzE69PA,3221
815
850
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-members.ts,sha256=Wl-aiHqeLGAJKKumNNTV1R_qbIX8ayyuY5Ri9AdwTos,2538
816
851
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-org-integrations.ts,sha256=si4pKegZ-Iw5Yib8VxdlkF3JQL1yX0xGgIHgEi5-LO8,2940
817
852
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/hooks/use-organizations.ts,sha256=YxxH4Kv4RrMeAXhcddZHXYxUSJkZis_aHD4fMh50SMM,3814
@@ -823,14 +858,19 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/active-route
823
858
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/admin-auth.ts,sha256=2K09o5o8Q24yn1dn1uAfqIIlrCgQQDz4tTFFdJVSCTU,904
824
859
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/agent-step-captions.ts,sha256=JjD-uhglLL3D9aUoNElMkjbdD-r4P9AayGUC2YmVO44,2388
825
860
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/api-client.ts,sha256=v9qO6pac2VH5j-o0oMhawpOUXDKqGQNrPo4KPUlLFX4,4107
861
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/auth-cookies.test.ts,sha256=dFoaULW2It1Iv9SZy5MnSAdvYEZHVJuxaOp6yBgLbzM,2802
862
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/auth-cookies.ts,sha256=p9O-xSVIzk0zpJlQ8K2-ANdYxDNhvmzMcQA8ymbKsfA,2344
826
863
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/blog.ts,sha256=xaVKtXjwO53zzvVSPEfaifwfVXQzHnpNvpM8zDfElns,4304
827
864
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/changelog.ts,sha256=1z3pSuUEks_KmO-E9u5VUt1yXqQFDOrsXeJ-RvUHB0s,4340
828
865
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/chat-sources.ts,sha256=P7P2-8OvQQTvAzSaRiqRvOb3IkFF6CDgBnRdEAsL9rU,2035
829
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts,sha256=eesSDW2Oubtjtpzhw4SQhQun5U1UpHSR_hzS4m2XFzE,2286
866
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/constants.ts,sha256=zhGd_NXbrpf8lg2hP1GE6WeErGRTpWPpt3YXA2ZGp2k,2391
830
867
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/contact-info.ts,sha256=oTIbswuq-RlSXv-z08jlZTOp2pyPazwcOoRN9PjfjtE,1168
831
868
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/conversation-to-chat.ts,sha256=Xcaa0gI6loIKkOJnjP73V0BFH4NMbcRXONiCrpdkJpk,3512
832
869
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/file-api.ts,sha256=t7uOB7xdIh4K1Jt5kcyWro_oEfnrh2hxi52xsPEZRw8,787
833
- fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts,sha256=UK1jzUwj6y7bxSIetYY1oP_CeDN2p1n6P30KNKhhdNI,2405
870
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-catalog.ts,sha256=8MDYb-yMDlOAi_iTwLN9jhsPVLfgJUxnlw4CzAIAX-0,9880
871
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-connections-api.ts,sha256=3PC-cYO3dnx_4JLF9yigHVzadD1E4elq0HSDJvcVWbQ,3164
872
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/mcp-logos.generated.ts,sha256=kJMISxbWdA2IP7qw7oQM5DFEbemMkccyd5ivcSXtwNk,29777
873
+ fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/query-keys.ts,sha256=D6M53xo_OLIBnAEssHmhbaodK80H-kbWcb6QbvoO1uk,2602
834
874
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/rag-api.ts,sha256=fSr_Zeus_FULCZvtkWrPHIKHbX4A45yL0w1NzDv21zc,9702
835
875
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/research-from-tools.ts,sha256=jwgjUuOgwgRKkz7EN9lxM2weuu3NNBk2sl4FKeB6hRw,2459
836
876
  fastapi_gen/template/{{cookiecutter.project_slug}}/frontend/src/lib/schema-org.ts,sha256=CmKYvUS5wXQfKF9RtmChvLN18aWinPiFIwohTPmyAOc,2108
@@ -873,11 +913,11 @@ fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/kustomization.yaml
873
913
  fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/namespace.yaml,sha256=hS9-TeXJNgu28AB0Pv43ob6lLDiavlYu0bwSRI804sA,360
874
914
  fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/secret.yaml,sha256=IyRrqpENJb5bQon8kxhxbJV0ohKPFyihWJ9tGPFDuVI,1524
875
915
  fastapi_gen/template/{{cookiecutter.project_slug}}/kubernetes/service.yaml,sha256=o3bCXguj8E5aQ0H1o3cBD3z_iZ_RA_Pmx1bc0sVzK28,682
876
- fastapi_gen/template/{{cookiecutter.project_slug}}/nginx/nginx.conf,sha256=gJWUMMqNvr9TwNZOcc_WPPGZvdAlRUH3jLhbllOb_YY,7359
916
+ fastapi_gen/template/{{cookiecutter.project_slug}}/nginx/nginx.conf,sha256=2bWaxnv_rN4driEdtWgVz9eVfoKhB_Ohd_G8eOC3P3M,7619
877
917
  fastapi_gen/template/{{cookiecutter.project_slug}}/nginx/ssl/.gitkeep,sha256=o_WQQOgVGOLttT48x0EXSC4BbbDFemApFpmwhybcVUU,617
878
918
  fastapi_gen/template/{{cookiecutter.project_slug}}/scripts/export_demo_html.py,sha256=H1tbIfr1xrh2pRuoy5NwvAOYEu0S2vgnw_XsKNMKXeM,10414
879
- fastapi_fullstack-0.2.16.dist-info/METADATA,sha256=2E5Ak0s1WW_t5jvxaF_oyIa2b1PamD9oUCG03diGvj4,59043
880
- fastapi_fullstack-0.2.16.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
881
- fastapi_fullstack-0.2.16.dist-info/entry_points.txt,sha256=s9JXrISZp8LMYJGeVofOAd1wPTzpq-jwjSgSf4hWzjs,59
882
- fastapi_fullstack-0.2.16.dist-info/licenses/LICENSE,sha256=bL4JuK_rcA8y__Gg7PEuTs3g2Qf6VvSz2w2Jajd6nVU,1063
883
- fastapi_fullstack-0.2.16.dist-info/RECORD,,
919
+ fastapi_fullstack-0.2.18.dist-info/METADATA,sha256=LJac85BvO3ex5oIo2gj3B0A2qB7fLY8e1s855n2Jb7c,60593
920
+ fastapi_fullstack-0.2.18.dist-info/WHEEL,sha256=lCkmxWfQsSc9CfIClYeavTdQeEX2toPqufh9gI35EQA,87
921
+ fastapi_fullstack-0.2.18.dist-info/entry_points.txt,sha256=s9JXrISZp8LMYJGeVofOAd1wPTzpq-jwjSgSf4hWzjs,59
922
+ fastapi_fullstack-0.2.18.dist-info/licenses/LICENSE,sha256=bL4JuK_rcA8y__Gg7PEuTs3g2Qf6VvSz2w2Jajd6nVU,1063
923
+ fastapi_fullstack-0.2.18.dist-info/RECORD,,
@@ -0,0 +1,25 @@
1
+ # Structural metadata for `fastapi-fullstack upgrade` (renames, removals, manual steps).
2
+ # See docs/guides/version-upgrade.md — "For template maintainers". One block per release.
3
+ #
4
+ # Schema (all keys optional except `version`):
5
+ #
6
+ # - version: "0.2.15"
7
+ # renames:
8
+ # - from: "backend/app/core/config.py"
9
+ # to: "backend/app/core/settings.py"
10
+ # variable_renames:
11
+ # - from: "use_pgvector"
12
+ # to: "vector_store"
13
+ # value_map: { "true": "pgvector" }
14
+ # removed:
15
+ # - "backend/app/legacy_auth.py"
16
+ # breaking:
17
+ # - "JWT secret env var renamed SECRET_KEY → AUTH_SECRET_KEY."
18
+ # manual_steps:
19
+ # - "Run `alembic upgrade head` (new billing tables)."
20
+
21
+ - version: "0.2.18"
22
+ manual_steps:
23
+ - "Rebuild the frontend image: `docker compose -f docker-compose.prod.yml build --no-cache frontend`. NEXT_PUBLIC_* is inlined into the browser bundle at build time and now comes from compose build args, so an image built before this upgrade still has the old ws://localhost URL baked in."
24
+ - "Serving the frontend over plain http:// with no TLS? Set COOKIE_SECURE=false on the frontend service. The auth cookies are Secure in production and a browser discards a Secure cookie sent over http://, which makes login appear to succeed while every request after it returns 401."
25
+ - "BACKEND_WS_URL and NEXT_PUBLIC_AUTH_ENABLED were never read by any code and are gone from the env examples. If your deployment sets them, the browser-facing WebSocket origin is NEXT_PUBLIC_WS_URL (build-time)."