create-better-fullstack 2.2.0 → 2.3.0

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 (28) hide show
  1. package/README.md +4 -4
  2. package/dist/{add-handler-CE3XIs3y.mjs → add-handler-z4NCxoq6.mjs} +7 -6
  3. package/dist/addons-setup-COE1e1db.mjs +7 -0
  4. package/dist/{addons-setup-DR924M7b.mjs → addons-setup-DKtiNexf.mjs} +1 -1
  5. package/dist/{analytics-BXlOG6u6.mjs → analytics-BD8hZvIj.mjs} +1 -1
  6. package/dist/{bts-config-B_HhcMXL.mjs → bts-config-Bwd6GB7B.mjs} +29 -0
  7. package/dist/cli.mjs +2 -2
  8. package/dist/command-exists-DtX9ldL8.mjs +15 -0
  9. package/dist/{config-processing-DJisMeW-.mjs → config-processing-B-RT_mVE.mjs} +16 -3
  10. package/dist/{doctor-Cc7sLuow.mjs → doctor-LmNs-hDr.mjs} +4 -3
  11. package/dist/{file-formatter-BgbfpYf4.mjs → file-formatter-DxF56-mO.mjs} +109 -3
  12. package/dist/{gen-BZ0QCxCC.mjs → gen-CQfQU0uZ.mjs} +1 -1
  13. package/dist/{generated-checks-CbioGjCh.mjs → generated-checks-BUcI5VM2.mjs} +55 -22
  14. package/dist/index.d.mts +292 -40
  15. package/dist/index.mjs +19 -9
  16. package/dist/{install-dependencies-D__bmW4k.mjs → install-dependencies-CJiUklm3.mjs} +49 -8
  17. package/dist/{mcp-DNKAo8nO.mjs → mcp-BBammItk.mjs} +5 -5
  18. package/dist/mcp-entry.mjs +47 -19
  19. package/dist/{registry-Cm3D45oT.mjs → registry-D0JfLCoH.mjs} +1 -1
  20. package/dist/{run-DmN7QRt5.mjs → run-BAIeghcU.mjs} +819 -52
  21. package/dist/run-CAl4L4uU.mjs +16 -0
  22. package/dist/{scaffold-manifest-ByKtMhTd.mjs → scaffold-manifest-CQwvyttq.mjs} +1 -1
  23. package/dist/{update-B270pWHc.mjs → update-CnrBdWrh.mjs} +3 -3
  24. package/package.json +21 -4
  25. package/dist/addons-setup-Du2VSv8V.mjs +0 -7
  26. package/dist/run-C_S7ujfY.mjs +0 -15
  27. /package/dist/{scaffold-manifest-CNFz-lmH.mjs → scaffold-manifest-Dr3Anmlf.mjs} +0 -0
  28. /package/dist/{update-deps-aD-iQw4U.mjs → update-deps-G3FgqBlW.mjs} +0 -0
package/dist/index.d.mts CHANGED
@@ -328,6 +328,29 @@ declare const router: {
328
328
  none: "none";
329
329
  "expo-linking": "expo-linking";
330
330
  }>>;
