vibefast-cli 0.7.0 → 0.7.2

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 (907) hide show
  1. package/dist/__tests__/recipes.test.js +5 -5
  2. package/dist/__tests__/recipes.test.js.map +1 -1
  3. package/dist/commands/add.d.ts.map +1 -1
  4. package/dist/commands/add.js +136 -48
  5. package/dist/commands/add.js.map +1 -1
  6. package/dist/commands/init.d.ts.map +1 -1
  7. package/dist/commands/init.js +106 -89
  8. package/dist/commands/init.js.map +1 -1
  9. package/dist/commands/remove.js +1 -1
  10. package/dist/commands/remove.js.map +1 -1
  11. package/dist/core/__tests__/fsx.test.js +6 -3
  12. package/dist/core/__tests__/fsx.test.js.map +1 -1
  13. package/dist/core/__tests__/prompt.test.js +12 -12
  14. package/dist/core/__tests__/prompt.test.js.map +1 -1
  15. package/dist/core/__tests__/validate.test.js +4 -3
  16. package/dist/core/__tests__/validate.test.js.map +1 -1
  17. package/dist/core/auth.d.ts.map +1 -1
  18. package/dist/core/auth.js +8 -0
  19. package/dist/core/auth.js.map +1 -1
  20. package/dist/core/codemod.d.ts +13 -0
  21. package/dist/core/codemod.d.ts.map +1 -1
  22. package/dist/core/codemod.js +50 -0
  23. package/dist/core/codemod.js.map +1 -1
  24. package/dist/core/errors.js +1 -1
  25. package/dist/core/fsx.js +1 -1
  26. package/dist/core/fsx.js.map +1 -1
  27. package/dist/core/recipes.d.ts.map +1 -1
  28. package/dist/core/recipes.js +65 -10
  29. package/dist/core/recipes.js.map +1 -1
  30. package/package.json +1 -1
  31. package/recipes/animated-chip/recipe.json +15 -0
  32. package/recipes/animated-chip@latest.zip +0 -0
  33. package/recipes/animated-switch/recipe.json +15 -0
  34. package/recipes/animated-switch@latest.zip +0 -0
  35. package/recipes/audio-recorder/recipe.json +2 -2
  36. package/recipes/audio-recorder@latest.zip +0 -0
  37. package/recipes/charts/apps/native/src/app/charts/index.tsx +3 -3
  38. package/recipes/charts/apps/native/src/features/charts/app/preview.tsx +3 -3
  39. package/recipes/charts/apps/native/src/features/charts/components/area-chart.tsx +3 -3
  40. package/recipes/charts/apps/native/src/features/charts/components/bar-chart.tsx +3 -3
  41. package/recipes/charts/apps/native/src/features/charts/components/candlestick-chart.tsx +3 -3
  42. package/recipes/charts/apps/native/src/features/charts/components/chart-card.tsx +3 -3
  43. package/recipes/charts/apps/native/src/features/charts/components/column-chart.tsx +3 -3
  44. package/recipes/charts/apps/native/src/features/charts/components/doughnut-chart.tsx +32 -21
  45. package/recipes/charts/apps/native/src/features/charts/components/index.ts +3 -3
  46. package/recipes/charts/apps/native/src/features/charts/components/line-chart.tsx +3 -3
  47. package/recipes/charts/apps/native/src/features/charts/components/radar-chart.tsx +3 -3
  48. package/recipes/charts/apps/native/src/features/charts/components/radial-bar-chart.tsx +3 -3
  49. package/recipes/charts/apps/native/src/features/charts/components/stacked-area-chart.tsx +3 -3
  50. package/recipes/charts/apps/native/src/features/charts/components/stacked-bar-chart.tsx +3 -3
  51. package/recipes/charts/apps/native/src/features/charts/data/mock-data.ts +3 -3
  52. package/recipes/charts/apps/native/src/features/charts/types/index.ts +3 -3
  53. package/recipes/charts/recipe.json +2 -2
  54. package/recipes/charts@latest.zip +0 -0
  55. package/recipes/chatbot/apps/native/src/app/chatbot/index.tsx +1 -1
  56. package/recipes/chatbot/apps/native/src/features/chatbot/app/index.tsx +1 -1
  57. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +1 -1
  58. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-input-bar.tsx +1 -1
  59. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-markdown.tsx +1 -1
  60. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +1 -1
  61. package/recipes/chatbot/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +1 -1
  62. package/recipes/chatbot/apps/native/src/features/chatbot/components/image-preview-list.tsx +1 -1
  63. package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/code-block.tsx +1 -1
  64. package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/index.ts +1 -1
  65. package/recipes/chatbot/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +1 -1
  66. package/recipes/chatbot/apps/native/src/features/chatbot/components/message-error-boundary.tsx +1 -1
  67. package/recipes/chatbot/apps/native/src/features/chatbot/components/message-list.tsx +2 -2
  68. package/recipes/chatbot/apps/native/src/features/chatbot/components/model-selector.tsx +1 -1
  69. package/recipes/chatbot/apps/native/src/features/chatbot/components/report-content-modal.tsx +1 -1
  70. package/recipes/chatbot/apps/native/src/features/chatbot/components/suggested-messages.tsx +1 -1
  71. package/recipes/chatbot/apps/native/src/features/chatbot/constants/models.ts +1 -1
  72. package/recipes/chatbot/apps/native/src/features/chatbot/constants/report-reasons.ts +1 -1
  73. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +1 -1
  74. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chat-config.ts +1 -1
  75. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +1 -1
  76. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +1 -1
  77. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-conversation.ts +1 -1
  78. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-image-picker.ts +1 -1
  79. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +1 -1
  80. package/recipes/chatbot/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +7 -1
  81. package/recipes/chatbot/apps/native/src/features/chatbot/models/index.ts +1 -1
  82. package/recipes/chatbot/apps/native/src/features/chatbot/models/models.ts +1 -1
  83. package/recipes/chatbot/apps/native/src/features/chatbot/models/providers.ts +1 -1
  84. package/recipes/chatbot/apps/native/src/features/chatbot/models/types.ts +1 -1
  85. package/recipes/chatbot/apps/native/src/features/chatbot/services/file-uploader.ts +1 -1
  86. package/recipes/chatbot/apps/native/src/features/chatbot/services/message-handler-service.ts +1 -1
  87. package/recipes/chatbot/apps/native/src/features/chatbot/types/index.ts +1 -1
  88. package/recipes/chatbot/apps/native/src/features/chatbot/utils/chat-telemetry.ts +1 -1
  89. package/recipes/chatbot/recipe.json +22 -6
  90. package/recipes/chatbot@latest.zip +0 -0
  91. package/recipes/glowing-button@latest.zip +0 -0
  92. package/recipes/image-analysis/recipe.json +38 -21
  93. package/recipes/image-analysis@latest.zip +0 -0
  94. package/recipes/image-generator/apps/native/src/features/image-generator/app/_layout.tsx +1 -0
  95. package/recipes/image-generator/apps/native/src/features/image-generator/app/gallery.tsx +1 -1
  96. package/recipes/image-generator/apps/native/src/features/image-generator/components/gallery-image.tsx +2 -3
  97. package/recipes/image-generator/recipe.json +8 -6
  98. package/recipes/image-generator@latest.zip +0 -0
  99. package/recipes/ios-widget/recipe.json +24 -0
  100. package/recipes/ios-widget@latest.zip +0 -0
  101. package/recipes/number-stepper/recipe.json +15 -0
  102. package/recipes/number-stepper@latest.zip +0 -0
  103. package/recipes/payments/recipe.json +30 -0
  104. package/recipes/payments@latest.zip +0 -0
  105. package/recipes/posthog.json +2 -1
  106. package/recipes/progress-circle/recipe.json +15 -0
  107. package/recipes/progress-circle@latest.zip +0 -0
  108. package/recipes/quiz/recipe.json +2 -2
  109. package/recipes/quiz@latest.zip +0 -0
  110. package/recipes/sentry.json +2 -1
  111. package/recipes/swipe-slider/recipe.json +15 -0
  112. package/recipes/swipe-slider@latest.zip +0 -0
  113. package/recipes/{0 → timeline}/recipe.json +3 -6
  114. package/recipes/timeline@latest.zip +0 -0
  115. package/recipes/tracker-app/recipe.json +2 -2
  116. package/recipes/tracker-app@latest.zip +0 -0
  117. package/recipes/upload-all.sh +14 -3
  118. package/recipes/voice-bot/recipe.json +16 -3
  119. package/recipes/voice-bot@latest.zip +0 -0
  120. package/recipes/wake-word/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -2
  121. package/recipes/wake-word/recipe.json +2 -2
  122. package/recipes/wake-word@latest.zip +0 -0
  123. package/src/__tests__/recipes.test.ts +5 -5
  124. package/src/commands/add.ts +230 -54
  125. package/src/commands/init.ts +118 -102
  126. package/src/commands/remove.ts +1 -1
  127. package/src/core/__tests__/fsx.test.ts +6 -3
  128. package/src/core/__tests__/prompt.test.ts +12 -12
  129. package/src/core/__tests__/validate.test.ts +4 -3
  130. package/src/core/auth.ts +8 -0
  131. package/src/core/codemod.ts +66 -0
  132. package/src/core/errors.ts +1 -1
  133. package/src/core/fsx.ts +1 -1
  134. package/src/core/recipes.ts +67 -11
  135. package/2/.claude/agents/architect.md +0 -74
  136. package/2/.claude/agents/convex-reviewer.md +0 -267
  137. package/2/.claude/agents/debug-detective.md +0 -62
  138. package/2/.claude/agents/learner.md +0 -64
  139. package/2/.claude/agents/perf-optimizer.md +0 -71
  140. package/2/.claude/agents/security-researcher.md +0 -42
  141. package/2/.claude/agents/tech-researcher.md +0 -46
  142. package/2/.claude/agents/ux-designer.md +0 -45
  143. package/2/.claude/commands/create-app-design.md +0 -279
  144. package/2/.claude/commands/create-prd-interactive.md +0 -113
  145. package/2/.claude/commands/create-prd.md +0 -111
  146. package/2/.claude/commands/create-tech-stack.md +0 -345
  147. package/2/.claude/commands/update-app-design.md +0 -298
  148. package/2/.claude/commands/update-project-structure.md +0 -14
  149. package/2/.claude/commands/update-tech-stack.md +0 -325
  150. package/2/.claude/docs/CONVEX_FEATURES_PLAN.md +0 -249
  151. package/2/.claude/docs/app-design-document.md +0 -0
  152. package/2/.claude/docs/project-status.md +0 -25
  153. package/2/.claude/docs/project-structure.md +0 -7
  154. package/2/.claude/docs/tech-stack.md +0 -157
  155. package/2/.claude/scripts/tree.sh +0 -70
  156. package/2/.claude/settings.json +0 -30
  157. package/2/.cursor/commands/code-review-high.md +0 -190
  158. package/2/.cursorignore +0 -3
  159. package/2/.github/ISSUE_TEMPLATE.md +0 -13
  160. package/2/.github/PULL_REQUEST_TEMPLATE.md +0 -23
  161. package/2/.github/actions/eas-build/action.yml +0 -85
  162. package/2/.github/actions/setup-jdk-generate-apk/action.yml +0 -48
  163. package/2/.github/actions/setup-node-pnpm-install/action.yml +0 -29
  164. package/2/.github/scripts/expo-doctor.sh +0 -26
  165. package/2/.github/workflows/compress-images.yml +0 -48
  166. package/2/.github/workflows/e2e-android-eas-build.yml +0 -111
  167. package/2/.github/workflows/e2e-android-maestro.yml +0 -52
  168. package/2/.github/workflows/e2e-android.yml +0 -119
  169. package/2/.github/workflows/eas-build-prod.yml +0 -43
  170. package/2/.github/workflows/eas-build-qa.yml +0 -47
  171. package/2/.github/workflows/expo-doctor.yml +0 -61
  172. package/2/.github/workflows/lint-ts.yml +0 -49
  173. package/2/.github/workflows/new-app-version.yml +0 -65
  174. package/2/.github/workflows/new-github-release.yml +0 -34
  175. package/2/.github/workflows/stale.yml +0 -24
  176. package/2/.github/workflows/test.yml +0 -50
  177. package/2/.github/workflows/type-check.yml +0 -54
  178. package/2/.husky/commit-msg +0 -1
  179. package/2/.husky/common.sh +0 -8
  180. package/2/.husky/post-merge +0 -18
  181. package/2/.husky/pre-commit +0 -24
  182. package/2/.prettierignore +0 -14
  183. package/2/.prettierrc.json +0 -10
  184. package/2/.vibefast/README.md +0 -59
  185. package/2/.vibefast/config.json +0 -4
  186. package/2/.vibefast/journal.json +0 -234
  187. package/2/.vibefast/starter.json +0 -5
  188. package/2/AGENTS.md +0 -48
  189. package/2/LICENSE +0 -21
  190. package/2/README.md +0 -127
  191. package/2/apps/native/__mocks__/bottom-sheet.js +0 -6
  192. package/2/apps/native/__mocks__/expo-router.js +0 -16
  193. package/2/apps/native/__mocks__/react-native-gesture-handler.ts +0 -17
  194. package/2/apps/native/app-env.d.ts +0 -2
  195. package/2/apps/native/app.config.ts +0 -167
  196. package/2/apps/native/assets/adaptive-icon.png +0 -0
  197. package/2/apps/native/assets/favicon.png +0 -0
  198. package/2/apps/native/assets/fonts/Inter.ttf +0 -0
  199. package/2/apps/native/assets/fonts/SF-Pro-Display-Bold.otf +0 -0
  200. package/2/apps/native/assets/fonts/SF-Pro-Display-Medium.otf +0 -0
  201. package/2/apps/native/assets/fonts/SF-Pro-Display-Regular.otf +0 -0
  202. package/2/apps/native/assets/fonts/SF-Pro-Display-Semibold.otf +0 -0
  203. package/2/apps/native/assets/fonts/SpaceMono-Regular.ttf +0 -0
  204. package/2/apps/native/assets/icon.png +0 -0
  205. package/2/apps/native/assets/images/cover-image.png +0 -0
  206. package/2/apps/native/assets/lottie-animations/onboarding-1.json +0 -6504
  207. package/2/apps/native/assets/lottie-animations/onboarding-2.json +0 -1993
  208. package/2/apps/native/assets/lottie-animations/onboarding-3.json +0 -50159
  209. package/2/apps/native/assets/lottie-animations/onboarding-4.json +0 -735
  210. package/2/apps/native/assets/lottie-animations/onboarding-6.json +0 -2167
  211. package/2/apps/native/assets/splash-icon.png +0 -0
  212. package/2/apps/native/babel.config.js +0 -39
  213. package/2/apps/native/eas.json +0 -75
  214. package/2/apps/native/env.js +0 -196
  215. package/2/apps/native/global.css +0 -51
  216. package/2/apps/native/index.ts +0 -5
  217. package/2/apps/native/jest-setup.ts +0 -7
  218. package/2/apps/native/jest.config.js +0 -72
  219. package/2/apps/native/metro.config.js +0 -85
  220. package/2/apps/native/nativewind-env.d.ts +0 -1
  221. package/2/apps/native/package.json +0 -232
  222. package/2/apps/native/scripts/DRY_RUN_REPORT.md +0 -0
  223. package/2/apps/native/scripts/QUICK_START.md +0 -76
  224. package/2/apps/native/scripts/README.md +0 -187
  225. package/2/apps/native/scripts/convex-setup.js +0 -48
  226. package/2/apps/native/scripts/genrate-apk-and-install +0 -39
  227. package/2/apps/native/scripts/i18next-syntax-validation.js +0 -23
  228. package/2/apps/native/scripts/starter-setup.mjs +0 -246
  229. package/2/apps/native/src/api-client/auth.ts +0 -68
  230. package/2/apps/native/src/api-client/chatbot.ts +0 -83
  231. package/2/apps/native/src/api-client/client.ts +0 -4
  232. package/2/apps/native/src/api-client/image-generator.ts +0 -34
  233. package/2/apps/native/src/api-client/index.ts +0 -27
  234. package/2/apps/native/src/api-client/payments.ts +0 -44
  235. package/2/apps/native/src/api-client/reporting.ts +0 -29
  236. package/2/apps/native/src/api-client/shared.ts +0 -43
  237. package/2/apps/native/src/app/(root)/(protected)/(tabs)/_layout.tsx +0 -166
  238. package/2/apps/native/src/app/(root)/(protected)/(tabs)/index.tsx +0 -174
  239. package/2/apps/native/src/app/(root)/(protected)/(tabs)/profile.tsx +0 -320
  240. package/2/apps/native/src/app/(root)/(protected)/(tabs)/settings.tsx +0 -344
  241. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/_layout.tsx +0 -198
  242. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/accordion.tsx +0 -60
  243. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/advanced.tsx +0 -24
  244. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/avatar.tsx +0 -154
  245. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/badge-chips-toggle.tsx +0 -81
  246. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/buttons.tsx +0 -24
  247. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/charts.tsx +0 -3
  248. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/date-picker.tsx +0 -120
  249. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/file-picker.tsx +0 -133
  250. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/gallery-video.tsx +0 -119
  251. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/index.tsx +0 -69
  252. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/inputs-stepper.tsx +0 -78
  253. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/picker-dropdown.tsx +0 -56
  254. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/popover-bottomsheet.tsx +0 -229
  255. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/progress.tsx +0 -38
  256. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/searchbar.tsx +0 -70
  257. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/sliders.tsx +0 -93
  258. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/spinner.tsx +0 -80
  259. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/switch.tsx +0 -47
  260. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/table.tsx +0 -352
  261. package/2/apps/native/src/app/(root)/(protected)/(tabs)/style/tabs-timeline.tsx +0 -122
  262. package/2/apps/native/src/app/(root)/(protected)/_layout.tsx +0 -143
  263. package/2/apps/native/src/app/(root)/(protected)/audio-recorder/index.tsx +0 -5
  264. package/2/apps/native/src/app/(root)/(protected)/charts/index.tsx +0 -6
  265. package/2/apps/native/src/app/(root)/(protected)/chatbot/index.tsx +0 -2
  266. package/2/apps/native/src/app/(root)/(protected)/image-generator/gallery.tsx +0 -3
  267. package/2/apps/native/src/app/(root)/(protected)/image-generator/index.tsx +0 -3
  268. package/2/apps/native/src/app/(root)/(protected)/paywall/index.tsx +0 -74
  269. package/2/apps/native/src/app/(root)/(protected)/paywall/local.tsx +0 -25
  270. package/2/apps/native/src/app/(root)/(protected)/paywall/remote.tsx +0 -23
  271. package/2/apps/native/src/app/(root)/(protected)/quick-actions-demo/index.tsx +0 -32
  272. package/2/apps/native/src/app/(root)/(protected)/quiz/index.tsx +0 -47
  273. package/2/apps/native/src/app/(root)/(protected)/test-wake-word.tsx +0 -214
  274. package/2/apps/native/src/app/(root)/(protected)/tracker-app/index.tsx +0 -1
  275. package/2/apps/native/src/app/(root)/(protected)/voice-bot/index.tsx +0 -27
  276. package/2/apps/native/src/app/(root)/(public)/(auth)/_layout.tsx +0 -44
  277. package/2/apps/native/src/app/(root)/(public)/(auth)/forgot-password.tsx +0 -185
  278. package/2/apps/native/src/app/(root)/(public)/(auth)/login.tsx +0 -219
  279. package/2/apps/native/src/app/(root)/(public)/(auth)/otp-verification.tsx +0 -369
  280. package/2/apps/native/src/app/(root)/(public)/(auth)/reset-password.tsx +0 -247
  281. package/2/apps/native/src/app/(root)/(public)/(auth)/signup.tsx +0 -207
  282. package/2/apps/native/src/app/(root)/(public)/_layout.tsx +0 -60
  283. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-one.tsx +0 -5
  284. package/2/apps/native/src/app/(root)/(public)/onboarding/demo-two.tsx +0 -52
  285. package/2/apps/native/src/app/(root)/(public)/onboarding/index.tsx +0 -82
  286. package/2/apps/native/src/app/(root)/_layout.tsx +0 -30
  287. package/2/apps/native/src/app/+html.tsx +0 -46
  288. package/2/apps/native/src/app/[...messing].tsx +0 -24
  289. package/2/apps/native/src/app/_layout.tsx +0 -56
  290. package/2/apps/native/src/app/tsconfig.json +0 -3
  291. package/2/apps/native/src/components/advanced-ui/buttons/glowing-button.tsx +0 -366
  292. package/2/apps/native/src/components/analytics/navigation-tracker.tsx +0 -10
  293. package/2/apps/native/src/components/demo/advanced-ui-components.tsx +0 -46
  294. package/2/apps/native/src/components/demo/buttons-demo.tsx +0 -56
  295. package/2/apps/native/src/components/demo/colors-demo.tsx +0 -52
  296. package/2/apps/native/src/components/demo/dropdown-picker-demo.tsx +0 -274
  297. package/2/apps/native/src/components/demo/inputs-demo.tsx +0 -99
  298. package/2/apps/native/src/components/demo/notification-demo.tsx +0 -434
  299. package/2/apps/native/src/components/demo/title-demo.tsx +0 -16
  300. package/2/apps/native/src/components/demo/toast-demo.tsx +0 -81
  301. package/2/apps/native/src/components/demo/typography-demo.tsx +0 -28
  302. package/2/apps/native/src/components/performance/render-performance-monitor.tsx +0 -36
  303. package/2/apps/native/src/components/ui/accordion.tsx +0 -138
  304. package/2/apps/native/src/components/ui/avatar.tsx +0 -66
  305. package/2/apps/native/src/components/ui/badge.tsx +0 -68
  306. package/2/apps/native/src/components/ui/bottom-sheet.tsx +0 -61
  307. package/2/apps/native/src/components/ui/colors.js +0 -290
  308. package/2/apps/native/src/components/ui/core/button.tsx +0 -317
  309. package/2/apps/native/src/components/ui/core/card.tsx +0 -40
  310. package/2/apps/native/src/components/ui/core/checkbox.tsx +0 -264
  311. package/2/apps/native/src/components/ui/core/feature-button.tsx +0 -162
  312. package/2/apps/native/src/components/ui/core/focus-aware-status-bar.tsx +0 -21
  313. package/2/apps/native/src/components/ui/core/image.tsx +0 -30
  314. package/2/apps/native/src/components/ui/core/inputs/floating-text-input.tsx +0 -369
  315. package/2/apps/native/src/components/ui/core/inputs/input-otp.tsx +0 -304
  316. package/2/apps/native/src/components/ui/core/inputs/input.tsx +0 -373
  317. package/2/apps/native/src/components/ui/core/list.tsx +0 -60
  318. package/2/apps/native/src/components/ui/core/navigation/animated-header.tsx +0 -87
  319. package/2/apps/native/src/components/ui/core/navigation/screen-footer.tsx +0 -67
  320. package/2/apps/native/src/components/ui/core/overlays/dropdown.tsx +0 -290
  321. package/2/apps/native/src/components/ui/core/overlays/full-screen-loading.tsx +0 -15
  322. package/2/apps/native/src/components/ui/core/overlays/modal-keyboard-aware-scroll-view.tsx +0 -46
  323. package/2/apps/native/src/components/ui/core/overlays/modal.tsx +0 -247
  324. package/2/apps/native/src/components/ui/core/pagination-dots.tsx +0 -231
  325. package/2/apps/native/src/components/ui/core/pressable.tsx +0 -48
  326. package/2/apps/native/src/components/ui/core/progress-bar.tsx +0 -47
  327. package/2/apps/native/src/components/ui/core/progress.tsx +0 -149
  328. package/2/apps/native/src/components/ui/core/select.tsx +0 -261
  329. package/2/apps/native/src/components/ui/core/spinner.tsx +0 -387
  330. package/2/apps/native/src/components/ui/core/text.tsx +0 -45
  331. package/2/apps/native/src/components/ui/core/toast.tsx +0 -190
  332. package/2/apps/native/src/components/ui/custom-switch.tsx +0 -90
  333. package/2/apps/native/src/components/ui/date-time-picker.tsx +0 -268
  334. package/2/apps/native/src/components/ui/debug.ts +0 -2
  335. package/2/apps/native/src/components/ui/extras/debug-credit-tester.tsx +0 -107
  336. package/2/apps/native/src/components/ui/extras/debug-mmkv-state.tsx +0 -53
  337. package/2/apps/native/src/components/ui/extras/handle-error.ts +0 -191
  338. package/2/apps/native/src/components/ui/extras/hello-wave.tsx +0 -70
  339. package/2/apps/native/src/components/ui/extras/icon.tsx +0 -36
  340. package/2/apps/native/src/components/ui/extras/network-connectivity-wrapper.tsx +0 -36
  341. package/2/apps/native/src/components/ui/extras/offline-indicator.tsx +0 -55
  342. package/2/apps/native/src/components/ui/extras/social-login-buttons.tsx +0 -296
  343. package/2/apps/native/src/components/ui/file-picker.tsx +0 -177
  344. package/2/apps/native/src/components/ui/gallery.tsx +0 -79
  345. package/2/apps/native/src/components/ui/icons/apple.tsx +0 -19
  346. package/2/apps/native/src/components/ui/icons/arrow-right.tsx +0 -26
  347. package/2/apps/native/src/components/ui/icons/camera.tsx +0 -26
  348. package/2/apps/native/src/components/ui/icons/caret-down.tsx +0 -20
  349. package/2/apps/native/src/components/ui/icons/chevron-up.tsx +0 -21
  350. package/2/apps/native/src/components/ui/icons/claude.tsx +0 -15
  351. package/2/apps/native/src/components/ui/icons/copy.tsx +0 -27
  352. package/2/apps/native/src/components/ui/icons/deepseek.tsx +0 -15
  353. package/2/apps/native/src/components/ui/icons/download.tsx +0 -32
  354. package/2/apps/native/src/components/ui/icons/feed.tsx +0 -12
  355. package/2/apps/native/src/components/ui/icons/gemini.tsx +0 -15
  356. package/2/apps/native/src/components/ui/icons/github.tsx +0 -30
  357. package/2/apps/native/src/components/ui/icons/google.tsx +0 -24
  358. package/2/apps/native/src/components/ui/icons/groq.tsx +0 -15
  359. package/2/apps/native/src/components/ui/icons/home.tsx +0 -19
  360. package/2/apps/native/src/components/ui/icons/index.tsx +0 -26
  361. package/2/apps/native/src/components/ui/icons/language.tsx +0 -33
  362. package/2/apps/native/src/components/ui/icons/llama.tsx +0 -15
  363. package/2/apps/native/src/components/ui/icons/microphone.tsx +0 -20
  364. package/2/apps/native/src/components/ui/icons/mistral.tsx +0 -22
  365. package/2/apps/native/src/components/ui/icons/nutrition.tsx +0 -15
  366. package/2/apps/native/src/components/ui/icons/openai.tsx +0 -15
  367. package/2/apps/native/src/components/ui/icons/perplexity.tsx +0 -22
  368. package/2/apps/native/src/components/ui/icons/qwen.tsx +0 -15
  369. package/2/apps/native/src/components/ui/icons/rate.tsx +0 -24
  370. package/2/apps/native/src/components/ui/icons/report.tsx +0 -20
  371. package/2/apps/native/src/components/ui/icons/send-horizontal.tsx +0 -26
  372. package/2/apps/native/src/components/ui/icons/settings.tsx +0 -12
  373. package/2/apps/native/src/components/ui/icons/share.tsx +0 -16
  374. package/2/apps/native/src/components/ui/icons/square.tsx +0 -9
  375. package/2/apps/native/src/components/ui/icons/style.tsx +0 -22
  376. package/2/apps/native/src/components/ui/icons/support.tsx +0 -27
  377. package/2/apps/native/src/components/ui/icons/trash2.tsx +0 -42
  378. package/2/apps/native/src/components/ui/icons/user.tsx +0 -12
  379. package/2/apps/native/src/components/ui/icons/website.tsx +0 -28
  380. package/2/apps/native/src/components/ui/icons/wifi-off.tsx +0 -17
  381. package/2/apps/native/src/components/ui/index.tsx +0 -14
  382. package/2/apps/native/src/components/ui/nav-item.tsx +0 -42
  383. package/2/apps/native/src/components/ui/patterns/index.ts +0 -16
  384. package/2/apps/native/src/components/ui/picker.tsx +0 -244
  385. package/2/apps/native/src/components/ui/popover.tsx +0 -313
  386. package/2/apps/native/src/components/ui/primitives/index.ts +0 -38
  387. package/2/apps/native/src/components/ui/radio-group.tsx +0 -47
  388. package/2/apps/native/src/components/ui/searchbar.tsx +0 -118
  389. package/2/apps/native/src/components/ui/sheet.tsx +0 -93
  390. package/2/apps/native/src/components/ui/switch.tsx +0 -37
  391. package/2/apps/native/src/components/ui/table.tsx +0 -296
  392. package/2/apps/native/src/components/ui/tabs.tsx +0 -115
  393. package/2/apps/native/src/components/ui/toggle.tsx +0 -50
  394. package/2/apps/native/src/components/ui/utils.tsx +0 -34
  395. package/2/apps/native/src/components/ui/video.tsx +0 -39
  396. package/2/apps/native/src/core/analytics/analytics-service.ts +0 -94
  397. package/2/apps/native/src/core/analytics/index.ts +0 -2
  398. package/2/apps/native/src/core/analytics/posthog-analytics-adapter.ts +0 -192
  399. package/2/apps/native/src/core/auth/auth-service.ts +0 -33
  400. package/2/apps/native/src/core/auth/index.ts +0 -1
  401. package/2/apps/native/src/core/cache/__tests__/cache-service.test.ts +0 -599
  402. package/2/apps/native/src/core/cache/cache-service.ts +0 -89
  403. package/2/apps/native/src/core/cache/index.ts +0 -45
  404. package/2/apps/native/src/core/config/config.service.ts +0 -153
  405. package/2/apps/native/src/core/config/index.ts +0 -2
  406. package/2/apps/native/src/core/config/telemetry.ts +0 -38
  407. package/2/apps/native/src/core/local-notifications/local-notification-manager.ts +0 -409
  408. package/2/apps/native/src/core/logging/custom-transports.ts +0 -126
  409. package/2/apps/native/src/core/logging/index.ts +0 -1
  410. package/2/apps/native/src/core/logging/logger.ts +0 -182
  411. package/2/apps/native/src/core/navigation/deep-link-handler.ts +0 -295
  412. package/2/apps/native/src/core/navigation/navigation-types.ts +0 -53
  413. package/2/apps/native/src/core/payments/index.ts +0 -1
  414. package/2/apps/native/src/core/payments/payment-service.ts +0 -32
  415. package/2/apps/native/src/core/quick-actions/index.ts +0 -2
  416. package/2/apps/native/src/core/quick-actions/quick-actions-adapter.ts +0 -54
  417. package/2/apps/native/src/core/quick-actions/types.ts +0 -29
  418. package/2/apps/native/src/core/storage/index.ts +0 -1
  419. package/2/apps/native/src/core/storage/mmkv.ts +0 -62
  420. package/2/apps/native/src/core/storage/notification-storage.ts +0 -312
  421. package/2/apps/native/src/core/types/common.ts +0 -0
  422. package/2/apps/native/src/core/utils/convex-http-api.ts +0 -30
  423. package/2/apps/native/src/features/audio-recorder/components/audio-player.tsx +0 -301
  424. package/2/apps/native/src/features/audio-recorder/components/audio-recorder.tsx +0 -373
  425. package/2/apps/native/src/features/audio-recorder/components/audio-waveform.tsx +0 -270
  426. package/2/apps/native/src/features/audio-recorder/components/index.ts +0 -4
  427. package/2/apps/native/src/features/audio-recorder/components/recording-list.tsx +0 -89
  428. package/2/apps/native/src/features/audio-recorder/demo/audio-player-demo.tsx +0 -66
  429. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-cloud.tsx +0 -68
  430. package/2/apps/native/src/features/audio-recorder/demo/audio-recorder-interview.tsx +0 -102
  431. package/2/apps/native/src/features/audio-recorder/demo/basic.tsx +0 -27
  432. package/2/apps/native/src/features/audio-recorder/demo/index.ts +0 -5
  433. package/2/apps/native/src/features/audio-recorder/demo/with-recording-list-demo.tsx +0 -82
  434. package/2/apps/native/src/features/authentication/components/auth-watcher.tsx +0 -115
  435. package/2/apps/native/src/features/authentication/components/login-form.tsx +0 -85
  436. package/2/apps/native/src/features/authentication/services/__tests__/convex-auth.adapter.test.ts +0 -399
  437. package/2/apps/native/src/features/authentication/services/convex-auth.adapter.ts +0 -497
  438. package/2/apps/native/src/features/authentication/services/index.ts +0 -2
  439. package/2/apps/native/src/features/charts/README.md +0 -185
  440. package/2/apps/native/src/features/charts/app/preview.tsx +0 -226
  441. package/2/apps/native/src/features/charts/components/area-chart.tsx +0 -43
  442. package/2/apps/native/src/features/charts/components/bar-chart.tsx +0 -146
  443. package/2/apps/native/src/features/charts/components/candlestick-chart.tsx +0 -199
  444. package/2/apps/native/src/features/charts/components/chart-card.tsx +0 -68
  445. package/2/apps/native/src/features/charts/components/column-chart.tsx +0 -146
  446. package/2/apps/native/src/features/charts/components/doughnut-chart.tsx +0 -260
  447. package/2/apps/native/src/features/charts/components/index.ts +0 -13
  448. package/2/apps/native/src/features/charts/components/line-chart.tsx +0 -311
  449. package/2/apps/native/src/features/charts/components/radar-chart.tsx +0 -183
  450. package/2/apps/native/src/features/charts/components/radial-bar-chart.tsx +0 -191
  451. package/2/apps/native/src/features/charts/components/stacked-area-chart.tsx +0 -268
  452. package/2/apps/native/src/features/charts/components/stacked-bar-chart.tsx +0 -325
  453. package/2/apps/native/src/features/charts/data/mock-data.ts +0 -186
  454. package/2/apps/native/src/features/charts/types/index.ts +0 -69
  455. package/2/apps/native/src/features/chatbot/app/index.tsx +0 -303
  456. package/2/apps/native/src/features/chatbot/components/chat-header-buttons.tsx +0 -60
  457. package/2/apps/native/src/features/chatbot/components/chat-input-bar.tsx +0 -470
  458. package/2/apps/native/src/features/chatbot/components/chat-markdown.tsx +0 -576
  459. package/2/apps/native/src/features/chatbot/components/chat-message-bubble.tsx +0 -247
  460. package/2/apps/native/src/features/chatbot/components/chat-settings-modal.tsx +0 -162
  461. package/2/apps/native/src/features/chatbot/components/image-preview-list.tsx +0 -116
  462. package/2/apps/native/src/features/chatbot/components/markdown/code-block.tsx +0 -166
  463. package/2/apps/native/src/features/chatbot/components/markdown/index.ts +0 -11
  464. package/2/apps/native/src/features/chatbot/components/markdown/table-renderer.tsx +0 -130
  465. package/2/apps/native/src/features/chatbot/components/message-error-boundary.tsx +0 -79
  466. package/2/apps/native/src/features/chatbot/components/message-list.tsx +0 -174
  467. package/2/apps/native/src/features/chatbot/components/model-selector.tsx +0 -284
  468. package/2/apps/native/src/features/chatbot/components/report-content-modal.tsx +0 -189
  469. package/2/apps/native/src/features/chatbot/components/suggested-messages.tsx +0 -68
  470. package/2/apps/native/src/features/chatbot/constants/models.ts +0 -21
  471. package/2/apps/native/src/features/chatbot/constants/report-reasons.ts +0 -10
  472. package/2/apps/native/src/features/chatbot/hooks/use-attachment-cache.ts +0 -144
  473. package/2/apps/native/src/features/chatbot/hooks/use-chat-config.ts +0 -665
  474. package/2/apps/native/src/features/chatbot/hooks/use-chat-handlers.ts +0 -360
  475. package/2/apps/native/src/features/chatbot/hooks/use-chatbot-settings.ts +0 -90
  476. package/2/apps/native/src/features/chatbot/hooks/use-conversation.ts +0 -80
  477. package/2/apps/native/src/features/chatbot/hooks/use-image-picker.ts +0 -123
  478. package/2/apps/native/src/features/chatbot/hooks/use-keyboard-coordinator.ts +0 -162
  479. package/2/apps/native/src/features/chatbot/hooks/use-smart-scroll-manager.ts +0 -214
  480. package/2/apps/native/src/features/chatbot/models/index.ts +0 -87
  481. package/2/apps/native/src/features/chatbot/models/models.ts +0 -163
  482. package/2/apps/native/src/features/chatbot/models/providers.ts +0 -63
  483. package/2/apps/native/src/features/chatbot/models/types.ts +0 -41
  484. package/2/apps/native/src/features/chatbot/services/file-uploader.ts +0 -239
  485. package/2/apps/native/src/features/chatbot/services/message-handler-service.ts +0 -181
  486. package/2/apps/native/src/features/chatbot/types/index.ts +0 -61
  487. package/2/apps/native/src/features/chatbot/utils/chat-telemetry.ts +0 -92
  488. package/2/apps/native/src/features/image-generator/app/_layout.tsx +0 -26
  489. package/2/apps/native/src/features/image-generator/app/gallery.tsx +0 -217
  490. package/2/apps/native/src/features/image-generator/app/index.tsx +0 -237
  491. package/2/apps/native/src/features/image-generator/components/gallery-image.tsx +0 -25
  492. package/2/apps/native/src/features/image-generator/components/image-detail-modal.tsx +0 -215
  493. package/2/apps/native/src/features/image-generator/components/image-model-selector.tsx +0 -210
  494. package/2/apps/native/src/features/image-generator/components/image-placeholder.tsx +0 -26
  495. package/2/apps/native/src/features/image-generator/hooks/use-image-gallery.ts +0 -71
  496. package/2/apps/native/src/features/image-generator/hooks/use-image-generator-settings.ts +0 -152
  497. package/2/apps/native/src/features/image-generator/hooks/use-image-generator.ts +0 -93
  498. package/2/apps/native/src/features/image-generator/models/models.ts +0 -66
  499. package/2/apps/native/src/features/image-generator/services/image-gallery-service.ts +0 -98
  500. package/2/apps/native/src/features/image-generator/services/image-save-service.ts +0 -121
  501. package/2/apps/native/src/features/onboarding/analytics/index.ts +0 -9
  502. package/2/apps/native/src/features/onboarding/components/onboarding-with-analytics.tsx +0 -141
  503. package/2/apps/native/src/features/onboarding/components/onboarding.tsx +0 -173
  504. package/2/apps/native/src/features/onboarding/config/onboarding-flow-config.ts +0 -189
  505. package/2/apps/native/src/features/onboarding/demo-one/app/index.tsx +0 -43
  506. package/2/apps/native/src/features/onboarding/demo-one/data.ts +0 -32
  507. package/2/apps/native/src/features/onboarding/hooks/use-onboarding-analytics.ts +0 -323
  508. package/2/apps/native/src/features/onboarding/services/onboarding-analytics.ts +0 -432
  509. package/2/apps/native/src/features/payments/README.md +0 -200
  510. package/2/apps/native/src/features/payments/app/local-paywall.tsx +0 -194
  511. package/2/apps/native/src/features/payments/app/remote-paywall.tsx +0 -79
  512. package/2/apps/native/src/features/payments/components/payment-initializer.tsx +0 -95
  513. package/2/apps/native/src/features/payments/components/paywall-error-state.tsx +0 -60
  514. package/2/apps/native/src/features/payments/components/paywall-local-mode.tsx +0 -116
  515. package/2/apps/native/src/features/payments/components/paywall-product-card.tsx +0 -133
  516. package/2/apps/native/src/features/payments/components/paywall-remote-mode.tsx +0 -146
  517. package/2/apps/native/src/features/payments/hooks/use-entitlement.ts +0 -63
  518. package/2/apps/native/src/features/payments/index.ts +0 -8
  519. package/2/apps/native/src/features/payments/services/revenuecat-adapter.ts +0 -407
  520. package/2/apps/native/src/features/quick-actions/components/quick-actions-demo.tsx +0 -139
  521. package/2/apps/native/src/features/quick-actions/config/default-actions.ts +0 -83
  522. package/2/apps/native/src/features/quick-actions/hooks/use-quick-actions.ts +0 -45
  523. package/2/apps/native/src/features/quick-actions/index.ts +0 -4
  524. package/2/apps/native/src/features/quick-actions/utils/quick-actions-manager.ts +0 -105
  525. package/2/apps/native/src/features/quiz/components/question.tsx +0 -67
  526. package/2/apps/native/src/features/quiz/config.ts +0 -11
  527. package/2/apps/native/src/features/quiz/index.tsx +0 -133
  528. package/2/apps/native/src/features/settings/ui/debug-info.tsx +0 -75
  529. package/2/apps/native/src/features/settings/ui/dev-tools.tsx +0 -1
  530. package/2/apps/native/src/features/settings/ui/item.tsx +0 -45
  531. package/2/apps/native/src/features/settings/ui/items-container.tsx +0 -23
  532. package/2/apps/native/src/features/settings/ui/language-item.tsx +0 -52
  533. package/2/apps/native/src/features/settings/ui/notification-item.tsx +0 -59
  534. package/2/apps/native/src/features/settings/ui/theme-item.tsx +0 -45
  535. package/2/apps/native/src/features/tracker-app/app/index.tsx +0 -108
  536. package/2/apps/native/src/features/tracker-app/components/animated-number.tsx +0 -102
  537. package/2/apps/native/src/features/tracker-app/components/calorie-card.tsx +0 -66
  538. package/2/apps/native/src/features/tracker-app/components/circular-progress.tsx +0 -97
  539. package/2/apps/native/src/features/tracker-app/components/floating-add-button.tsx +0 -27
  540. package/2/apps/native/src/features/tracker-app/components/macro-card.tsx +0 -80
  541. package/2/apps/native/src/features/tracker-app/components/promo-banner.tsx +0 -98
  542. package/2/apps/native/src/features/tracker-app/components/recently-logged.tsx +0 -64
  543. package/2/apps/native/src/features/tracker-app/components/week-calendar.tsx +0 -68
  544. package/2/apps/native/src/features/vibefast-features.ts +0 -42
  545. package/2/apps/native/src/features/voice-bot/README.md +0 -185
  546. package/2/apps/native/src/features/voice-bot/components/conversation-status.tsx +0 -76
  547. package/2/apps/native/src/features/voice-bot/components/index.ts +0 -4
  548. package/2/apps/native/src/features/voice-bot/components/message-input.tsx +0 -98
  549. package/2/apps/native/src/features/voice-bot/components/voice-bot-screen.tsx +0 -173
  550. package/2/apps/native/src/features/voice-bot/components/voice-controls.tsx +0 -73
  551. package/2/apps/native/src/features/voice-bot/index.ts +0 -3
  552. package/2/apps/native/src/features/voice-bot/services/index.ts +0 -1
  553. package/2/apps/native/src/features/voice-bot/services/use-voice-bot.ts +0 -161
  554. package/2/apps/native/src/features/voice-bot/types.ts +0 -29
  555. package/2/apps/native/src/features/wake-word/components/index.ts +0 -1
  556. package/2/apps/native/src/features/wake-word/components/wake-word-indicator.tsx +0 -61
  557. package/2/apps/native/src/features/wake-word/constants.ts +0 -10
  558. package/2/apps/native/src/features/wake-word/hooks/use-wake-word.ts +0 -181
  559. package/2/apps/native/src/features/wake-word/index.ts +0 -22
  560. package/2/apps/native/src/features/wake-word/services/audio-session.ts +0 -40
  561. package/2/apps/native/src/features/wake-word/services/event-bus.ts +0 -31
  562. package/2/apps/native/src/features/wake-word/services/keywords.ts +0 -88
  563. package/2/apps/native/src/features/wake-word/services/wake-word-manager.ts +0 -249
  564. package/2/apps/native/src/features/wake-word/types.ts +0 -22
  565. package/2/apps/native/src/lib/env.js +0 -13
  566. package/2/apps/native/src/lib/hooks/index.tsx +0 -6
  567. package/2/apps/native/src/lib/hooks/use-device-identifier.tsx +0 -80
  568. package/2/apps/native/src/lib/hooks/use-gradual-animation.ts +0 -28
  569. package/2/apps/native/src/lib/hooks/use-is-first-time.tsx +0 -25
  570. package/2/apps/native/src/lib/hooks/use-navigation-analytics.ts +0 -44
  571. package/2/apps/native/src/lib/hooks/use-navigation-options.tsx +0 -87
  572. package/2/apps/native/src/lib/hooks/use-push-notifications.ts +0 -250
  573. package/2/apps/native/src/lib/hooks/use-responsive-size.tsx +0 -37
  574. package/2/apps/native/src/lib/hooks/use-selected-theme.tsx +0 -38
  575. package/2/apps/native/src/lib/hooks/use-viewport-lazy-loading.tsx +0 -124
  576. package/2/apps/native/src/lib/i18n/index.tsx +0 -30
  577. package/2/apps/native/src/lib/i18n/react-i18next.d.ts +0 -9
  578. package/2/apps/native/src/lib/i18n/resources.ts +0 -25
  579. package/2/apps/native/src/lib/i18n/types.ts +0 -23
  580. package/2/apps/native/src/lib/i18n/utils.tsx +0 -112
  581. package/2/apps/native/src/lib/index.tsx +0 -3
  582. package/2/apps/native/src/lib/state/auth-client-slice.ts +0 -34
  583. package/2/apps/native/src/lib/state/index.ts +0 -1
  584. package/2/apps/native/src/lib/storage.tsx +0 -7
  585. package/2/apps/native/src/lib/test-utils.tsx +0 -43
  586. package/2/apps/native/src/lib/use-theme-config.tsx +0 -108
  587. package/2/apps/native/src/lib/utils.ts +0 -29
  588. package/2/apps/native/src/polyfills.ts +0 -61
  589. package/2/apps/native/src/providers/convex-provider.tsx +0 -31
  590. package/2/apps/native/src/providers/index.tsx +0 -6
  591. package/2/apps/native/src/providers/notification-provider.tsx +0 -168
  592. package/2/apps/native/src/providers/posthog-provider.tsx +0 -47
  593. package/2/apps/native/src/providers/root-providers.tsx +0 -46
  594. package/2/apps/native/src/providers/sentry-provider.tsx +0 -62
  595. package/2/apps/native/src/providers/splash-screen-provider.tsx +0 -122
  596. package/2/apps/native/src/providers/theme-provider.tsx +0 -67
  597. package/2/apps/native/src/translations/ar.json +0 -394
  598. package/2/apps/native/src/translations/de.json +0 -394
  599. package/2/apps/native/src/translations/en.json +0 -394
  600. package/2/apps/native/src/translations/es.json +0 -394
  601. package/2/apps/native/src/translations/fr.json +0 -394
  602. package/2/apps/native/src/types/flash-list.d.ts +0 -3
  603. package/2/apps/native/src/types/index.ts +0 -3
  604. package/2/apps/native/src/types/react-native-reanimated.d.ts +0 -5
  605. package/2/apps/native/tailwind.config.js +0 -57
  606. package/2/apps/native/targets/widget/AppIntent.swift +0 -46
  607. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@1x.png +0 -0
  608. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@2x.png +0 -0
  609. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-20x20@3x.png +0 -0
  610. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@1x.png +0 -0
  611. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@2x.png +0 -0
  612. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-29x29@3x.png +0 -0
  613. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@1x.png +0 -0
  614. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@2x.png +0 -0
  615. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-40x40@3x.png +0 -0
  616. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@2x.png +0 -0
  617. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-60x60@3x.png +0 -0
  618. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@1x.png +0 -0
  619. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-76x76@2x.png +0 -0
  620. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/App-Icon-83.5x83.5@2x.png +0 -0
  621. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/Contents.json +0 -122
  622. package/2/apps/native/targets/widget/Assets.xcassets/AppIcon.appiconset/ItunesArtwork@2x.png +0 -0
  623. package/2/apps/native/targets/widget/CalorieTrackerWidget.swift +0 -424
  624. package/2/apps/native/targets/widget/HabitTrackerWidget.swift +0 -305
  625. package/2/apps/native/targets/widget/Info.plist +0 -11
  626. package/2/apps/native/targets/widget/WidgetLiveActivity.swift +0 -75
  627. package/2/apps/native/targets/widget/expo-target.config.js +0 -10
  628. package/2/apps/native/targets/widget/generated.entitlements +0 -5
  629. package/2/apps/native/targets/widget/index.swift +0 -18
  630. package/2/apps/native/targets/widget/widgets.swift +0 -96
  631. package/2/apps/native/tsconfig.json +0 -88
  632. package/2/apps/native/vitest.config.mts +0 -14
  633. package/2/apps/web/README.md +0 -36
  634. package/2/apps/web/app/favicon.ico +0 -0
  635. package/2/apps/web/app/globals.css +0 -122
  636. package/2/apps/web/app/layout.tsx +0 -38
  637. package/2/apps/web/app/page.tsx +0 -35
  638. package/2/apps/web/app/users/page.tsx +0 -301
  639. package/2/apps/web/components/AdminDashboard.tsx +0 -336
  640. package/2/apps/web/components/AppleLogo.tsx +0 -15
  641. package/2/apps/web/components/GitHubLogo.tsx +0 -11
  642. package/2/apps/web/components/GoogleLogo.tsx +0 -23
  643. package/2/apps/web/components/Layout.tsx +0 -77
  644. package/2/apps/web/components/ThemeToggle.tsx +0 -23
  645. package/2/apps/web/components/UserMenu.tsx +0 -66
  646. package/2/apps/web/components/auth/CodeInput.tsx +0 -24
  647. package/2/apps/web/components/auth/ResetPasswordWithEmailCode.tsx +0 -85
  648. package/2/apps/web/components/auth/SignInFormEmailCode.tsx +0 -72
  649. package/2/apps/web/components/auth/SignInFormEmailLink.tsx +0 -81
  650. package/2/apps/web/components/auth/SignInFormPassword.tsx +0 -17
  651. package/2/apps/web/components/auth/SignInFormPasswordAndCustomField.tsx +0 -42
  652. package/2/apps/web/components/auth/SignInFormPasswordAndResetViaCode.tsx +0 -32
  653. package/2/apps/web/components/auth/SignInFormPasswordAndVerifyViaCode.tsx +0 -86
  654. package/2/apps/web/components/auth/SignInFormPhoneCode.tsx +0 -89
  655. package/2/apps/web/components/auth/SignInFormsShowcase.tsx +0 -64
  656. package/2/apps/web/components/auth/SignInMethodDivider.tsx +0 -17
  657. package/2/apps/web/components/auth/SignInWithEmailCode.tsx +0 -49
  658. package/2/apps/web/components/auth/SignInWithOAuth.tsx +0 -16
  659. package/2/apps/web/components/auth/SignInWithPassword.tsx +0 -100
  660. package/2/apps/web/components/auth/oauth/SignInWithApple.tsx +0 -27
  661. package/2/apps/web/components/auth/oauth/SignInWithGitHub.tsx +0 -27
  662. package/2/apps/web/components/auth/oauth/SignInWithGoogle.tsx +0 -27
  663. package/2/apps/web/components/ui/button.tsx +0 -60
  664. package/2/apps/web/components/ui/card.tsx +0 -92
  665. package/2/apps/web/components/ui/dialog.tsx +0 -143
  666. package/2/apps/web/components/ui/dropdown-menu.tsx +0 -257
  667. package/2/apps/web/components/ui/input-otp.tsx +0 -77
  668. package/2/apps/web/components/ui/input.tsx +0 -21
  669. package/2/apps/web/components/ui/skeleton.tsx +0 -13
  670. package/2/apps/web/components/ui/tabs.tsx +0 -66
  671. package/2/apps/web/components/ui/toast.tsx +0 -130
  672. package/2/apps/web/components/ui/toaster.tsx +0 -36
  673. package/2/apps/web/components/ui/toggle-group.tsx +0 -83
  674. package/2/apps/web/components/ui/toggle.tsx +0 -47
  675. package/2/apps/web/components/ui/use-toast.ts +0 -192
  676. package/2/apps/web/components.json +0 -22
  677. package/2/apps/web/eslint.config.mjs +0 -18
  678. package/2/apps/web/lib/convex-provider.tsx +0 -18
  679. package/2/apps/web/lib/utils.ts +0 -6
  680. package/2/apps/web/next.config.ts +0 -7
  681. package/2/apps/web/package.json +0 -46
  682. package/2/apps/web/postcss.config.mjs +0 -7
  683. package/2/apps/web/public/file.svg +0 -1
  684. package/2/apps/web/public/globe.svg +0 -1
  685. package/2/apps/web/public/next.svg +0 -1
  686. package/2/apps/web/public/vercel.svg +0 -1
  687. package/2/apps/web/public/window.svg +0 -1
  688. package/2/apps/web/tsconfig.json +0 -34
  689. package/2/bts.jsonc +0 -21
  690. package/2/commitlint.config.js +0 -1
  691. package/2/eslint.config.mjs +0 -182
  692. package/2/lint-staged.config.js +0 -16
  693. package/2/package.json +0 -64
  694. package/2/packages/backend/.env.example +0 -20
  695. package/2/packages/backend/convex/README.md +0 -90
  696. package/2/packages/backend/convex/_generated/api.d.ts +0 -2599
  697. package/2/packages/backend/convex/_generated/api.js +0 -23
  698. package/2/packages/backend/convex/_generated/dataModel.d.ts +0 -60
  699. package/2/packages/backend/convex/_generated/server.d.ts +0 -149
  700. package/2/packages/backend/convex/_generated/server.js +0 -90
  701. package/2/packages/backend/convex/agents.ts +0 -116
  702. package/2/packages/backend/convex/auth.config.ts +0 -8
  703. package/2/packages/backend/convex/auth.ts +0 -103
  704. package/2/packages/backend/convex/authCustomEmailOtpProvider.ts +0 -175
  705. package/2/packages/backend/convex/authOtp.ts +0 -144
  706. package/2/packages/backend/convex/authPasswordReset.ts +0 -367
  707. package/2/packages/backend/convex/authPasswordResetActions.ts +0 -150
  708. package/2/packages/backend/convex/chatbot/index.ts +0 -30
  709. package/2/packages/backend/convex/chatbotAgent.ts +0 -1085
  710. package/2/packages/backend/convex/chatbotHistory.ts +0 -307
  711. package/2/packages/backend/convex/convex.config.ts +0 -13
  712. package/2/packages/backend/convex/deviceGrants.ts +0 -58
  713. package/2/packages/backend/convex/grantFunctions.ts +0 -444
  714. package/2/packages/backend/convex/http.ts +0 -8
  715. package/2/packages/backend/convex/imageGeneration/index.ts +0 -12
  716. package/2/packages/backend/convex/imageGeneratorFunctions.ts +0 -290
  717. package/2/packages/backend/convex/lib/ai/analysisConfigs.ts +0 -257
  718. package/2/packages/backend/convex/lib/ai/config.ts +0 -71
  719. package/2/packages/backend/convex/lib/ai/geminiAdapter.ts +0 -43
  720. package/2/packages/backend/convex/lib/ai/openaiAdapter.ts +0 -43
  721. package/2/packages/backend/convex/lib/ai/schemas.ts +0 -79
  722. package/2/packages/backend/convex/lib/config.ts +0 -111
  723. package/2/packages/backend/convex/lib/rateLimit.ts +0 -100
  724. package/2/packages/backend/convex/lib/telemetry.ts +0 -29
  725. package/2/packages/backend/convex/paymentFunctions.ts +0 -119
  726. package/2/packages/backend/convex/payments/index.ts +0 -13
  727. package/2/packages/backend/convex/pushNotificationFunctions.ts +0 -342
  728. package/2/packages/backend/convex/ragKnowledge.ts +0 -714
  729. package/2/packages/backend/convex/rateLimit.ts +0 -13
  730. package/2/packages/backend/convex/recordingFunctions.ts +0 -98
  731. package/2/packages/backend/convex/reportFunctions.ts +0 -344
  732. package/2/packages/backend/convex/reporting/index.ts +0 -9
  733. package/2/packages/backend/convex/router.ts +0 -81
  734. package/2/packages/backend/convex/schema.ts +0 -237
  735. package/2/packages/backend/convex/shared/email.ts +0 -172
  736. package/2/packages/backend/convex/shared/files.ts +0 -96
  737. package/2/packages/backend/convex/shared/index.ts +0 -17
  738. package/2/packages/backend/convex/shared/templates/PasswordResetEmail.tsx +0 -72
  739. package/2/packages/backend/convex/shared/templates/VerificationCodeEmail.tsx +0 -65
  740. package/2/packages/backend/convex/sharedUsers.ts +0 -48
  741. package/2/packages/backend/convex/tools/index.ts +0 -18
  742. package/2/packages/backend/convex/tools/knowledgeRetrieval.ts +0 -92
  743. package/2/packages/backend/convex/tools/tavilySearch.ts +0 -83
  744. package/2/packages/backend/convex/tools/userProfile.ts +0 -72
  745. package/2/packages/backend/convex/tsconfig.json +0 -25
  746. package/2/packages/backend/convex/users.ts +0 -54
  747. package/2/packages/backend/index.ts +0 -20
  748. package/2/packages/backend/package.json +0 -32
  749. package/2/packages/ui/README.md +0 -63
  750. package/2/packages/ui/index.ts +0 -1
  751. package/2/packages/ui/package.json +0 -21
  752. package/2/packages/ui/src/components/SharedButton.tsx +0 -31
  753. package/2/packages/ui/src/components/SharedCard.tsx +0 -48
  754. package/2/packages/ui/src/components/index.ts +0 -2
  755. package/2/packages/ui/tsconfig.json +0 -10
  756. package/2/pnpm-lock.yaml +0 -23292
  757. package/2/pnpm-workspace.yaml +0 -3
  758. package/2/scripts/i18next-syntax-validation.js +0 -1
  759. package/2/tsconfig.json +0 -43
  760. package/2/turbo.json +0 -33
  761. package/2/vercel.json +0 -6
  762. package/2/vf-agent/agent-teams/team-vibefast.yaml +0 -14
  763. package/2/vf-agent/agents/analyst.md +0 -53
  764. package/2/vf-agent/agents/architect.md +0 -105
  765. package/2/vf-agent/agents/dev.md +0 -40
  766. package/2/vf-agent/agents/orchestrator.md +0 -181
  767. package/2/vf-agent/agents/pm.md +0 -48
  768. package/2/vf-agent/agents/po.md +0 -38
  769. package/2/vf-agent/agents/qa.md +0 -30
  770. package/2/vf-agent/agents/sm.md +0 -38
  771. package/2/vf-agent/agents/ux-expert.md +0 -33
  772. package/2/vf-agent/checklists/po-master-checklist.md +0 -73
  773. package/2/vf-agent/checklists/story-dod-checklist.md +0 -37
  774. package/2/vf-agent/core-config.yaml +0 -43
  775. package/2/vf-agent/data/knowledge_base/backend/convex-advanced.md +0 -43
  776. package/2/vf-agent/data/knowledge_base/backend/convex-database.md +0 -53
  777. package/2/vf-agent/data/knowledge_base/backend/convex-main.md +0 -65
  778. package/2/vf-agent/data/knowledge_base/backend/full-guidelines.md +0 -795
  779. package/2/vf-agent/data/knowledge_base/coding-standards.md +0 -253
  780. package/2/vf-agent/data/knowledge_base/frontend/full-guidelines.md +0 -254
  781. package/2/vf-agent/data/knowledge_base/frontend/image-handling.md +0 -48
  782. package/2/vf-agent/data/knowledge_base/frontend/react-native-main.md +0 -24
  783. package/2/vf-agent/data/knowledge_base/frontend/ui-and-styling.md +0 -169
  784. package/2/vf-agent/data/knowledge_base/general-principles.md +0 -26
  785. package/2/vf-agent/data/knowledge_base/master-rulebook.md +0 -42
  786. package/2/vf-agent/data/knowledge_base/starter-docs/audio-recorder-reference.md +0 -98
  787. package/2/vf-agent/data/knowledge_base/starter-docs/authentication-reference.md +0 -155
  788. package/2/vf-agent/data/knowledge_base/starter-docs/charts-reference.md +0 -149
  789. package/2/vf-agent/data/knowledge_base/starter-docs/chatbot-reference.md +0 -123
  790. package/2/vf-agent/data/knowledge_base/starter-docs/feature-reference-index.md +0 -211
  791. package/2/vf-agent/data/knowledge_base/starter-docs/features-overview.md +0 -221
  792. package/2/vf-agent/data/knowledge_base/starter-docs/image-analyzer-reference.md +0 -118
  793. package/2/vf-agent/data/knowledge_base/starter-docs/image-generator-reference.md +0 -110
  794. package/2/vf-agent/data/knowledge_base/starter-docs/index.md +0 -28
  795. package/2/vf-agent/data/knowledge_base/starter-docs/onboarding-reference.md +0 -96
  796. package/2/vf-agent/data/knowledge_base/starter-docs/payments-reference.md +0 -148
  797. package/2/vf-agent/data/knowledge_base/starter-docs/prd.md +0 -82
  798. package/2/vf-agent/data/knowledge_base/starter-docs/push-notifications-reference.md +0 -453
  799. package/2/vf-agent/data/knowledge_base/starter-docs/quick-actions-reference.md +0 -253
  800. package/2/vf-agent/data/knowledge_base/starter-docs/quiz-reference.md +0 -169
  801. package/2/vf-agent/data/knowledge_base/starter-docs/settings-reference.md +0 -146
  802. package/2/vf-agent/data/knowledge_base/starter-docs/tech-stack.md +0 -159
  803. package/2/vf-agent/data/knowledge_base/starter-docs/tracker-app-reference.md +0 -150
  804. package/2/vf-agent/data/knowledge_base/starter-docs/unified-project-structure.md +0 -98
  805. package/2/vf-agent/data/knowledge_base/testing/backend-testing.md +0 -54
  806. package/2/vf-agent/data/knowledge_base/testing/frontend-testing.md +0 -71
  807. package/2/vf-agent/data/knowledge_base/testing/testing-strategy.md +0 -31
  808. package/2/vf-agent/tasks/advanced-elicitation.md +0 -117
  809. package/2/vf-agent/tasks/brownfield-create-epic.md +0 -160
  810. package/2/vf-agent/tasks/create-deep-research-prompt.md +0 -278
  811. package/2/vf-agent/tasks/create-doc.md +0 -42
  812. package/2/vf-agent/tasks/create-story.md +0 -43
  813. package/2/vf-agent/tasks/document-project.md +0 -343
  814. package/2/vf-agent/tasks/facilitate-brainstorming-session.md +0 -136
  815. package/2/vf-agent/tasks/index-docs.md +0 -173
  816. package/2/vf-agent/tasks/kb-mode-interaction.md +0 -75
  817. package/2/vf-agent/tasks/review-story.md +0 -154
  818. package/2/vf-agent/tasks/shard-doc.md +0 -185
  819. package/2/vf-agent/tasks/troubleshoot-issue.md +0 -65
  820. package/2/vf-agent/tasks/validate-next-story.md +0 -47
  821. package/2/vf-agent/templates/brainstorming-output-tmpl.yaml +0 -156
  822. package/2/vf-agent/templates/brownfield-architecture-tmpl.yaml +0 -111
  823. package/2/vf-agent/templates/brownfield-prd-tmpl.yaml +0 -247
  824. package/2/vf-agent/templates/competitor-analysis-tmpl.yaml +0 -293
  825. package/2/vf-agent/templates/market-research-tmpl.yaml +0 -252
  826. package/2/vf-agent/templates/project-brief-tmpl.yaml +0 -221
  827. package/2/vf-agent/templates/story-tmpl.yaml +0 -143
  828. package/recipes/0/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -444
  829. package/recipes/0/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -355
  830. package/recipes/0/apps/native/src/components/advanced-ui/timeline/types.ts +0 -31
  831. package/recipes/wake-word/scripts/download-vosk-model.mjs +0 -121
  832. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/animated-chip.tsx +0 -0
  833. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/chip.tsx +0 -0
  834. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/demo.tsx +0 -0
  835. /package/{2 → recipes/animated-chip}/apps/native/src/components/advanced-ui/chip/types.ts +0 -0
  836. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/animated-switch.tsx +0 -0
  837. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/demo.tsx +0 -0
  838. /package/{2 → recipes/animated-switch}/apps/native/src/components/advanced-ui/switch/types.ts +0 -0
  839. /package/{2 → recipes/glowing-button}/apps/native/src/components/advanced-ui/buttons/demo.tsx +0 -0
  840. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/front.jpg +0 -0
  841. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/side.jpg +0 -0
  842. /package/{2 → recipes/image-analysis}/apps/native/assets/features/image-analyzer/threeQuarter.jpg +0 -0
  843. /package/{2 → recipes/image-analysis}/apps/native/src/api-client/image-analyzer.ts +0 -0
  844. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/_layout.tsx +0 -0
  845. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/analysis-options.tsx +0 -0
  846. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/camera.tsx +0 -0
  847. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/index.tsx +0 -0
  848. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/loading.tsx +0 -0
  849. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/results.tsx +0 -0
  850. /package/{2 → recipes/image-analysis}/apps/native/src/app/(root)/(protected)/analysis/[type]/trait-details.tsx +0 -0
  851. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/analysis-options-screen.tsx +0 -0
  852. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/camera.tsx +0 -0
  853. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/image-capture-screen.tsx +0 -0
  854. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading-screen.tsx +0 -0
  855. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/loading.tsx +0 -0
  856. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/results.tsx +0 -0
  857. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/trait-details.tsx +0 -0
  858. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-analysis-data.ts +0 -0
  859. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/app/use-results-screen.ts +0 -0
  860. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-badge.tsx +0 -0
  861. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-card.tsx +0 -0
  862. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievement-unlocked-modal.tsx +0 -0
  863. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/achievements-section.tsx +0 -0
  864. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/advice-list.tsx +0 -0
  865. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/circular-progress.tsx +0 -0
  866. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/content-card.tsx +0 -0
  867. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/error-state.tsx +0 -0
  868. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/index.ts +0 -0
  869. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/loading-state.tsx +0 -0
  870. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/profile-image.tsx +0 -0
  871. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/results-header.tsx +0 -0
  872. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/score-display.tsx +0 -0
  873. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/share-options-modal.tsx +0 -0
  874. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/components/results/traits-grid.tsx +0 -0
  875. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/analysis-config.ts +0 -0
  876. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/config/master-analysis-config.ts +0 -0
  877. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/index.ts +0 -0
  878. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-analysis.ts +0 -0
  879. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/hooks/use-image-analysis.ts +0 -0
  880. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/analysis-service.ts +0 -0
  881. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/share-service.ts +0 -0
  882. /package/{2 → recipes/image-analysis}/apps/native/src/features/image-analyzer/services/trait-details-service.ts +0 -0
  883. /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysis/index.ts +0 -0
  884. /package/{2 → recipes/image-analysis}/packages/backend/convex/imageAnalysisFunctions.ts +0 -0
  885. /package/{2 → recipes/image-analysis}/packages/backend/convex/lib/ai/imageAnalysisAdapter.ts +0 -0
  886. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/stepper-button.tsx +0 -0
  887. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/button/types.ts +0 -0
  888. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/stepper-content.tsx +0 -0
  889. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/content/types.ts +0 -0
  890. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/stepper-value.tsx +0 -0
  891. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/children/value/types.ts +0 -0
  892. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/stepper-context.ts +0 -0
  893. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/context/types.ts +0 -0
  894. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/demo.tsx +0 -0
  895. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/index.ts +0 -0
  896. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/stepper.tsx +0 -0
  897. /package/{2 → recipes/number-stepper}/apps/native/src/components/advanced-ui/stepper/types.ts +0 -0
  898. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/animated-progress-bar.tsx +0 -0
  899. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/dropdown-picker-page.tsx +0 -0
  900. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle-page.tsx +0 -0
  901. /package/{2 → recipes/progress-circle}/apps/native/src/components/advanced-ui/progress-bars/progress-circle.tsx +0 -0
  902. /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider-page.tsx +0 -0
  903. /package/{2 → recipes/swipe-slider}/apps/native/src/components/advanced-ui/sliders/swipe-slider.tsx +0 -0
  904. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/demo.tsx +0 -0
  905. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/timeline-view.tsx +0 -0
  906. /package/{2 → recipes/timeline}/apps/native/src/components/advanced-ui/timeline/types.ts +0 -0
  907. /package/{2 → recipes/wake-word}/apps/native/scripts/download-vosk-model.mjs +0 -0
@@ -1,290 +0,0 @@
1
- import { getAuthUserId } from '@convex-dev/auth/server';
2
- import { experimental_generateImage as generateImage } from 'ai';
3
- import { createOpenAI } from '@ai-sdk/openai';
4
- import { GoogleGenAI } from '@google/genai';
5
- import { v } from 'convex/values';
6
-
7
- import { internal } from './_generated/api';
8
- import type { Id } from './_generated/dataModel';
9
- import { action, internalMutation } from './_generated/server';
10
-
11
- const DEFAULT_OPENAI_MODEL = 'dall-e-3';
12
- const DEFAULT_GEMINI_MODEL = 'gemini-2.5-flash-image';
13
-
14
- const SUPPORTED_OPENAI_MODELS = new Set<string>(['dall-e-3', 'gpt-image-1']);
15
- const SUPPORTED_GEMINI_MODELS = new Set<string>([
16
- 'gemini-2.5-flash-image',
17
- 'gemini-2.0-flash-image',
18
- ]);
19
-
20
- type SupportedProvider = 'openai' | 'gemini';
21
-
22
- const isSupportedProvider = (value: string): value is SupportedProvider =>
23
- value === 'openai' || value === 'gemini';
24
-
25
- const resolveProvider = (
26
- provider: string | null | undefined,
27
- ): SupportedProvider => {
28
- if (provider && isSupportedProvider(provider)) {
29
- return provider;
30
- }
31
- return 'gemini';
32
- };
33
-
34
- const resolveModel = (
35
- provider: SupportedProvider,
36
- model: string | null | undefined,
37
- ): string => {
38
- if (provider === 'openai') {
39
- return model && SUPPORTED_OPENAI_MODELS.has(model)
40
- ? model
41
- : DEFAULT_OPENAI_MODEL;
42
- }
43
- return model && SUPPORTED_GEMINI_MODELS.has(model)
44
- ? model
45
- : DEFAULT_GEMINI_MODEL;
46
- };
47
-
48
- const generateWithOpenAI = async (prompt: string, model: string) => {
49
- const apiKey = process.env.OPENAI_API_KEY;
50
- if (!apiKey) {
51
- throw new Error('OPENAI_API_KEY environment variable is required');
52
- }
53
-
54
- const openai = createOpenAI({ apiKey });
55
- const result = await generateImage({
56
- model: openai.image(model),
57
- prompt,
58
- size: '1024x1024',
59
- });
60
-
61
- const imageResult = result.image ?? result.images?.[0];
62
- if (!imageResult) {
63
- throw new Error('OpenAI image generation did not return any image data.');
64
- }
65
-
66
- const mimeType = imageResult.mimeType ?? 'image/png';
67
- const base64Data =
68
- imageResult.base64 ??
69
- (imageResult.uint8Array
70
- ? Buffer.from(imageResult.uint8Array).toString('base64')
71
- : null);
72
-
73
- if (!base64Data) {
74
- throw new Error('OpenAI image generation returned no image payload.');
75
- }
76
-
77
- return {
78
- imageDataUri: `data:${mimeType};base64,${base64Data}`,
79
- mimeType,
80
- };
81
- };
82
-
83
- const generateWithGemini = async (prompt: string, model: string) => {
84
- const apiKey = process.env.GEMINI_API_KEY;
85
- if (!apiKey) {
86
- throw new Error('GEMINI_API_KEY environment variable is required');
87
- }
88
-
89
- const ai = new GoogleGenAI({ apiKey });
90
- const response = await ai.models.generateContentStream({
91
- model,
92
- config: {
93
- responseModalities: ['IMAGE', 'TEXT'],
94
- // imageConfig: {
95
- // imageSize: "1K",
96
- // },
97
- },
98
- contents: [
99
- {
100
- role: 'user',
101
- parts: [
102
- {
103
- text: prompt,
104
- },
105
- ],
106
- },
107
- ],
108
- });
109
-
110
- let imageInlineData: {
111
- data?: string;
112
- mimeType?: string;
113
- } | null = null;
114
- const textChunks: string[] = [];
115
-
116
- for await (const chunk of response) {
117
- const parts = chunk.candidates?.[0]?.content?.parts ?? [];
118
- for (const part of parts) {
119
- if (part.inlineData) {
120
- imageInlineData = part.inlineData;
121
- break;
122
- }
123
- if (part.text) {
124
- textChunks.push(part.text);
125
- }
126
- }
127
- if (imageInlineData) {
128
- break;
129
- }
130
- }
131
-
132
- if (!imageInlineData?.data) {
133
- const textSummary = textChunks.join(' ').trim();
134
- throw new Error(
135
- textSummary
136
- ? `Gemini image generation did not return any image data. Response: ${textSummary}`
137
- : 'Gemini image generation did not return any image data.',
138
- );
139
- }
140
-
141
- const mimeType = imageInlineData.mimeType ?? 'image/png';
142
- const base64Data = imageInlineData.data;
143
-
144
- return {
145
- imageDataUri: `data:${mimeType};base64,${base64Data}`,
146
- mimeType,
147
- };
148
- };
149
-
150
- export const saveImageRecord = internalMutation({
151
- args: v.object({
152
- userId: v.id('users'),
153
- prompt: v.string(),
154
- storageId: v.id('_storage'),
155
- provider: v.string(),
156
- model: v.string(),
157
- mimeType: v.optional(v.string()),
158
- }),
159
- returns: v.id('generatedImages'),
160
- handler: async (
161
- ctx,
162
- { userId, prompt, storageId, provider, model, mimeType },
163
- ) => {
164
- console.log(`[saveImageRecord] Saving image record for user: ${userId}`);
165
-
166
- const imageRecordId = await ctx.db.insert('generatedImages', {
167
- userId,
168
- prompt,
169
- storageId,
170
- provider,
171
- model,
172
- mimeType,
173
- });
174
-
175
- console.log(
176
- `[saveImageRecord] Image record created with ID: ${imageRecordId}`,
177
- );
178
- return imageRecordId;
179
- },
180
- });
181
-
182
- /**
183
- * Generate an image based on user prompt and provider selection
184
- */
185
- export const generateImageAction = action({
186
- args: v.object({
187
- prompt: v.string(),
188
- provider: v.string(), // supports 'openai' and 'gemini'
189
- model: v.string(),
190
- }),
191
- returns: v.object({
192
- imageDataUri: v.string(),
193
- mimeType: v.string(),
194
- prompt: v.string(),
195
- provider: v.string(),
196
- model: v.string(),
197
- storageId: v.optional(v.id('_storage')),
198
- imageId: v.optional(v.id('generatedImages')),
199
- }),
200
- handler: async (ctx, { prompt, provider, model }) => {
201
- // Verify user authentication
202
- const identity = await ctx.auth.getUserIdentity();
203
- if (!identity) {
204
- throw new Error(
205
- 'Unauthenticated: User must be logged in to generate images',
206
- );
207
- }
208
-
209
- const userId = await getAuthUserId(ctx);
210
- if (!userId) {
211
- throw new Error('User record not found for authenticated identity');
212
- }
213
- console.log(`[generateImageAction] Provider: ${provider}, Model: ${model}`);
214
- const resolvedProvider = resolveProvider(provider);
215
- const resolvedModel = resolveModel(resolvedProvider, model);
216
-
217
- console.log(
218
- `[generateImageAction] Starting image generation | provider=${resolvedProvider}, model=${resolvedModel}`,
219
- );
220
-
221
- try {
222
- const result =
223
- resolvedProvider === 'openai'
224
- ? await generateWithOpenAI(prompt, resolvedModel)
225
- : await generateWithGemini(prompt, resolvedModel);
226
-
227
- console.log(
228
- `[generateImageAction] Image generated successfully. provider=${resolvedProvider}, model=${resolvedModel}, mimeType=${result.mimeType}, dataUri length=${result.imageDataUri.length}`,
229
- );
230
-
231
- let storageId: Id<'_storage'> | null = null;
232
- try {
233
- const base64Match = result.imageDataUri.match(
234
- /^data:(?<mime>[^;]+);base64,(?<payload>.+)$/,
235
- );
236
- if (!base64Match?.groups?.payload) {
237
- throw new Error('Invalid image data URI returned by provider');
238
- }
239
- const buffer = Buffer.from(base64Match.groups.payload, 'base64');
240
- const uint8Array = new Uint8Array(buffer);
241
- const blob = new Blob([uint8Array], { type: result.mimeType });
242
- storageId = await ctx.storage.store(blob);
243
- } catch (storageError) {
244
- console.error(
245
- '[generateImageAction] Failed to persist generated image to storage',
246
- storageError,
247
- );
248
- }
249
-
250
- let imageRecordId: Id<'generatedImages'> | null = null;
251
- if (storageId) {
252
- try {
253
- imageRecordId = await ctx.runMutation(
254
- internal.imageGeneration.index.saveImageRecord,
255
- {
256
- userId,
257
- prompt,
258
- storageId,
259
- provider: resolvedProvider,
260
- model: resolvedModel,
261
- mimeType: result.mimeType,
262
- },
263
- );
264
- } catch (recordError) {
265
- console.error(
266
- '[generateImageAction] Failed to save generated image metadata',
267
- recordError,
268
- );
269
- }
270
- }
271
-
272
- return {
273
- imageDataUri: result.imageDataUri,
274
- mimeType: result.mimeType,
275
- prompt,
276
- provider: resolvedProvider,
277
- model: resolvedModel,
278
- storageId: storageId ?? undefined,
279
- imageId: imageRecordId ?? undefined,
280
- };
281
- } catch (error) {
282
- console.error('[generateImageAction] Error generating image:', error);
283
- throw new Error(
284
- `Image generation failed: ${
285
- error instanceof Error ? error.message : 'Unknown error'
286
- }`,
287
- );
288
- }
289
- },
290
- });
@@ -1,257 +0,0 @@
1
- import { z } from 'zod';
2
-
3
- /**
4
- * Generic trait analysis schema
5
- */
6
- export const TraitAnalysisSchema = z.object({
7
- score: z.number().min(0).max(100).describe('Score for this trait (0-100)'),
8
- feedback: z.string().describe('Specific feedback about this trait'),
9
- strengths: z.array(z.string()).describe('Key strengths for this trait'),
10
- improvements: z
11
- .array(z.string())
12
- .describe('Suggested improvements for this trait'),
13
- });
14
-
15
- /**
16
- * Base analysis configuration interface
17
- */
18
- export interface AnalysisConfig {
19
- id: string;
20
- name: string;
21
- description: string;
22
- traits: Record<string, TraitConfig>;
23
- prompts: {
24
- base: string;
25
- instructions: string;
26
- };
27
- schema: z.ZodObject<any>;
28
- }
29
-
30
- /**
31
- * Trait configuration interface
32
- */
33
- export interface TraitConfig {
34
- name: string;
35
- description: string;
36
- instructions: string;
37
- }
38
-
39
- /**
40
- * Face Analysis Configuration
41
- */
42
- export const FACE_ANALYSIS_CONFIG: AnalysisConfig = {
43
- id: 'face_analysis',
44
- name: 'Facial Analysis',
45
- description: 'Comprehensive facial feature analysis',
46
- traits: {
47
- jawline: {
48
- name: 'Jawline',
49
- description: 'Definition, structure, and contouring',
50
- instructions: 'Analyze jawline definition, structure, and contouring',
51
- },
52
- skinHealth: {
53
- name: 'Skin Health',
54
- description: 'Clarity, texture, tone, and overall health',
55
- instructions: 'Assess skin clarity, texture, tone, and overall health',
56
- },
57
- facialSymmetry: {
58
- name: 'Facial Symmetry',
59
- description: 'Balance and proportions across facial features',
60
- instructions: 'Evaluate facial symmetry and proportional balance',
61
- },
62
- eyeArea: {
63
- name: 'Eye Area',
64
- description: 'Shape, clarity, expressiveness, and overall appeal',
65
- instructions: 'Analyze eye shape, clarity, and expressiveness',
66
- },
67
- noseStructure: {
68
- name: 'Nose Structure',
69
- description: 'Proportions, definition, and harmony with other features',
70
- instructions: 'Assess nose proportions and structural harmony',
71
- },
72
- lipFullness: {
73
- name: 'Lip Fullness',
74
- description: 'Shape, fullness, and definition',
75
- instructions: 'Evaluate lip shape, fullness, and definition',
76
- },
77
- },
78
- prompts: {
79
- base: 'You are an expert facial analysis AI. Analyze the provided image(s) and provide a comprehensive facial analysis.',
80
- instructions: `Please analyze the following facial traits and provide scores (0-100), specific feedback, strengths, and improvement suggestions for each:
81
-
82
- For each trait, provide:
83
- - A score from 0-100 (where 70+ is good, 80+ is very good, 90+ is excellent)
84
- - Specific feedback about what you observe
85
- - Key strengths to highlight
86
- - Constructive improvement suggestions
87
-
88
- Also provide:
89
- - An overall score (average of all traits)
90
- - A comprehensive analysis summary
91
- - Actionable recommendations for enhancement
92
- - Your confidence level in the analysis (0-1)`,
93
- },
94
- schema: z.object({
95
- overallScore: z.number().min(0).max(100).describe('Overall analysis score'),
96
- overallMessage: z.string().describe('Comprehensive analysis summary'),
97
- confidence: z
98
- .number()
99
- .min(0)
100
- .max(1)
101
- .describe('AI confidence in the analysis'),
102
- traitScores: z.object({
103
- jawline: TraitAnalysisSchema,
104
- skinHealth: TraitAnalysisSchema,
105
- facialSymmetry: TraitAnalysisSchema,
106
- eyeArea: TraitAnalysisSchema,
107
- noseStructure: TraitAnalysisSchema,
108
- lipFullness: TraitAnalysisSchema,
109
- }),
110
- recommendations: z
111
- .array(z.string())
112
- .describe('Actionable recommendations for improvement'),
113
- analysisType: z.string().describe('Type of analysis performed'),
114
- processingTime: z
115
- .number()
116
- .describe('Time taken for analysis in milliseconds'),
117
- }),
118
- };
119
-
120
- /**
121
- * Registry of all available analysis configurations
122
- */
123
- export const ANALYSIS_CONFIGS: Record<string, AnalysisConfig> = {
124
- face_analysis: FACE_ANALYSIS_CONFIG,
125
- };
126
-
127
- /**
128
- * Get analysis configuration by ID
129
- */
130
- export function getAnalysisConfig(analysisId: string): AnalysisConfig {
131
- const config = ANALYSIS_CONFIGS[analysisId];
132
- if (!config) {
133
- throw new Error(`Unknown analysis type: ${analysisId}`);
134
- }
135
- return config;
136
- }
137
-
138
- /**
139
- * Build analysis prompt for any configuration
140
- */
141
- export function buildGenericAnalysisPrompt(
142
- config: AnalysisConfig,
143
- preferences: { goal: string; feedbackStyle: string },
144
- imageCount: number,
145
- ): string {
146
- const traitInstructions = Object.entries(config.traits)
147
- .map(
148
- ([, trait], index) =>
149
- `${index + 1}. **${trait.name}**: ${trait.description}`,
150
- )
151
- .join('\n');
152
-
153
- const basePrompt = `${config.prompts.base}
154
-
155
- Analysis Goal: ${preferences.goal}
156
- Feedback Style: ${preferences.feedbackStyle}
157
-
158
- Analyze the provided ${imageCount} image(s):
159
-
160
- ${traitInstructions}
161
-
162
- ${config.prompts.instructions}
163
-
164
- `;
165
-
166
- // Add goal-specific guidance
167
- const goalGuidance = getGoalSpecificGuidance(preferences.goal);
168
- const styleGuidance = getStyleSpecificGuidance(preferences.feedbackStyle);
169
-
170
- return `${basePrompt}
171
-
172
- ${goalGuidance}
173
-
174
- ${styleGuidance}
175
-
176
- Be thorough, accurate, and ${preferences.feedbackStyle} in your analysis.`;
177
- }
178
-
179
- /**
180
- * Get goal-specific analysis guidance
181
- */
182
- function getGoalSpecificGuidance(goal: string): string {
183
- switch (goal.toLowerCase()) {
184
- case 'facial_beauty':
185
- case 'beauty':
186
- return 'Focus on aesthetic appeal, harmony between features, and overall attractiveness. Consider classical beauty standards while being inclusive of diverse features.';
187
-
188
- case 'skin_health':
189
- case 'health':
190
- return 'Prioritize health-related aspects: condition, quality, signs of wear or damage, and overall health indicators.';
191
-
192
- case 'facial_structure':
193
- case 'structure':
194
- return 'Emphasize structural elements, proportions, symmetry, and the geometric relationships between different components.';
195
-
196
- case 'overall_attractiveness':
197
- case 'attractiveness':
198
- return 'Provide a holistic assessment considering all factors that contribute to overall appeal, including harmony, uniqueness, and visual impact.';
199
-
200
- case 'condition':
201
- return 'Focus on the current condition, wear, maintenance, and overall state of the subject being analyzed.';
202
-
203
- default:
204
- return 'Provide a balanced analysis considering all aspects with equal weight.';
205
- }
206
- }
207
-
208
- /**
209
- * Get style-specific feedback guidance
210
- */
211
- function getStyleSpecificGuidance(style: string): string {
212
- switch (style.toLowerCase()) {
213
- case 'constructive':
214
- return 'Frame all feedback constructively, focusing on actionable improvements while highlighting existing strengths. Be encouraging and supportive.';
215
-
216
- case 'detailed':
217
- return 'Provide in-depth, technical analysis with specific observations. Include detailed explanations of your scoring rationale.';
218
-
219
- case 'encouraging':
220
- return 'Emphasize positive aspects and frame any suggestions for improvement in an uplifting, motivational manner. Build confidence.';
221
-
222
- case 'professional':
223
- return 'Maintain a clinical, objective tone similar to a professional consultation. Be precise and evidence-based.';
224
-
225
- default:
226
- return 'Provide balanced, honest feedback that is both informative and respectful.';
227
- }
228
- }
229
-
230
- /**
231
- * Create dynamic schema for any trait configuration
232
- */
233
- export function createDynamicSchema(traits: Record<string, TraitConfig>) {
234
- const traitSchemas: Record<string, typeof TraitAnalysisSchema> = {};
235
-
236
- Object.keys(traits).forEach((traitKey) => {
237
- traitSchemas[traitKey] = TraitAnalysisSchema;
238
- });
239
-
240
- return z.object({
241
- overallScore: z.number().min(0).max(100).describe('Overall analysis score'),
242
- overallMessage: z.string().describe('Comprehensive analysis summary'),
243
- confidence: z
244
- .number()
245
- .min(0)
246
- .max(1)
247
- .describe('AI confidence in the analysis'),
248
- traitScores: z.object(traitSchemas),
249
- recommendations: z
250
- .array(z.string())
251
- .describe('Actionable recommendations for improvement'),
252
- analysisType: z.string().describe('Type of analysis performed'),
253
- processingTime: z
254
- .number()
255
- .describe('Time taken for analysis in milliseconds'),
256
- });
257
- }
@@ -1,71 +0,0 @@
1
- /**
2
- * AI Configuration for Image Analysis
3
- * Provides configurable provider and model selection
4
- */
5
-
6
- export type AIProvider = 'openai' | 'gemini';
7
-
8
- export interface AIConfig {
9
- provider: AIProvider;
10
- model: string;
11
- temperature: number;
12
- maxTokens: number;
13
- }
14
-
15
- /**
16
- * Default AI configurations for different providers
17
- */
18
- export const AI_CONFIGS: Record<AIProvider, AIConfig> = {
19
- openai: {
20
- provider: 'openai',
21
- model: 'gpt-4o', // Latest GPT-4 with vision capabilities
22
- temperature: 0.3, // Lower temperature for more consistent analysis
23
- maxTokens: 2000,
24
- },
25
- gemini: {
26
- provider: 'gemini',
27
- model: 'gemini-1.5-pro', // Gemini Pro with vision capabilities
28
- temperature: 0.3,
29
- maxTokens: 2000,
30
- },
31
- } as const;
32
-
33
- /**
34
- * Get AI configuration based on environment or default
35
- */
36
- export function getAIConfig(): AIConfig {
37
- const provider = (process.env.AI_PROVIDER as AIProvider) || 'openai';
38
- const config = AI_CONFIGS[provider];
39
-
40
- // Allow model override via environment variable
41
- if (process.env.AI_MODEL) {
42
- config.model = process.env.AI_MODEL;
43
- }
44
-
45
- return config;
46
- }
47
-
48
- /**
49
- * Available analysis goals for image analysis
50
- */
51
- export const ANALYSIS_GOALS = {
52
- FACIAL_BEAUTY: 'facial_beauty',
53
- SKIN_HEALTH: 'skin_health',
54
- FACIAL_STRUCTURE: 'facial_structure',
55
- OVERALL_ATTRACTIVENESS: 'overall_attractiveness',
56
- } as const;
57
-
58
- export type AnalysisGoal = (typeof ANALYSIS_GOALS)[keyof typeof ANALYSIS_GOALS];
59
-
60
- /**
61
- * Available feedback styles
62
- */
63
- export const FEEDBACK_STYLES = {
64
- CONSTRUCTIVE: 'constructive',
65
- DETAILED: 'detailed',
66
- ENCOURAGING: 'encouraging',
67
- PROFESSIONAL: 'professional',
68
- } as const;
69
-
70
- export type FeedbackStyle =
71
- (typeof FEEDBACK_STYLES)[keyof typeof FEEDBACK_STYLES];
@@ -1,43 +0,0 @@
1
- import { createGoogleGenerativeAI } from '@ai-sdk/google';
2
- import { type CoreMessage, streamText } from 'ai';
3
-
4
- export interface GeminiStreamOptions {
5
- model?: string;
6
- temperature?: number;
7
- maxTokens?: number;
8
- }
9
-
10
- /**
11
- * Stream chat completion from Google Gemini using Vercel AI SDK
12
- */
13
- export async function streamGeminiChat(
14
- messages: CoreMessage[],
15
- options: GeminiStreamOptions = {},
16
- onFinish?: (result: any) => Promise<void>,
17
- ) {
18
- const {
19
- model = 'gemini-2.0-flash',
20
- temperature = 0.7,
21
- maxTokens = 1000,
22
- } = options;
23
-
24
- // Get API key from environment variables
25
- const apiKey = process.env.GEMINI_API_KEY;
26
- if (!apiKey) {
27
- throw new Error('GEMINI_API_KEY environment variable is required');
28
- }
29
-
30
- // Create Google provider with API key
31
- const googleProvider = createGoogleGenerativeAI({ apiKey });
32
-
33
- // Stream text generation
34
- const result = await streamText({
35
- model: googleProvider(model),
36
- messages,
37
- temperature,
38
- maxTokens,
39
- onFinish,
40
- });
41
-
42
- return result;
43
- }
@@ -1,43 +0,0 @@
1
- import { createOpenAI } from '@ai-sdk/openai';
2
- import { type CoreMessage, streamText } from 'ai';
3
-
4
- export interface OpenAIStreamOptions {
5
- model?: string;
6
- temperature?: number;
7
- maxTokens?: number;
8
- }
9
-
10
- /**
11
- * Stream chat completion from OpenAI using Vercel AI SDK
12
- */
13
- export async function streamOpenAIChat(
14
- messages: CoreMessage[],
15
- options: OpenAIStreamOptions = {},
16
- onFinish?: (result: any) => Promise<void>,
17
- ) {
18
- const {
19
- model = 'gpt-4.1-nano',
20
- temperature = 0.7,
21
- maxTokens = 1000,
22
- } = options;
23
-
24
- // Get API key from environment variables
25
- const apiKey = process.env.OPENAI_API_KEY;
26
- if (!apiKey) {
27
- throw new Error('OPENAI_API_KEY environment variable is required');
28
- }
29
-
30
- // Create OpenAI provider with API key
31
- const openaiProvider = createOpenAI({ apiKey });
32
-
33
- // Stream text generation
34
- const result = await streamText({
35
- model: openaiProvider(model),
36
- messages,
37
- temperature,
38
- maxTokens,
39
- onFinish,
40
- });
41
-
42
- return result;
43
- }