331
+ mobileLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
332
+ none: "none";
333
+ "expo-sqlite": "expo-sqlite";
334
+ "expo-camera": "expo-camera";
335
+ "expo-image-picker": "expo-image-picker";
336
+ "expo-location": "expo-location";
337
+ "expo-sensors": "expo-sensors";
338
+ "expo-file-system": "expo-file-system";
339
+ "expo-image": "expo-image";
340
+ "expo-audio": "expo-audio";
341
+ "expo-video": "expo-video";
342
+ "expo-contacts": "expo-contacts";
343
+ "expo-calendar": "expo-calendar";
344
+ "expo-local-authentication": "expo-local-authentication";
345
+ "expo-sharing": "expo-sharing";
346
+ "expo-clipboard": "expo-clipboard";
347
+ "expo-task-manager": "expo-task-manager";
348
+ "expo-background-task": "expo-background-task";
349
+ "expo-maps": "expo-maps";
350
+ "expo-brightness": "expo-brightness";
351
+ "expo-battery": "expo-battery";
352
+ "expo-screen-capture": "expo-screen-capture";
353
+ }>>>;
331
354
  frontend: z.ZodOptional<z.ZodArray<z.ZodEnum<{
332
355
  none: "none";
333
356
  "tanstack-router": "tanstack-router";
@@ -705,6 +728,8 @@ declare const router: {
705
728
  flask: "flask";
706
729
  litestar: "litestar";
707
730
  starlette: "starlette";
731
+ aiohttp: "aiohttp";
732
+ streamlit: "streamlit";
708
733
  }>>;
709
734
  pythonOrm: z.ZodOptional<z.ZodEnum<{
710
735
  none: "none";
@@ -712,6 +737,7 @@ declare const router: {
712
737
  sqlmodel: "sqlmodel";
713
738
  "tortoise-orm": "tortoise-orm";
714
739
  peewee: "peewee";
740
+ pymongo: "pymongo";
715
741
  }>>;
716
742
  pythonValidation: z.ZodOptional<z.ZodEnum<{
717
743
  none: "none";
@@ -719,6 +745,7 @@ declare const router: {
719
745
  }>>;
720
746
  pythonAi: z.ZodOptional<z.ZodArray<z.ZodEnum<{
721
747
  none: "none";
748
+ mcp: "mcp";
722
749
  langgraph: "langgraph";
723
750
  "openai-sdk": "openai-sdk";
724
751
  "anthropic-sdk": "anthropic-sdk";
@@ -729,11 +756,16 @@ declare const router: {
729
756
  haystack: "haystack";
730
757
  "pydantic-ai": "pydantic-ai";
731
758
  smolagents: "smolagents";
759
+ pytorch: "pytorch";
760
+ transformers: "transformers";
761
+ "scikit-learn": "scikit-learn";
762
+ tensorflow: "tensorflow";
732
763
  }>>>;
733
764
  pythonAuth: z.ZodOptional<z.ZodEnum<{
734
765
  none: "none";
735
766
  authlib: "authlib";
736
767
  jwt: "jwt";
768
+ pyjwt: "pyjwt";
737
769
  "fastapi-users": "fastapi-users";
738
770
  }>>;
739
771
  pythonApi: z.ZodOptional<z.ZodEnum<{
@@ -764,6 +796,7 @@ declare const router: {
764
796
  none: "none";
765
797
  pytest: "pytest";
766
798
  hypothesis: "hypothesis";
799
+ "pytest-cov": "pytest-cov";
767
800
  }>>>;
768
801
  pythonCaching: z.ZodOptional<z.ZodEnum<{
769
802
  none: "none";
@@ -778,6 +811,7 @@ declare const router: {
778
811
  pythonObservability: z.ZodOptional<z.ZodEnum<{
779
812
  none: "none";
780
813
  opentelemetry: "opentelemetry";
814
+ "prometheus-client": "prometheus-client";
781
815
  }>>;
782
816
  pythonCli: z.ZodOptional<z.ZodArray<z.ZodEnum<{
783
817
  none: "none";
@@ -785,6 +819,37 @@ declare const router: {
785
819
  click: "click";
786
820
  rich: "rich";
787
821
  }>>>;
822
+ pythonCloudSdk: z.ZodOptional<z.ZodEnum<{
823
+ none: "none";
824
+ boto3: "boto3";
825
+ }>>;
826
+ pythonHttpClient: z.ZodOptional<z.ZodEnum<{
827
+ none: "none";
828
+ requests: "requests";
829
+ }>>;
830
+ pythonData: z.ZodOptional<z.ZodArray<z.ZodEnum<{
831
+ none: "none";
832
+ numpy: "numpy";
833
+ pandas: "pandas";
834
+ scipy: "scipy";
835
+ }>>>;
836
+ pythonMedia: z.ZodOptional<z.ZodEnum<{
837
+ none: "none";
838
+ pillow: "pillow";
839
+ }>>;
840
+ pythonServer: z.ZodOptional<z.ZodEnum<{
841
+ none: "none";
842
+ gunicorn: "gunicorn";
843
+ }>>;
844
+ pythonPackageManager: z.ZodOptional<z.ZodEnum<{
845
+ none: "none";
846
+ uv: "uv";
847
+ poetry: "poetry";
848
+ }>>;
849
+ pythonMessageQueue: z.ZodOptional<z.ZodEnum<{
850
+ none: "none";
851
+ "confluent-kafka": "confluent-kafka";
852
+ }>>;
788
853
  goWebFramework: z.ZodOptional<z.ZodEnum<{
789
854
  none: "none";
790
855
  gin: "gin";
@@ -948,6 +1013,26 @@ declare const router: {
948
1013
  thymeleaf: "thymeleaf";
949
1014
  "spring-amqp": "spring-amqp";
950
1015
  "opentelemetry-java": "opentelemetry-java";
1016
+ "spring-data-redis": "spring-data-redis";
1017
+ "spring-data-mongodb": "spring-data-mongodb";
1018
+ "spring-data-elasticsearch": "spring-data-elasticsearch";
1019
+ "spring-data-neo4j": "spring-data-neo4j";
1020
+ "spring-data-cassandra": "spring-data-cassandra";
1021
+ "spring-data-couchbase": "spring-data-couchbase";
1022
+ "spring-data-jdbc": "spring-data-jdbc";
1023
+ "spring-data-rest": "spring-data-rest";
1024
+ "spring-quartz": "spring-quartz";
1025
+ "spring-pulsar": "spring-pulsar";
1026
+ "spring-integration": "spring-integration";
1027
+ "spring-websocket": "spring-websocket";
1028
+ "spring-rsocket": "spring-rsocket";
1029
+ "spring-hateoas": "spring-hateoas";
1030
+ "spring-session-redis": "spring-session-redis";
1031
+ "spring-session-jdbc": "spring-session-jdbc";
1032
+ "spring-ldap": "spring-ldap";
1033
+ "spring-oauth2-client": "spring-oauth2-client";
1034
+ "spring-saml2": "spring-saml2";
1035
+ "spring-restclient": "spring-restclient";
951
1036
  }>>>;
952
1037
  javaTestingLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
953
1038
  none: "none";
@@ -1025,6 +1110,29 @@ declare const router: {
1025
1110
  azure: "azure";
1026
1111
  aws: "aws";
1027
1112
  }>>;
1113
+ dotnetLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1114
+ none: "none";
1115
+ sentry: "sentry";
1116
+ automapper: "automapper";
1117
+ mediatr: "mediatr";
1118
+ fastendpoints: "fastendpoints";
1119
+ "api-versioning": "api-versioning";
1120
+ scalar: "scalar";
1121
+ polly: "polly";
1122
+ masstransit: "masstransit";
1123
+ rebus: "rebus";
1124
+ coravel: "coravel";
1125
+ "magic-onion": "magic-onion";
1126
+ "prometheus-net": "prometheus-net";
1127
+ seq: "seq";
1128
+ "application-insights": "application-insights";
1129
+ "mongodb-driver": "mongodb-driver";
1130
+ nhibernate: "nhibernate";
1131
+ mapster: "mapster";
1132
+ scrutor: "scrutor";
1133
+ refit: "refit";
1134
+ "fluent-email": "fluent-email";
1135
+ }>>>;
1028
1136
  elixirWebFramework: z.ZodOptional<z.ZodEnum<{
1029
1137
  none: "none";
1030
1138
  phoenix: "phoenix";
@@ -1193,7 +1301,7 @@ declare const router: {
1193
1301
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1194
1302
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1195
1303
  logging: "none" | "pino" | "winston" | "evlog";
1196
- observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1304
+ observability: "none" | "sentry" | "opentelemetry" | "grafana" | "datadog" | "axiom" | "betterstack";
1197
1305
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1198
1306
  analytics: "none" | "posthog" | "plausible" | "umami" | "ga4";
1199
1307
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic" | "contentful";
@@ -1210,6 +1318,7 @@ declare const router: {
1210
1318
  mobilePush: "none" | "expo-notifications";
1211
1319
  mobileOTA: "none" | "expo-updates";
1212
1320
  mobileDeepLinking: "none" | "expo-linking";
1321
+ mobileLibraries: ("none" | "expo-sqlite" | "expo-camera" | "expo-image-picker" | "expo-location" | "expo-sensors" | "expo-file-system" | "expo-image" | "expo-audio" | "expo-video" | "expo-contacts" | "expo-calendar" | "expo-local-authentication" | "expo-sharing" | "expo-clipboard" | "expo-task-manager" | "expo-background-task" | "expo-maps" | "expo-brightness" | "expo-battery" | "expo-screen-capture")[];
1213
1322
  rustWebFramework: "none" | "axum" | "actix-web" | "rocket" | "poem" | "loco" | "warp" | "salvo";
1214
1323
  rustFrontend: "none" | "leptos" | "dioxus" | "yew";
1215
1324
  rustOrm: "none" | "mongodb" | "sea-orm" | "sqlx" | "diesel" | "rusqlite" | "tokio-postgres";
@@ -1224,20 +1333,27 @@ declare const router: {
1224
1333
  rustMessageQueue: "none" | "lapin" | "rdkafka" | "async-nats";
1225
1334
  rustObservability: "none" | "opentelemetry" | "metrics";
1226
1335
  rustTemplating: "none" | "askama" | "tera" | "minijinja";
1227
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1228
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1336
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette" | "aiohttp" | "streamlit";
1337
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee" | "pymongo";
1229
1338
  pythonValidation: "none" | "pydantic";
1230
- pythonAi: ("none" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1231
- pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1339
+ pythonAi: ("none" | "mcp" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents" | "pytorch" | "transformers" | "scikit-learn" | "tensorflow")[];
1340
+ pythonAuth: "none" | "authlib" | "jwt" | "pyjwt" | "fastapi-users";
1232
1341
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1233
1342
  pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1234
1343
  pythonGraphql: "none" | "strawberry" | "ariadne";
1235
1344
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1236
- pythonTesting: ("none" | "pytest" | "hypothesis")[];
1345
+ pythonTesting: ("none" | "pytest" | "hypothesis" | "pytest-cov")[];
1237
1346
  pythonCaching: "none" | "redis" | "aiocache";
1238
1347
  pythonRealtime: "none" | "python-socketio" | "websockets";
1239
- pythonObservability: "none" | "opentelemetry";
1348
+ pythonObservability: "none" | "opentelemetry" | "prometheus-client";
1240
1349
  pythonCli: ("none" | "typer" | "click" | "rich")[];
1350
+ pythonCloudSdk: "none" | "boto3";
1351
+ pythonHttpClient: "none" | "requests";
1352
+ pythonData: ("none" | "numpy" | "pandas" | "scipy")[];
1353
+ pythonMedia: "none" | "pillow";
1354
+ pythonServer: "none" | "gunicorn";
1355
+ pythonPackageManager: "none" | "uv" | "poetry";
1356
+ pythonMessageQueue: "none" | "confluent-kafka";
1241
1357
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi" | "stdlib" | "go-zero" | "kratos" | "httprouter";
1242
1358
  goOrm: "none" | "bun" | "sqlx" | "gorm" | "sqlc" | "ent";
1243
1359
  goApi: "none" | "grpc-go" | "gqlgen" | "grpc-gateway" | "connect-go" | "oapi-codegen";
@@ -1262,7 +1378,7 @@ declare const router: {
1262
1378
  javaAuth: "none" | "spring-security" | "keycloak";
1263
1379
  javaApi: "none" | "spring-graphql" | "openapi-generator" | "grpc";
1264
1380
  javaLogging: "none" | "logback" | "log4j2";
1265
- javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java")[];
1381
+ javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java" | "spring-data-redis" | "spring-data-mongodb" | "spring-data-elasticsearch" | "spring-data-neo4j" | "spring-data-cassandra" | "spring-data-couchbase" | "spring-data-jdbc" | "spring-data-rest" | "spring-quartz" | "spring-pulsar" | "spring-integration" | "spring-websocket" | "spring-rsocket" | "spring-hateoas" | "spring-session-redis" | "spring-session-jdbc" | "spring-ldap" | "spring-oauth2-client" | "spring-saml2" | "spring-restclient")[];
1266
1382
  javaTestingLibraries: ("none" | "testcontainers" | "junit5" | "mockito" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1267
1383
  dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1268
1384
  dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
@@ -1275,6 +1391,7 @@ declare const router: {
1275
1391
  dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1276
1392
  dotnetCaching: "none" | "redis" | "memory-cache";
1277
1393
  dotnetDeploy: "none" | "docker" | "azure" | "aws";
1394
+ dotnetLibraries: ("none" | "sentry" | "automapper" | "mediatr" | "fastendpoints" | "api-versioning" | "scalar" | "polly" | "masstransit" | "rebus" | "coravel" | "magic-onion" | "prometheus-net" | "seq" | "application-insights" | "mongodb-driver" | "nhibernate" | "mapster" | "scrutor" | "refit" | "fluent-email")[];
1278
1395
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1279
1396
  elixirOrm: "none" | "ecto" | "ecto-sql" | "myxql" | "ecto_sqlite3";
1280
1397
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian" | "pow";
@@ -1286,7 +1403,7 @@ declare const router: {
1286
1403
  elixirJson: "none" | "jason";
1287
1404
  elixirEmail: "none" | "swoosh" | "bamboo";
1288
1405
  elixirCaching: "none" | "cachex" | "nebulex" | "redix";
1289
- elixirObservability: "none" | "opentelemetry" | "sentry" | "telemetry" | "prom_ex";
1406
+ elixirObservability: "none" | "sentry" | "opentelemetry" | "telemetry" | "prom_ex";
1290
1407
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby" | "stream_data" | "ex_machina";
1291
1408
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow" | "excoveralls" | "mix_audit";
1292
1409
  elixirI18n: "none" | "gettext";
@@ -1309,7 +1426,7 @@ declare const router: {
1309
1426
  javaLanguage?: "java" | "kotlin" | undefined;
1310
1427
  stackParts?: {
1311
1428
  id: string;
1312
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1429
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "packageManager" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating" | "cloudSdk" | "data" | "media" | "server" | "messageQueue";
1313
1430
  toolId: string;
1314
1431
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1315
1432
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1368,7 +1485,7 @@ declare const router: {
1368
1485
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1369
1486
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1370
1487
  logging: "none" | "pino" | "winston" | "evlog";
1371
- observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1488
+ observability: "none" | "sentry" | "opentelemetry" | "grafana" | "datadog" | "axiom" | "betterstack";
1372
1489
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1373
1490
  analytics: "none" | "posthog" | "plausible" | "umami" | "ga4";
1374
1491
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic" | "contentful";
@@ -1385,6 +1502,7 @@ declare const router: {
1385
1502
  mobilePush: "none" | "expo-notifications";
1386
1503
  mobileOTA: "none" | "expo-updates";
1387
1504
  mobileDeepLinking: "none" | "expo-linking";
1505
+ mobileLibraries: ("none" | "expo-sqlite" | "expo-camera" | "expo-image-picker" | "expo-location" | "expo-sensors" | "expo-file-system" | "expo-image" | "expo-audio" | "expo-video" | "expo-contacts" | "expo-calendar" | "expo-local-authentication" | "expo-sharing" | "expo-clipboard" | "expo-task-manager" | "expo-background-task" | "expo-maps" | "expo-brightness" | "expo-battery" | "expo-screen-capture")[];
1388
1506
  rustWebFramework: "none" | "axum" | "actix-web" | "rocket" | "poem" | "loco" | "warp" | "salvo";
1389
1507
  rustFrontend: "none" | "leptos" | "dioxus" | "yew";
1390
1508
  rustOrm: "none" | "mongodb" | "sea-orm" | "sqlx" | "diesel" | "rusqlite" | "tokio-postgres";
@@ -1399,20 +1517,27 @@ declare const router: {
1399
1517
  rustMessageQueue: "none" | "lapin" | "rdkafka" | "async-nats";
1400
1518
  rustObservability: "none" | "opentelemetry" | "metrics";
1401
1519
  rustTemplating: "none" | "askama" | "tera" | "minijinja";
1402
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1403
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1520
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette" | "aiohttp" | "streamlit";
1521
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee" | "pymongo";
1404
1522
  pythonValidation: "none" | "pydantic";
1405
- pythonAi: ("none" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1406
- pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1523
+ pythonAi: ("none" | "mcp" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents" | "pytorch" | "transformers" | "scikit-learn" | "tensorflow")[];
1524
+ pythonAuth: "none" | "authlib" | "jwt" | "pyjwt" | "fastapi-users";
1407
1525
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1408
1526
  pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1409
1527
  pythonGraphql: "none" | "strawberry" | "ariadne";
1410
1528
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1411
- pythonTesting: ("none" | "pytest" | "hypothesis")[];
1529
+ pythonTesting: ("none" | "pytest" | "hypothesis" | "pytest-cov")[];
1412
1530
  pythonCaching: "none" | "redis" | "aiocache";
1413
1531
  pythonRealtime: "none" | "python-socketio" | "websockets";
1414
- pythonObservability: "none" | "opentelemetry";
1532
+ pythonObservability: "none" | "opentelemetry" | "prometheus-client";
1415
1533
  pythonCli: ("none" | "typer" | "click" | "rich")[];
1534
+ pythonCloudSdk: "none" | "boto3";
1535
+ pythonHttpClient: "none" | "requests";
1536
+ pythonData: ("none" | "numpy" | "pandas" | "scipy")[];
1537
+ pythonMedia: "none" | "pillow";
1538
+ pythonServer: "none" | "gunicorn";
1539
+ pythonPackageManager: "none" | "uv" | "poetry";
1540
+ pythonMessageQueue: "none" | "confluent-kafka";
1416
1541
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi" | "stdlib" | "go-zero" | "kratos" | "httprouter";
1417
1542
  goOrm: "none" | "bun" | "sqlx" | "gorm" | "sqlc" | "ent";
1418
1543
  goApi: "none" | "grpc-go" | "gqlgen" | "grpc-gateway" | "connect-go" | "oapi-codegen";
@@ -1437,7 +1562,7 @@ declare const router: {
1437
1562
  javaAuth: "none" | "spring-security" | "keycloak";
1438
1563
  javaApi: "none" | "spring-graphql" | "openapi-generator" | "grpc";
1439
1564
  javaLogging: "none" | "logback" | "log4j2";
1440
- javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java")[];
1565
+ javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java" | "spring-data-redis" | "spring-data-mongodb" | "spring-data-elasticsearch" | "spring-data-neo4j" | "spring-data-cassandra" | "spring-data-couchbase" | "spring-data-jdbc" | "spring-data-rest" | "spring-quartz" | "spring-pulsar" | "spring-integration" | "spring-websocket" | "spring-rsocket" | "spring-hateoas" | "spring-session-redis" | "spring-session-jdbc" | "spring-ldap" | "spring-oauth2-client" | "spring-saml2" | "spring-restclient")[];
1441
1566
  javaTestingLibraries: ("none" | "testcontainers" | "junit5" | "mockito" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1442
1567
  dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1443
1568
  dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
@@ -1450,6 +1575,7 @@ declare const router: {
1450
1575
  dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1451
1576
  dotnetCaching: "none" | "redis" | "memory-cache";
1452
1577
  dotnetDeploy: "none" | "docker" | "azure" | "aws";
1578
+ dotnetLibraries: ("none" | "sentry" | "automapper" | "mediatr" | "fastendpoints" | "api-versioning" | "scalar" | "polly" | "masstransit" | "rebus" | "coravel" | "magic-onion" | "prometheus-net" | "seq" | "application-insights" | "mongodb-driver" | "nhibernate" | "mapster" | "scrutor" | "refit" | "fluent-email")[];
1453
1579
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1454
1580
  elixirOrm: "none" | "ecto" | "ecto-sql" | "myxql" | "ecto_sqlite3";
1455
1581
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian" | "pow";
@@ -1461,7 +1587,7 @@ declare const router: {
1461
1587
  elixirJson: "none" | "jason";
1462
1588
  elixirEmail: "none" | "swoosh" | "bamboo";
1463
1589
  elixirCaching: "none" | "cachex" | "nebulex" | "redix";
1464
- elixirObservability: "none" | "opentelemetry" | "sentry" | "telemetry" | "prom_ex";
1590
+ elixirObservability: "none" | "sentry" | "opentelemetry" | "telemetry" | "prom_ex";
1465
1591
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby" | "stream_data" | "ex_machina";
1466
1592
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow" | "excoveralls" | "mix_audit";
1467
1593
  elixirI18n: "none" | "gettext";
@@ -1484,7 +1610,7 @@ declare const router: {
1484
1610
  javaLanguage?: "java" | "kotlin" | undefined;
1485
1611
  stackParts?: {
1486
1612
  id: string;
1487
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1613
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "packageManager" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating" | "cloudSdk" | "data" | "media" | "server" | "messageQueue";
1488
1614
  toolId: string;
1489
1615
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1490
1616
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1557,7 +1683,7 @@ declare const router: {
1557
1683
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1558
1684
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1559
1685
  logging: "none" | "pino" | "winston" | "evlog";
1560
- observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1686
+ observability: "none" | "sentry" | "opentelemetry" | "grafana" | "datadog" | "axiom" | "betterstack";
1561
1687
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1562
1688
  analytics: "none" | "posthog" | "plausible" | "umami" | "ga4";
1563
1689
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic" | "contentful";
@@ -1574,6 +1700,7 @@ declare const router: {
1574
1700
  mobilePush: "none" | "expo-notifications";
1575
1701
  mobileOTA: "none" | "expo-updates";
1576
1702
  mobileDeepLinking: "none" | "expo-linking";
1703
+ mobileLibraries: ("none" | "expo-sqlite" | "expo-camera" | "expo-image-picker" | "expo-location" | "expo-sensors" | "expo-file-system" | "expo-image" | "expo-audio" | "expo-video" | "expo-contacts" | "expo-calendar" | "expo-local-authentication" | "expo-sharing" | "expo-clipboard" | "expo-task-manager" | "expo-background-task" | "expo-maps" | "expo-brightness" | "expo-battery" | "expo-screen-capture")[];
1577
1704
  rustWebFramework: "none" | "axum" | "actix-web" | "rocket" | "poem" | "loco" | "warp" | "salvo";
1578
1705
  rustFrontend: "none" | "leptos" | "dioxus" | "yew";
1579
1706
  rustOrm: "none" | "mongodb" | "sea-orm" | "sqlx" | "diesel" | "rusqlite" | "tokio-postgres";
@@ -1588,20 +1715,27 @@ declare const router: {
1588
1715
  rustMessageQueue: "none" | "lapin" | "rdkafka" | "async-nats";
1589
1716
  rustObservability: "none" | "opentelemetry" | "metrics";
1590
1717
  rustTemplating: "none" | "askama" | "tera" | "minijinja";
1591
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1592
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1718
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette" | "aiohttp" | "streamlit";
1719
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee" | "pymongo";
1593
1720
  pythonValidation: "none" | "pydantic";
1594
- pythonAi: ("none" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1595
- pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1721
+ pythonAi: ("none" | "mcp" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents" | "pytorch" | "transformers" | "scikit-learn" | "tensorflow")[];
1722
+ pythonAuth: "none" | "authlib" | "jwt" | "pyjwt" | "fastapi-users";
1596
1723
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1597
1724
  pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1598
1725
  pythonGraphql: "none" | "strawberry" | "ariadne";
1599
1726
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1600
- pythonTesting: ("none" | "pytest" | "hypothesis")[];
1727
+ pythonTesting: ("none" | "pytest" | "hypothesis" | "pytest-cov")[];
1601
1728
  pythonCaching: "none" | "redis" | "aiocache";
1602
1729
  pythonRealtime: "none" | "python-socketio" | "websockets";
1603
- pythonObservability: "none" | "opentelemetry";
1730
+ pythonObservability: "none" | "opentelemetry" | "prometheus-client";
1604
1731
  pythonCli: ("none" | "typer" | "click" | "rich")[];
1732
+ pythonCloudSdk: "none" | "boto3";
1733
+ pythonHttpClient: "none" | "requests";
1734
+ pythonData: ("none" | "numpy" | "pandas" | "scipy")[];
1735
+ pythonMedia: "none" | "pillow";
1736
+ pythonServer: "none" | "gunicorn";
1737
+ pythonPackageManager: "none" | "uv" | "poetry";
1738
+ pythonMessageQueue: "none" | "confluent-kafka";
1605
1739
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi" | "stdlib" | "go-zero" | "kratos" | "httprouter";
1606
1740
  goOrm: "none" | "bun" | "sqlx" | "gorm" | "sqlc" | "ent";
1607
1741
  goApi: "none" | "grpc-go" | "gqlgen" | "grpc-gateway" | "connect-go" | "oapi-codegen";
@@ -1626,7 +1760,7 @@ declare const router: {
1626
1760
  javaAuth: "none" | "spring-security" | "keycloak";
1627
1761
  javaApi: "none" | "spring-graphql" | "openapi-generator" | "grpc";
1628
1762
  javaLogging: "none" | "logback" | "log4j2";
1629
- javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java")[];
1763
+ javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java" | "spring-data-redis" | "spring-data-mongodb" | "spring-data-elasticsearch" | "spring-data-neo4j" | "spring-data-cassandra" | "spring-data-couchbase" | "spring-data-jdbc" | "spring-data-rest" | "spring-quartz" | "spring-pulsar" | "spring-integration" | "spring-websocket" | "spring-rsocket" | "spring-hateoas" | "spring-session-redis" | "spring-session-jdbc" | "spring-ldap" | "spring-oauth2-client" | "spring-saml2" | "spring-restclient")[];
1630
1764
  javaTestingLibraries: ("none" | "testcontainers" | "junit5" | "mockito" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1631
1765
  dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1632
1766
  dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
@@ -1639,6 +1773,7 @@ declare const router: {
1639
1773
  dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1640
1774
  dotnetCaching: "none" | "redis" | "memory-cache";
1641
1775
  dotnetDeploy: "none" | "docker" | "azure" | "aws";
1776
+ dotnetLibraries: ("none" | "sentry" | "automapper" | "mediatr" | "fastendpoints" | "api-versioning" | "scalar" | "polly" | "masstransit" | "rebus" | "coravel" | "magic-onion" | "prometheus-net" | "seq" | "application-insights" | "mongodb-driver" | "nhibernate" | "mapster" | "scrutor" | "refit" | "fluent-email")[];
1642
1777
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1643
1778
  elixirOrm: "none" | "ecto" | "ecto-sql" | "myxql" | "ecto_sqlite3";
1644
1779
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian" | "pow";
@@ -1650,7 +1785,7 @@ declare const router: {
1650
1785
  elixirJson: "none" | "jason";
1651
1786
  elixirEmail: "none" | "swoosh" | "bamboo";
1652
1787
  elixirCaching: "none" | "cachex" | "nebulex" | "redix";
1653
- elixirObservability: "none" | "opentelemetry" | "sentry" | "telemetry" | "prom_ex";
1788
+ elixirObservability: "none" | "sentry" | "opentelemetry" | "telemetry" | "prom_ex";
1654
1789
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby" | "stream_data" | "ex_machina";
1655
1790
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow" | "excoveralls" | "mix_audit";
1656
1791
  elixirI18n: "none" | "gettext";
@@ -1673,7 +1808,7 @@ declare const router: {
1673
1808
  javaLanguage?: "java" | "kotlin" | undefined;
1674
1809
  stackParts?: {
1675
1810
  id: string;
1676
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1811
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "packageManager" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating" | "cloudSdk" | "data" | "media" | "server" | "messageQueue";
1677
1812
  toolId: string;
1678
1813
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1679
1814
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -1732,7 +1867,7 @@ declare const router: {
1732
1867
  animation: "none" | "framer-motion" | "gsap" | "react-spring" | "auto-animate" | "lottie";
1733
1868
  fileUpload: "none" | "uploadthing" | "filepond" | "uppy";
1734
1869
  logging: "none" | "pino" | "winston" | "evlog";
1735
- observability: "none" | "opentelemetry" | "sentry" | "grafana" | "datadog" | "axiom" | "betterstack";
1870
+ observability: "none" | "sentry" | "opentelemetry" | "grafana" | "datadog" | "axiom" | "betterstack";
1736
1871
  featureFlags: "none" | "growthbook" | "posthog" | "launchdarkly" | "flagsmith" | "unleash";
1737
1872
  analytics: "none" | "posthog" | "plausible" | "umami" | "ga4";
1738
1873
  cms: "none" | "payload" | "sanity" | "strapi" | "tinacms" | "directus" | "keystatic" | "contentful";
@@ -1749,6 +1884,7 @@ declare const router: {
1749
1884
  mobilePush: "none" | "expo-notifications";
1750
1885
  mobileOTA: "none" | "expo-updates";
1751
1886
  mobileDeepLinking: "none" | "expo-linking";
1887
+ mobileLibraries: ("none" | "expo-sqlite" | "expo-camera" | "expo-image-picker" | "expo-location" | "expo-sensors" | "expo-file-system" | "expo-image" | "expo-audio" | "expo-video" | "expo-contacts" | "expo-calendar" | "expo-local-authentication" | "expo-sharing" | "expo-clipboard" | "expo-task-manager" | "expo-background-task" | "expo-maps" | "expo-brightness" | "expo-battery" | "expo-screen-capture")[];
1752
1888
  rustWebFramework: "none" | "axum" | "actix-web" | "rocket" | "poem" | "loco" | "warp" | "salvo";
1753
1889
  rustFrontend: "none" | "leptos" | "dioxus" | "yew";
1754
1890
  rustOrm: "none" | "mongodb" | "sea-orm" | "sqlx" | "diesel" | "rusqlite" | "tokio-postgres";
@@ -1763,20 +1899,27 @@ declare const router: {
1763
1899
  rustMessageQueue: "none" | "lapin" | "rdkafka" | "async-nats";
1764
1900
  rustObservability: "none" | "opentelemetry" | "metrics";
1765
1901
  rustTemplating: "none" | "askama" | "tera" | "minijinja";
1766
- pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette";
1767
- pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee";
1902
+ pythonWebFramework: "none" | "fastapi" | "django" | "flask" | "litestar" | "starlette" | "aiohttp" | "streamlit";
1903
+ pythonOrm: "none" | "sqlalchemy" | "sqlmodel" | "tortoise-orm" | "peewee" | "pymongo";
1768
1904
  pythonValidation: "none" | "pydantic";
1769
- pythonAi: ("none" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents")[];
1770
- pythonAuth: "none" | "authlib" | "jwt" | "fastapi-users";
1905
+ pythonAi: ("none" | "mcp" | "langgraph" | "openai-sdk" | "anthropic-sdk" | "google-adk" | "langchain" | "llamaindex" | "crewai" | "haystack" | "pydantic-ai" | "smolagents" | "pytorch" | "transformers" | "scikit-learn" | "tensorflow")[];
1906
+ pythonAuth: "none" | "authlib" | "jwt" | "pyjwt" | "fastapi-users";
1771
1907
  pythonApi: "none" | "django-rest-framework" | "django-ninja";
1772
1908
  pythonTaskQueue: "none" | "celery" | "rq" | "dramatiq" | "huey" | "taskiq";
1773
1909
  pythonGraphql: "none" | "strawberry" | "ariadne";
1774
1910
  pythonQuality: "none" | "ruff" | "mypy" | "pyright";
1775
- pythonTesting: ("none" | "pytest" | "hypothesis")[];
1911
+ pythonTesting: ("none" | "pytest" | "hypothesis" | "pytest-cov")[];
1776
1912
  pythonCaching: "none" | "redis" | "aiocache";
1777
1913
  pythonRealtime: "none" | "python-socketio" | "websockets";
1778
- pythonObservability: "none" | "opentelemetry";
1914
+ pythonObservability: "none" | "opentelemetry" | "prometheus-client";
1779
1915
  pythonCli: ("none" | "typer" | "click" | "rich")[];
1916
+ pythonCloudSdk: "none" | "boto3";
1917
+ pythonHttpClient: "none" | "requests";
1918
+ pythonData: ("none" | "numpy" | "pandas" | "scipy")[];
1919
+ pythonMedia: "none" | "pillow";
1920
+ pythonServer: "none" | "gunicorn";
1921
+ pythonPackageManager: "none" | "uv" | "poetry";
1922
+ pythonMessageQueue: "none" | "confluent-kafka";
1780
1923
  goWebFramework: "none" | "gin" | "echo" | "fiber" | "chi" | "stdlib" | "go-zero" | "kratos" | "httprouter";
1781
1924
  goOrm: "none" | "bun" | "sqlx" | "gorm" | "sqlc" | "ent";
1782
1925
  goApi: "none" | "grpc-go" | "gqlgen" | "grpc-gateway" | "connect-go" | "oapi-codegen";
@@ -1801,7 +1944,7 @@ declare const router: {
1801
1944
  javaAuth: "none" | "spring-security" | "keycloak";
1802
1945
  javaApi: "none" | "spring-graphql" | "openapi-generator" | "grpc";
1803
1946
  javaLogging: "none" | "logback" | "log4j2";
1804
- javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java")[];
1947
+ javaLibraries: ("none" | "spring-actuator" | "spring-validation" | "flyway" | "liquibase" | "springdoc-openapi" | "lombok" | "mapstruct" | "caffeine" | "resilience4j" | "spring-webflux" | "spring-batch" | "spring-kafka" | "spring-mail" | "spring-devtools" | "micrometer-prometheus" | "thymeleaf" | "spring-amqp" | "opentelemetry-java" | "spring-data-redis" | "spring-data-mongodb" | "spring-data-elasticsearch" | "spring-data-neo4j" | "spring-data-cassandra" | "spring-data-couchbase" | "spring-data-jdbc" | "spring-data-rest" | "spring-quartz" | "spring-pulsar" | "spring-integration" | "spring-websocket" | "spring-rsocket" | "spring-hateoas" | "spring-session-redis" | "spring-session-jdbc" | "spring-ldap" | "spring-oauth2-client" | "spring-saml2" | "spring-restclient")[];
1805
1948
  javaTestingLibraries: ("none" | "testcontainers" | "junit5" | "mockito" | "assertj" | "rest-assured" | "wiremock" | "awaitility" | "archunit" | "jqwik")[];
1806
1949
  dotnetWebFramework: "none" | "aspnet-minimal" | "aspnet-mvc" | "aspnet-blazor";
1807
1950
  dotnetOrm: "none" | "ef-core" | "dapper" | "linq2db";
@@ -1814,6 +1957,7 @@ declare const router: {
1814
1957
  dotnetValidation: "none" | "fluentvalidation" | "data-annotations";
1815
1958
  dotnetCaching: "none" | "redis" | "memory-cache";
1816
1959
  dotnetDeploy: "none" | "docker" | "azure" | "aws";
1960
+ dotnetLibraries: ("none" | "sentry" | "automapper" | "mediatr" | "fastendpoints" | "api-versioning" | "scalar" | "polly" | "masstransit" | "rebus" | "coravel" | "magic-onion" | "prometheus-net" | "seq" | "application-insights" | "mongodb-driver" | "nhibernate" | "mapster" | "scrutor" | "refit" | "fluent-email")[];
1817
1961
  elixirWebFramework: "none" | "phoenix" | "phoenix-live-view";
1818
1962
  elixirOrm: "none" | "ecto" | "ecto-sql" | "myxql" | "ecto_sqlite3";
1819
1963
  elixirAuth: "none" | "phx-gen-auth" | "ueberauth" | "guardian" | "pow";
@@ -1825,7 +1969,7 @@ declare const router: {
1825
1969
  elixirJson: "none" | "jason";
1826
1970
  elixirEmail: "none" | "swoosh" | "bamboo";
1827
1971
  elixirCaching: "none" | "cachex" | "nebulex" | "redix";
1828
- elixirObservability: "none" | "opentelemetry" | "sentry" | "telemetry" | "prom_ex";
1972
+ elixirObservability: "none" | "sentry" | "opentelemetry" | "telemetry" | "prom_ex";
1829
1973
  elixirTesting: "none" | "ex_unit" | "mox" | "bypass" | "wallaby" | "stream_data" | "ex_machina";
1830
1974
  elixirQuality: "none" | "credo" | "dialyxir" | "sobelow" | "excoveralls" | "mix_audit";
1831
1975
  elixirI18n: "none" | "gettext";
@@ -1848,7 +1992,7 @@ declare const router: {
1848
1992
  javaLanguage?: "java" | "kotlin" | undefined;
1849
1993
  stackParts?: {
1850
1994
  id: string;
1851
- role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating";
1995
+ role: "api" | "runtime" | "backend" | "database" | "orm" | "dbSetup" | "auth" | "payments" | "email" | "fileUpload" | "logging" | "observability" | "stateManagement" | "forms" | "validation" | "testing" | "realtime" | "jobQueue" | "caching" | "rateLimit" | "i18n" | "search" | "vectorDb" | "fileStorage" | "animation" | "cms" | "featureFlags" | "analytics" | "codeQuality" | "documentation" | "packageManager" | "examples" | "ai" | "effect" | "config" | "frontend" | "mobile" | "graphql" | "deploy" | "migrations" | "navigation" | "ui" | "css" | "storage" | "push" | "ota" | "deepLinking" | "appPlatform" | "dataFetching" | "workspaceTooling" | "language" | "buildTool" | "cli" | "errorHandling" | "httpClient" | "libraries" | "templating" | "cloudSdk" | "data" | "media" | "server" | "messageQueue";
1852
1996
  toolId: string;
1853
1997
  ecosystem: "typescript" | "react-native" | "rust" | "python" | "go" | "java" | "elixir" | "dotnet" | "universal";
1854
1998
  source: "selected" | "defaulted" | "provided" | "legacy" | "adjusted";
@@ -2227,6 +2371,29 @@ declare const router: {
2227
2371
  none: "none";
2228
2372
  "expo-linking": "expo-linking";
2229
2373
  }>>;
2374
+ mobileLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2375
+ none: "none";
2376
+ "expo-sqlite": "expo-sqlite";
2377
+ "expo-camera": "expo-camera";
2378
+ "expo-image-picker": "expo-image-picker";
2379
+ "expo-location": "expo-location";
2380
+ "expo-sensors": "expo-sensors";
2381
+ "expo-file-system": "expo-file-system";
2382
+ "expo-image": "expo-image";
2383
+ "expo-audio": "expo-audio";
2384
+ "expo-video": "expo-video";
2385
+ "expo-contacts": "expo-contacts";
2386
+ "expo-calendar": "expo-calendar";
2387
+ "expo-local-authentication": "expo-local-authentication";
2388
+ "expo-sharing": "expo-sharing";
2389
+ "expo-clipboard": "expo-clipboard";
2390
+ "expo-task-manager": "expo-task-manager";
2391
+ "expo-background-task": "expo-background-task";
2392
+ "expo-maps": "expo-maps";
2393
+ "expo-brightness": "expo-brightness";
2394
+ "expo-battery": "expo-battery";
2395
+ "expo-screen-capture": "expo-screen-capture";
2396
+ }>>>;
2230
2397
  packageManager: z.ZodOptional<z.ZodEnum<{
2231
2398
  bun: "bun";
2232
2399
  npm: "npm";
@@ -2457,6 +2624,8 @@ declare const router: {
2457
2624
  flask: "flask";
2458
2625
  litestar: "litestar";
2459
2626
  starlette: "starlette";
2627
+ aiohttp: "aiohttp";
2628
+ streamlit: "streamlit";
2460
2629
  }>>;
2461
2630
  pythonOrm: z.ZodOptional<z.ZodEnum<{
2462
2631
  none: "none";
@@ -2464,6 +2633,7 @@ declare const router: {
2464
2633
  sqlmodel: "sqlmodel";
2465
2634
  "tortoise-orm": "tortoise-orm";
2466
2635
  peewee: "peewee";
2636
+ pymongo: "pymongo";
2467
2637
  }>>;
2468
2638
  pythonValidation: z.ZodOptional<z.ZodEnum<{
2469
2639
  none: "none";
@@ -2471,6 +2641,7 @@ declare const router: {
2471
2641
  }>>;
2472
2642
  pythonAi: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2473
2643
  none: "none";
2644
+ mcp: "mcp";
2474
2645
  langgraph: "langgraph";
2475
2646
  "openai-sdk": "openai-sdk";
2476
2647
  "anthropic-sdk": "anthropic-sdk";
@@ -2481,11 +2652,16 @@ declare const router: {
2481
2652
  haystack: "haystack";
2482
2653
  "pydantic-ai": "pydantic-ai";
2483
2654
  smolagents: "smolagents";
2655
+ pytorch: "pytorch";
2656
+ transformers: "transformers";
2657
+ "scikit-learn": "scikit-learn";
2658
+ tensorflow: "tensorflow";
2484
2659
  }>>>;
2485
2660
  pythonAuth: z.ZodOptional<z.ZodEnum<{
2486
2661
  none: "none";
2487
2662
  authlib: "authlib";
2488
2663
  jwt: "jwt";
2664
+ pyjwt: "pyjwt";
2489
2665
  "fastapi-users": "fastapi-users";
2490
2666
  }>>;
2491
2667
  pythonApi: z.ZodOptional<z.ZodEnum<{
@@ -2516,6 +2692,7 @@ declare const router: {
2516
2692
  none: "none";
2517
2693
  pytest: "pytest";
2518
2694
  hypothesis: "hypothesis";
2695
+ "pytest-cov": "pytest-cov";
2519
2696
  }>>>;
2520
2697
  pythonCaching: z.ZodOptional<z.ZodEnum<{
2521
2698
  none: "none";
@@ -2530,6 +2707,7 @@ declare const router: {
2530
2707
  pythonObservability: z.ZodOptional<z.ZodEnum<{
2531
2708
  none: "none";
2532
2709
  opentelemetry: "opentelemetry";
2710
+ "prometheus-client": "prometheus-client";
2533
2711
  }>>;
2534
2712
  pythonCli: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2535
2713
  none: "none";
@@ -2537,6 +2715,37 @@ declare const router: {
2537
2715
  click: "click";
2538
2716
  rich: "rich";
2539
2717
  }>>>;
2718
+ pythonCloudSdk: z.ZodOptional<z.ZodEnum<{
2719
+ none: "none";
2720
+ boto3: "boto3";
2721
+ }>>;
2722
+ pythonHttpClient: z.ZodOptional<z.ZodEnum<{
2723
+ none: "none";
2724
+ requests: "requests";
2725
+ }>>;
2726
+ pythonData: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2727
+ none: "none";
2728
+ numpy: "numpy";
2729
+ pandas: "pandas";
2730
+ scipy: "scipy";
2731
+ }>>>;
2732
+ pythonMedia: z.ZodOptional<z.ZodEnum<{
2733
+ none: "none";
2734
+ pillow: "pillow";
2735
+ }>>;
2736
+ pythonServer: z.ZodOptional<z.ZodEnum<{
2737
+ none: "none";
2738
+ gunicorn: "gunicorn";
2739
+ }>>;
2740
+ pythonPackageManager: z.ZodOptional<z.ZodEnum<{
2741
+ none: "none";
2742
+ uv: "uv";
2743
+ poetry: "poetry";
2744
+ }>>;
2745
+ pythonMessageQueue: z.ZodOptional<z.ZodEnum<{
2746
+ none: "none";
2747
+ "confluent-kafka": "confluent-kafka";
2748
+ }>>;
2540
2749
  goWebFramework: z.ZodOptional<z.ZodEnum<{
2541
2750
  none: "none";
2542
2751
  gin: "gin";
@@ -2700,6 +2909,26 @@ declare const router: {
2700
2909
  thymeleaf: "thymeleaf";
2701
2910
  "spring-amqp": "spring-amqp";
2702
2911
  "opentelemetry-java": "opentelemetry-java";
2912
+ "spring-data-redis": "spring-data-redis";
2913
+ "spring-data-mongodb": "spring-data-mongodb";
2914
+ "spring-data-elasticsearch": "spring-data-elasticsearch";
2915
+ "spring-data-neo4j": "spring-data-neo4j";
2916
+ "spring-data-cassandra": "spring-data-cassandra";
2917
+ "spring-data-couchbase": "spring-data-couchbase";
2918
+ "spring-data-jdbc": "spring-data-jdbc";
2919
+ "spring-data-rest": "spring-data-rest";
2920
+ "spring-quartz": "spring-quartz";
2921
+ "spring-pulsar": "spring-pulsar";
2922
+ "spring-integration": "spring-integration";
2923
+ "spring-websocket": "spring-websocket";
2924
+ "spring-rsocket": "spring-rsocket";
2925
+ "spring-hateoas": "spring-hateoas";
2926
+ "spring-session-redis": "spring-session-redis";
2927
+ "spring-session-jdbc": "spring-session-jdbc";
2928
+ "spring-ldap": "spring-ldap";
2929
+ "spring-oauth2-client": "spring-oauth2-client";
2930
+ "spring-saml2": "spring-saml2";
2931
+ "spring-restclient": "spring-restclient";
2703
2932
  }>>>;
2704
2933
  javaTestingLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
2705
2934
  none: "none";
@@ -2777,6 +3006,29 @@ declare const router: {
2777
3006
  azure: "azure";
2778
3007
  aws: "aws";
2779
3008
  }>>;
3009
+ dotnetLibraries: z.ZodOptional<z.ZodArray<z.ZodEnum<{
3010
+ none: "none";
3011
+ sentry: "sentry";
3012
+ automapper: "automapper";
3013
+ mediatr: "mediatr";
3014
+ fastendpoints: "fastendpoints";
3015
+ "api-versioning": "api-versioning";
3016
+ scalar: "scalar";
3017
+ polly: "polly";
3018
+ masstransit: "masstransit";
3019
+ rebus: "rebus";
3020
+ coravel: "coravel";
3021
+ "magic-onion": "magic-onion";
3022
+ "prometheus-net": "prometheus-net";
3023
+ seq: "seq";
3024
+ "application-insights": "application-insights";
3025
+ "mongodb-driver": "mongodb-driver";
3026
+ nhibernate: "nhibernate";
3027
+ mapster: "mapster";
3028
+ scrutor: "scrutor";
3029
+ refit: "refit";
3030
+ "fluent-email": "fluent-email";
3031
+ }>>>;
2780
3032
  elixirWebFramework: z.ZodOptional<z.ZodEnum<{
2781
3033
  none: "none";
2782
3034
  phoenix: "phoenix";