@agent-native/core 0.137.7 → 0.138.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 (446) hide show
  1. package/agent-native.eject.json +2 -0
  2. package/corpus/README.md +1 -1
  3. package/corpus/templates/analytics/.agents/skills/agent-native-docs/SKILL.md +23 -3
  4. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  5. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +15 -0
  6. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +23 -2
  7. package/corpus/templates/analytics/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  8. package/corpus/templates/analytics/AGENTS.md +2 -2
  9. package/corpus/templates/analytics/actions/get-first-party-analytics-health.ts +65 -0
  10. package/corpus/templates/analytics/actions/provider-api-catalog.ts +3 -6
  11. package/corpus/templates/analytics/actions/provider-api-docs.ts +3 -6
  12. package/corpus/templates/analytics/actions/provider-api-request.ts +3 -6
  13. package/corpus/templates/analytics/actions/query-agent-native-analytics.ts +3 -3
  14. package/corpus/templates/analytics/agent-native.json +12 -0
  15. package/corpus/templates/analytics/app/i18n-data.ts +162 -0
  16. package/corpus/templates/analytics/app/pages/DataSources.tsx +126 -1
  17. package/corpus/templates/analytics/changelog/2026-08-05-analytics-now-flags-neon-pressure-and-guides-high-volume-tra.md +6 -0
  18. package/corpus/templates/analytics/changelog/2026-08-05-first-party-analytics-uses-compact-rollups-for-faster-usage-.md +6 -0
  19. package/corpus/templates/analytics/server/db/schema.ts +52 -0
  20. package/corpus/templates/analytics/server/lib/credential-keys.ts +3 -0
  21. package/corpus/templates/analytics/server/lib/first-party-analytics-health.ts +397 -0
  22. package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +182 -0
  23. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +86 -15
  24. package/corpus/templates/analytics/server/lib/provider-api.ts +20 -1
  25. package/corpus/templates/analytics/server/lib/replay-storage.ts +1 -1
  26. package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
  27. package/corpus/templates/analytics/server/plugins/db.ts +60 -0
  28. package/corpus/templates/assets/.agents/skills/agent-native-docs/SKILL.md +23 -3
  29. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  30. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +23 -2
  31. package/corpus/templates/assets/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  32. package/corpus/templates/assets/agent-native.json +12 -0
  33. package/corpus/templates/assets/server/lib/generation.ts +8 -8
  34. package/corpus/templates/assets/server/lib/storage.ts +1 -1
  35. package/corpus/templates/assets/server/plugins/onboarding.ts +1 -1
  36. package/corpus/templates/brain/.agents/skills/agent-native-docs/SKILL.md +23 -3
  37. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  38. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +23 -2
  39. package/corpus/templates/brain/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  40. package/corpus/templates/brain/agent-native.json +12 -0
  41. package/corpus/templates/calendar/.agents/skills/agent-native-docs/SKILL.md +23 -3
  42. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  43. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +23 -2
  44. package/corpus/templates/calendar/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  45. package/corpus/templates/calendar/agent-native.json +12 -0
  46. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  47. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  48. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  49. package/corpus/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  50. package/corpus/templates/chat/AGENTS.md +3 -0
  51. package/corpus/templates/chat/DESIGN.md +28 -0
  52. package/corpus/templates/chat/agent-native.json +12 -0
  53. package/corpus/templates/clips/.agents/skills/agent-native-docs/SKILL.md +23 -3
  54. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  55. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +23 -2
  56. package/corpus/templates/clips/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  57. package/corpus/templates/clips/actions/cleanup-transcript.ts +2 -2
  58. package/corpus/templates/clips/actions/delete-recording-permanent.ts +3 -0
  59. package/corpus/templates/clips/actions/get-playback-position.ts +68 -0
  60. package/corpus/templates/clips/actions/import-loom-recording.ts +2 -2
  61. package/corpus/templates/clips/actions/save-playback-position.ts +80 -0
  62. package/corpus/templates/clips/actions/set-thumbnail.ts +1 -1
  63. package/corpus/templates/clips/agent-native.json +12 -0
  64. package/corpus/templates/clips/app/components/player/video-player.tsx +54 -5
  65. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +65 -18
  66. package/corpus/templates/clips/app/hooks/use-playback-position.ts +188 -0
  67. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -24
  68. package/corpus/templates/clips/app/i18n/en-US.ts +4 -0
  69. package/corpus/templates/clips/app/lib/playback-position.ts +99 -0
  70. package/corpus/templates/clips/app/lib/viewer-session.ts +29 -0
  71. package/corpus/templates/clips/changelog/2026-08-05-clip-buffering-now-uses-buffering-copy-after-playback.md +6 -0
  72. package/corpus/templates/clips/changelog/2026-08-05-clips-remembers-your-playback-position-when-you-reopen-a-cli.md +6 -0
  73. package/corpus/templates/clips/desktop/package.json +1 -0
  74. package/corpus/templates/clips/desktop/src/app.tsx +70 -6
  75. package/corpus/templates/clips/desktop/src/components/AlertDialog.tsx +131 -0
  76. package/corpus/templates/clips/desktop/src/styles.css +129 -0
  77. package/corpus/templates/clips/learnings.defaults.md +1 -1
  78. package/corpus/templates/clips/server/db/schema.ts +18 -0
  79. package/corpus/templates/clips/server/lib/public-agent-context.ts +1 -1
  80. package/corpus/templates/clips/server/lib/video-storage.ts +1 -1
  81. package/corpus/templates/clips/server/plugins/db.ts +15 -0
  82. package/corpus/templates/clips/server/routes/api/media/index.post.ts +1 -1
  83. package/corpus/templates/content/.agents/skills/agent-native-docs/SKILL.md +23 -3
  84. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  85. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +13 -0
  86. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +23 -2
  87. package/corpus/templates/content/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  88. package/corpus/templates/content/AGENTS.md +1 -0
  89. package/corpus/templates/content/actions/_content-database-mutation-lock.ts +41 -0
  90. package/corpus/templates/content/actions/_content-database-row-migration.ts +569 -0
  91. package/corpus/templates/content/actions/_database-source-utils.ts +82 -36
  92. package/corpus/templates/content/actions/_database-utils.ts +5 -0
  93. package/corpus/templates/content/actions/_delete-content-space.ts +25 -11
  94. package/corpus/templates/content/actions/add-database-item.ts +60 -42
  95. package/corpus/templates/content/actions/attach-content-database-source.ts +2 -0
  96. package/corpus/templates/content/actions/configure-document-property.ts +99 -104
  97. package/corpus/templates/content/actions/delete-content-database.ts +19 -7
  98. package/corpus/templates/content/actions/delete-document-property.ts +47 -58
  99. package/corpus/templates/content/actions/delete-document.ts +390 -167
  100. package/corpus/templates/content/actions/disconnect-content-database-source.ts +41 -24
  101. package/corpus/templates/content/actions/duplicate-database-item.ts +63 -31
  102. package/corpus/templates/content/actions/duplicate-database-items.ts +86 -43
  103. package/corpus/templates/content/actions/duplicate-document-property.ts +37 -14
  104. package/corpus/templates/content/actions/migrate-content-database-rows.ts +830 -0
  105. package/corpus/templates/content/actions/move-database-item.ts +14 -0
  106. package/corpus/templates/content/actions/permanently-delete-document.ts +27 -6
  107. package/corpus/templates/content/actions/remove-database-items.ts +13 -0
  108. package/corpus/templates/content/actions/reorder-document-property.ts +45 -46
  109. package/corpus/templates/content/actions/set-document-property.ts +68 -28
  110. package/corpus/templates/content/actions/submit-content-database-form.ts +49 -0
  111. package/corpus/templates/content/actions/transcribe-media.ts +1 -1
  112. package/corpus/templates/content/agent-native.json +12 -0
  113. package/corpus/templates/content/app/components/editor/image-upload.ts +2 -2
  114. package/corpus/templates/content/app/i18n-data.ts +1 -1
  115. package/corpus/templates/content/changelog/2026-08-01-content-can-reorganize-every-row-in-an-existing-database-as-.md +6 -0
  116. package/corpus/templates/content/parity/matrix.md +1 -1
  117. package/corpus/templates/content/parity/matrix.ts +4 -2
  118. package/corpus/templates/content/server/db/schema.ts +30 -0
  119. package/corpus/templates/content/server/plugins/db.ts +24 -0
  120. package/corpus/templates/content/server/plugins/onboarding.ts +2 -2
  121. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +23 -3
  122. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  123. package/corpus/templates/crm/agent-native.json +12 -0
  124. package/corpus/templates/design/.agents/skills/agent-native-docs/SKILL.md +23 -3
  125. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  126. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +2 -0
  127. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +23 -2
  128. package/corpus/templates/design/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  129. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +2 -2
  130. package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +2 -2
  131. package/corpus/templates/design/actions/apply-design-token-edit.ts +1 -1
  132. package/corpus/templates/design/actions/capture-design-state.ts +1 -1
  133. package/corpus/templates/design/actions/connect-builder-app.ts +2 -2
  134. package/corpus/templates/design/actions/create-design-branch.ts +1 -1
  135. package/corpus/templates/design/actions/create-fusion-app.ts +3 -3
  136. package/corpus/templates/design/actions/deploy-design-preview.ts +1 -1
  137. package/corpus/templates/design/actions/generate-design.ts +3 -2
  138. package/corpus/templates/design/actions/get-component-details.ts +1 -1
  139. package/corpus/templates/design/actions/get-design-branch-diff.ts +1 -1
  140. package/corpus/templates/design/actions/index-components.ts +3 -3
  141. package/corpus/templates/design/actions/index-design-system-with-builder.ts +1 -1
  142. package/corpus/templates/design/actions/migrate-inline-design-to-app.ts +3 -3
  143. package/corpus/templates/design/actions/open-component-source.ts +1 -1
  144. package/corpus/templates/design/actions/update-design.ts +96 -14
  145. package/corpus/templates/design/agent-native.json +12 -0
  146. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +7 -2
  147. package/corpus/templates/design/app/components/design/FigmaHydrationDialog.tsx +11 -2
  148. package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +1 -1
  149. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +8 -1
  150. package/corpus/templates/design/app/i18n-data.ts +53 -22
  151. package/corpus/templates/design/app/lib/design-file-upload.ts +2 -3
  152. package/corpus/templates/design/app/lib/upload-limits.ts +4 -0
  153. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +1 -1
  154. package/corpus/templates/design/changelog/2026-08-05-chat-attachments-now-warn-before-upload-when-they-exceed-the.md +6 -0
  155. package/corpus/templates/design/changelog/2026-08-05-figma-fig-uploads-now-show-a-clear-4-mb-limit-up-front-inste.md +6 -0
  156. package/corpus/templates/design/scripts/qa-figma-stress-import.ts +1 -1
  157. package/corpus/templates/design/server/handlers/import-design-file.ts +9 -5
  158. package/corpus/templates/design/server/handlers/uploads.ts +13 -9
  159. package/corpus/templates/design/server/lib/fig-file-limits.ts +2 -1
  160. package/corpus/templates/design/server/lib/figma-image-hydration.ts +1 -1
  161. package/corpus/templates/design/server/lib/figma-node-import.ts +1 -1
  162. package/corpus/templates/design/server/lib/request-body-limits.ts +11 -0
  163. package/corpus/templates/design/shared/canvas-frames.ts +81 -0
  164. package/corpus/templates/design/shared/design-source-capabilities.ts +25 -9
  165. package/corpus/templates/dispatch/.agents/skills/agent-native-docs/SKILL.md +23 -3
  166. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  167. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +23 -2
  168. package/corpus/templates/dispatch/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  169. package/corpus/templates/dispatch/agent-native.json +12 -0
  170. package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +23 -3
  171. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  172. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +23 -2
  173. package/corpus/templates/factory/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  174. package/corpus/templates/factory/agent-native.json +12 -0
  175. package/corpus/templates/forms/.agents/skills/agent-native-docs/SKILL.md +23 -3
  176. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  177. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +23 -2
  178. package/corpus/templates/forms/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  179. package/corpus/templates/forms/actions/export-responses.ts +1 -1
  180. package/corpus/templates/forms/agent-native.json +12 -0
  181. package/corpus/templates/macros/.agents/skills/agent-native-docs/SKILL.md +23 -3
  182. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  183. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +23 -2
  184. package/corpus/templates/macros/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  185. package/corpus/templates/macros/agent-native.json +12 -0
  186. package/corpus/templates/mail/.agents/skills/agent-native-docs/SKILL.md +23 -3
  187. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  188. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +23 -2
  189. package/corpus/templates/mail/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  190. package/corpus/templates/mail/agent-native.json +12 -0
  191. package/corpus/templates/mail/app/i18n/en-US.ts +1 -1
  192. package/corpus/templates/mail/server/lib/media-upload.ts +1 -1
  193. package/corpus/templates/plan/.agents/skills/agent-native-docs/SKILL.md +23 -3
  194. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  195. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +23 -2
  196. package/corpus/templates/plan/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  197. package/corpus/templates/plan/agent-native.json +12 -0
  198. package/corpus/templates/plan/server/lib/plan-assets.ts +1 -1
  199. package/corpus/templates/slides/.agents/skills/agent-native-docs/SKILL.md +23 -3
  200. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  201. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +23 -2
  202. package/corpus/templates/slides/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  203. package/corpus/templates/slides/actions/generate-image-api.ts +1 -1
  204. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  205. package/corpus/templates/slides/actions/import-file.ts +2 -2
  206. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
  207. package/corpus/templates/slides/agent-native.json +12 -0
  208. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +1 -1
  209. package/corpus/templates/slides/app/i18n/en-US.ts +2 -2
  210. package/corpus/templates/slides/app/lib/deck-sorting.ts +19 -0
  211. package/corpus/templates/slides/app/lib/image-drop-to-agent.ts +1 -1
  212. package/corpus/templates/slides/app/pages/Index.tsx +7 -2
  213. package/corpus/templates/slides/changelog/2026-08-05-decks-are-now-sorted-by-most-recently-updated.md +6 -0
  214. package/corpus/templates/slides/server/handlers/assets.ts +1 -1
  215. package/corpus/templates/slides/server/handlers/uploads.ts +1 -1
  216. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +23 -3
  217. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  218. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +23 -2
  219. package/corpus/templates/tasks/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  220. package/corpus/templates/tasks/agent-native.json +12 -0
  221. package/dist/action.d.ts +6 -0
  222. package/dist/agent/engine/builder-engine.js +2 -2
  223. package/dist/agent/engine/credential-errors.d.ts +1 -1
  224. package/dist/agent/engine/credential-errors.js +2 -2
  225. package/dist/agent/production-agent.js +3 -2
  226. package/dist/brand-kit/fig/index.js +1 -1
  227. package/dist/cli/agent.js +45 -3
  228. package/dist/cli/code-agent-executor.js +2 -1
  229. package/dist/cli/create.d.ts +9 -1
  230. package/dist/cli/create.js +94 -1
  231. package/dist/cli/doctor.d.ts +8 -11
  232. package/dist/cli/doctor.js +92 -24
  233. package/dist/cli/index.js +6 -5
  234. package/dist/client/AgentAskPopover.d.ts +3 -1
  235. package/dist/client/AgentAskPopover.js +2 -2
  236. package/dist/client/AgentPanel.js +9 -3
  237. package/dist/client/AssistantChat.js +54 -33
  238. package/dist/client/MultiTabAssistantChat.js +1 -1
  239. package/dist/client/RouteTransitionIndicator.d.ts +7 -0
  240. package/dist/client/RouteTransitionIndicator.js +31 -0
  241. package/dist/client/agent-engine-key.js +1 -1
  242. package/dist/client/app-providers.js +11 -2
  243. package/dist/client/chat/message-components.js +1 -1
  244. package/dist/client/chat/run-recovery.js +1 -1
  245. package/dist/client/chat/tool-call-display.d.ts +3 -1
  246. package/dist/client/chat/tool-call-display.js +4 -3
  247. package/dist/client/chat-model-groups.d.ts +6 -0
  248. package/dist/client/chat-model-groups.js +11 -0
  249. package/dist/client/error-format.js +1 -1
  250. package/dist/client/i18n.js +1 -1
  251. package/dist/client/onboarding/FirstRunOnboarding.d.ts +5 -1
  252. package/dist/client/onboarding/FirstRunOnboarding.js +29 -13
  253. package/dist/client/onboarding/first-run-enabled.d.ts +6 -1
  254. package/dist/client/onboarding/first-run-enabled.js +33 -3
  255. package/dist/client/onboarding/use-onboarding.js +16 -11
  256. package/dist/client/require-session.js +13 -4
  257. package/dist/client/resources/mcp-integration-catalog.js +26 -0
  258. package/dist/client/resources/mcp-integration-logos.js +4 -0
  259. package/dist/client/route-warmup.js +56 -10
  260. package/dist/client/settings/AccountSettingsCard.js +78 -3
  261. package/dist/client/settings/SettingsPanel.js +1 -1
  262. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  263. package/dist/client/settings/useBuilderStatus.js +1 -1
  264. package/dist/client/setup-connections/useBuilderConnectCardController.js +1 -1
  265. package/dist/client/ui/index.d.ts +1 -0
  266. package/dist/client/ui/index.js +1 -0
  267. package/dist/client/uploads/upload-editor-image.js +1 -1
  268. package/dist/client/use-chat-threads.js +3 -0
  269. package/dist/client/use-session.d.ts +11 -0
  270. package/dist/client/use-session.js +34 -6
  271. package/dist/collab/routes.d.ts +2 -2
  272. package/dist/config.d.ts +48 -0
  273. package/dist/config.js +111 -0
  274. package/dist/db/migrations.js +5 -0
  275. package/dist/eject/provider-api-definitions.d.ts +1 -1
  276. package/dist/eject/provider-api-definitions.js +1 -0
  277. package/dist/eject/remote-mcp-presets.js +1 -0
  278. package/dist/extensions/web-search-tool.js +2 -2
  279. package/dist/file-upload/actions/upload-image.js +1 -1
  280. package/dist/file-upload/registry.js +1 -1
  281. package/dist/guards/index.d.ts +3 -0
  282. package/dist/guards/index.js +2 -0
  283. package/dist/guards/no-empty-migrations.d.ts +14 -0
  284. package/dist/guards/no-empty-migrations.js +126 -0
  285. package/dist/index.browser.d.ts +1 -0
  286. package/dist/index.browser.js +3 -0
  287. package/dist/index.d.ts +1 -0
  288. package/dist/index.js +1 -0
  289. package/dist/localization/default-messages.d.ts +24 -0
  290. package/dist/localization/default-messages.js +26 -2
  291. package/dist/notifications/routes.d.ts +6 -6
  292. package/dist/onboarding/app-profile.js +1 -1
  293. package/dist/onboarding/plugin.d.ts +2 -0
  294. package/dist/onboarding/plugin.js +29 -2
  295. package/dist/progress/routes.d.ts +1 -1
  296. package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
  297. package/dist/provider-api/actions/provider-api.d.ts +13 -13
  298. package/dist/provider-api/index.d.ts +4 -4
  299. package/dist/provider-api/index.js +35 -0
  300. package/dist/resources/handlers.d.ts +1 -1
  301. package/dist/resources/handlers.js +1 -1
  302. package/dist/scripts/docs/framework-search.d.ts +9 -0
  303. package/dist/scripts/docs/framework-search.js +239 -0
  304. package/dist/scripts/docs/index.js +1 -0
  305. package/dist/scripts/docs/search.d.ts +10 -0
  306. package/dist/scripts/docs/search.js +1 -1
  307. package/dist/scripts/docs/source-search.d.ts +10 -2
  308. package/dist/scripts/docs/source-search.js +108 -41
  309. package/dist/search-utils/index.d.ts +11 -0
  310. package/dist/search-utils/index.js +72 -0
  311. package/dist/server/action-change.d.ts +6 -0
  312. package/dist/server/action-change.js +28 -14
  313. package/dist/server/action-discovery.js +9 -0
  314. package/dist/server/action-routes.js +1 -0
  315. package/dist/server/agent-chat/browser-team-tools.js +1 -1
  316. package/dist/server/agent-chat/script-entries.js +43 -2
  317. package/dist/server/auth-login-mode.d.ts +8 -0
  318. package/dist/server/auth-login-mode.js +17 -0
  319. package/dist/server/auth.js +100 -15
  320. package/dist/server/better-auth-instance.d.ts +36 -0
  321. package/dist/server/better-auth-instance.js +25 -3
  322. package/dist/server/builder-design-systems.js +1 -1
  323. package/dist/server/core-routes-plugin.js +17 -14
  324. package/dist/server/credential-provider.js +3 -3
  325. package/dist/server/email-templates.d.ts +7 -0
  326. package/dist/server/email-templates.js +24 -0
  327. package/dist/server/email.d.ts +17 -0
  328. package/dist/server/email.js +22 -1
  329. package/dist/server/framework-request-handler.js +6 -0
  330. package/dist/server/onboarding-html.d.ts +2 -0
  331. package/dist/server/onboarding-html.js +169 -8
  332. package/dist/server/realtime-token.d.ts +1 -1
  333. package/dist/server/realtime-voice.js +1 -1
  334. package/dist/server/sentry.d.ts +1 -1
  335. package/dist/server/transcribe-voice.js +3 -3
  336. package/dist/shared/first-run-onboarding.d.ts +1 -0
  337. package/dist/shared/first-run-onboarding.js +1 -0
  338. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  339. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  340. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  341. package/dist/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  342. package/dist/templates/chat/AGENTS.md +3 -0
  343. package/dist/templates/chat/DESIGN.md +28 -0
  344. package/dist/templates/chat/agent-native.json +12 -0
  345. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  346. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  347. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  348. package/dist/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  349. package/dist/templates/default/AGENTS.md +4 -0
  350. package/dist/templates/default/DESIGN.md +30 -0
  351. package/dist/templates/default/agent-native.json +9 -0
  352. package/dist/templates/default/app/i18n/ar-SA.ts +2 -2
  353. package/dist/templates/default/app/i18n/de-DE.ts +2 -2
  354. package/dist/templates/default/app/i18n/en-US.ts +2 -2
  355. package/dist/templates/default/app/i18n/es-ES.ts +2 -2
  356. package/dist/templates/default/app/i18n/fr-FR.ts +2 -2
  357. package/dist/templates/default/app/i18n/hi-IN.ts +2 -2
  358. package/dist/templates/default/app/i18n/ja-JP.ts +2 -2
  359. package/dist/templates/default/app/i18n/ko-KR.ts +2 -2
  360. package/dist/templates/default/app/i18n/pt-BR.ts +2 -2
  361. package/dist/templates/default/app/i18n/zh-CN.ts +2 -2
  362. package/dist/templates/default/app/i18n/zh-TW.ts +1 -1
  363. package/dist/templates/default/package.json +1 -0
  364. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  365. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  366. package/dist/templates/headless/agent-native.json +9 -0
  367. package/dist/templates/headless/package.json +2 -0
  368. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  369. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  370. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  371. package/dist/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  372. package/dist/templates/workspace-core/AGENTS.md +3 -0
  373. package/dist/templates/workspace-core/DESIGN.md +35 -0
  374. package/dist/templates/workspace-root/AGENTS.md +3 -0
  375. package/dist/templates/workspace-root/DESIGN.md +35 -0
  376. package/dist/templates/workspace-root/agent-native.json +9 -0
  377. package/dist/templates/workspace-root/package.json +3 -0
  378. package/dist/transcription/builder-transcription.js +1 -1
  379. package/dist/user-profile/actions/change-password.d.ts +8 -0
  380. package/dist/user-profile/actions/change-password.js +24 -0
  381. package/dist/user-profile/actions/get-auth-methods.d.ts +6 -0
  382. package/dist/user-profile/actions/get-auth-methods.js +23 -0
  383. package/dist/user-profile/actions/set-password.d.ts +7 -0
  384. package/dist/user-profile/actions/set-password.js +23 -0
  385. package/dist/vite/client.d.ts +8 -1
  386. package/dist/vite/client.js +63 -12
  387. package/dist/vite/index.d.ts +1 -0
  388. package/dist/vite/index.js +1 -0
  389. package/docs/AGENTS.md +7 -2
  390. package/docs/SKILL.md +7 -5
  391. package/docs/content/agent-native-config.mdx +165 -0
  392. package/docs/content/agent-native-toolkit.mdx +1 -1
  393. package/docs/content/deployment.mdx +7 -2
  394. package/docs/content/doctor.mdx +21 -13
  395. package/docs/content/environment-variables.mdx +158 -0
  396. package/docs/content/file-uploads.mdx +1 -1
  397. package/docs/content/getting-started.mdx +1 -1
  398. package/docs/content/key-concepts.mdx +1 -1
  399. package/docs/content/multi-app-workspace.mdx +1 -1
  400. package/docs/content/template-clips-ai-and-editing.mdx +6 -6
  401. package/docs/content/template-clips-developers.mdx +3 -3
  402. package/docs/content/toolkit-settings.mdx +1 -1
  403. package/docs/content/voice-input.mdx +4 -4
  404. package/package.json +6 -2
  405. package/src/eject/provider-api-definitions.ts +1 -0
  406. package/src/eject/remote-mcp-presets.ts +1 -0
  407. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  408. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  409. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  410. package/src/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  411. package/src/templates/chat/AGENTS.md +3 -0
  412. package/src/templates/chat/DESIGN.md +28 -0
  413. package/src/templates/chat/agent-native.json +12 -0
  414. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  415. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  416. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  417. package/src/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  418. package/src/templates/default/AGENTS.md +4 -0
  419. package/src/templates/default/DESIGN.md +30 -0
  420. package/src/templates/default/agent-native.json +9 -0
  421. package/src/templates/default/app/i18n/ar-SA.ts +2 -2
  422. package/src/templates/default/app/i18n/de-DE.ts +2 -2
  423. package/src/templates/default/app/i18n/en-US.ts +2 -2
  424. package/src/templates/default/app/i18n/es-ES.ts +2 -2
  425. package/src/templates/default/app/i18n/fr-FR.ts +2 -2
  426. package/src/templates/default/app/i18n/hi-IN.ts +2 -2
  427. package/src/templates/default/app/i18n/ja-JP.ts +2 -2
  428. package/src/templates/default/app/i18n/ko-KR.ts +2 -2
  429. package/src/templates/default/app/i18n/pt-BR.ts +2 -2
  430. package/src/templates/default/app/i18n/zh-CN.ts +2 -2
  431. package/src/templates/default/app/i18n/zh-TW.ts +1 -1
  432. package/src/templates/default/package.json +1 -0
  433. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  434. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  435. package/src/templates/headless/agent-native.json +9 -0
  436. package/src/templates/headless/package.json +2 -0
  437. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  438. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  439. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  440. package/src/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  441. package/src/templates/workspace-core/AGENTS.md +3 -0
  442. package/src/templates/workspace-core/DESIGN.md +35 -0
  443. package/src/templates/workspace-root/AGENTS.md +3 -0
  444. package/src/templates/workspace-root/DESIGN.md +35 -0
  445. package/src/templates/workspace-root/agent-native.json +9 -0
  446. package/src/templates/workspace-root/package.json +3 -0
@@ -927,6 +927,22 @@ const enUS = {
927
927
  firstPartyAnalytics: "First-party Analytics",
928
928
  firstPartyDescription:
929
929
  "Receive product, session, and $ai_generation events through the same first-party endpoint for dashboarding and LLM observability.",
930
+ bigQueryRecommendationTitle: "BigQuery is recommended for this data",
931
+ bigQueryRecommendationDescription:
932
+ "Neon is still the default. Connect BigQuery when you have 1M+ observed events or repeated slow queries/timeouts, then use it for high-volume or historical analysis.",
933
+ bigQueryConnectedTitle: "BigQuery is ready for heavier queries",
934
+ bigQueryConnectedDescription:
935
+ "Use BigQuery for high-volume or historical tracking queries. Neon remains available for recent operational analytics.",
936
+ bigQuerySetup: "Set up BigQuery",
937
+ bigQueryMonitorDescription:
938
+ "Neon is still a good fit. Keep an eye on event volume and query latency; this card will recommend BigQuery if pressure grows.",
939
+ bigQueryHealthyDescription:
940
+ "Neon is a good fit for this first-party data right now. We will flag this again if volume or query latency grows.",
941
+ bigQueryHealthUnavailable:
942
+ "We could not check first-party analytics pressure right now. Reload and try again before changing backends.",
943
+ analyticsEventCount: "Observed events",
944
+ slowQueries24h: "Slow queries (24h)",
945
+ maxQueryDuration: "Max query time",
930
946
  defaultKeyName: "Hosted templates",
931
947
  endpoint: "Endpoint",
932
948
  serverEnv: "Server env",
@@ -1401,6 +1417,22 @@ const analyticsSliceTranslations: {
1401
1417
  firstPartyAnalytics: "第一方 Analytics",
1402
1418
  firstPartyDescription:
1403
1419
  "通过同一个第一方端点接收产品、会话和 $ai_generation 事件,用于仪表板和 LLM 可观测性。",
1420
+ bigQueryRecommendationTitle: "建议为此数据使用 BigQuery",
1421
+ bigQueryRecommendationDescription:
1422
+ "Neon 仍是默认选择。当观察到 100 万以上事件或反复出现慢查询/超时时,请连接 BigQuery,并用它进行高数据量或历史分析。",
1423
+ bigQueryConnectedTitle: "BigQuery 已准备好处理更重的查询",
1424
+ bigQueryConnectedDescription:
1425
+ "使用 BigQuery 处理高数据量或历史跟踪查询。Neon 仍可用于近期运营分析。",
1426
+ bigQuerySetup: "设置 BigQuery",
1427
+ bigQueryMonitorDescription:
1428
+ "Neon 目前仍然适合。请关注事件量和查询延迟;如果压力增加,此卡片会建议 BigQuery。",
1429
+ bigQueryHealthyDescription:
1430
+ "目前 Neon 适合这项第一方数据。如果事件量或查询延迟增加,我们会再次提醒你。",
1431
+ bigQueryHealthUnavailable:
1432
+ "现在无法检查第一方 Analytics 压力。请重新加载后再尝试更换后端。",
1433
+ analyticsEventCount: "观察到的事件",
1434
+ slowQueries24h: "慢查询(24 小时)",
1435
+ maxQueryDuration: "最长查询时间",
1404
1436
  defaultKeyName: "托管模板",
1405
1437
  endpoint: "端点",
1406
1438
  serverEnv: "服务器环境",
@@ -1704,6 +1736,22 @@ const analyticsSliceTranslations: {
1704
1736
  firstPartyAnalytics: "zx3qz",
1705
1737
  firstPartyDescription:
1706
1738
  "Reciba eventos de producto, sesión y $ai_generation en el mismo endpoint propio para dashboards y observabilidad de LLM.",
1739
+ bigQueryRecommendationTitle: "Se recomienda BigQuery para estos datos",
1740
+ bigQueryRecommendationDescription:
1741
+ "Neon sigue siendo la opción predeterminada. Conecta BigQuery cuando tengas más de 1 millón de eventos observados o consultas lentas/tiempos de espera repetidos, y úsalo para análisis históricos o de gran volumen.",
1742
+ bigQueryConnectedTitle: "BigQuery está listo para consultas más pesadas",
1743
+ bigQueryConnectedDescription:
1744
+ "Usa BigQuery para consultas históricas o de seguimiento de gran volumen. Neon sigue disponible para análisis operativos recientes.",
1745
+ bigQuerySetup: "Configurar BigQuery",
1746
+ bigQueryMonitorDescription:
1747
+ "Neon sigue siendo una buena opción. Vigila el volumen de eventos y la latencia; esta tarjeta recomendará BigQuery si aumenta la presión.",
1748
+ bigQueryHealthyDescription:
1749
+ "Neon es una buena opción para estos datos propios por ahora. Te avisaremos si aumentan el volumen o la latencia.",
1750
+ bigQueryHealthUnavailable:
1751
+ "No se pudo comprobar la presión de Analytics propio. Recarga e inténtalo de nuevo antes de cambiar de backend.",
1752
+ analyticsEventCount: "Eventos observados",
1753
+ slowQueries24h: "Consultas lentas (24 h)",
1754
+ maxQueryDuration: "Tiempo máximo de consulta",
1707
1755
  defaultKeyName: "Plantillas alojadas",
1708
1756
  endpoint: "Punto final",
1709
1757
  serverEnv: "entorno del servidor",
@@ -2025,6 +2073,22 @@ const analyticsSliceTranslations: {
2025
2073
  firstPartyAnalytics: "Analytics propriétaire",
2026
2074
  firstPartyDescription:
2027
2075
  "Recevez les événements produit, session et $ai_generation sur le même point de terminaison propriétaire pour les tableaux de bord et l'observabilité LLM.",
2076
+ bigQueryRecommendationTitle: "BigQuery est recommandé pour ces données",
2077
+ bigQueryRecommendationDescription:
2078
+ "Neon reste la valeur par défaut. Connectez BigQuery avec plus d’un million d’événements observés ou des requêtes lentes/expirées répétées, puis utilisez-le pour les analyses historiques ou volumineuses.",
2079
+ bigQueryConnectedTitle: "BigQuery est prêt pour les requêtes lourdes",
2080
+ bigQueryConnectedDescription:
2081
+ "Utilisez BigQuery pour les requêtes de suivi historiques ou volumineuses. Neon reste disponible pour les analyses opérationnelles récentes.",
2082
+ bigQuerySetup: "Configurer BigQuery",
2083
+ bigQueryMonitorDescription:
2084
+ "Neon reste adapté pour le moment. Surveillez le volume et la latence ; cette carte recommandera BigQuery si la pression augmente.",
2085
+ bigQueryHealthyDescription:
2086
+ "Neon convient actuellement à ces données propriétaires. Nous vous préviendrons si le volume ou la latence augmente.",
2087
+ bigQueryHealthUnavailable:
2088
+ "Impossible de vérifier la pression Analytics propriétaire. Rechargez la page avant de changer de backend.",
2089
+ analyticsEventCount: "Événements observés",
2090
+ slowQueries24h: "Requêtes lentes (24 h)",
2091
+ maxQueryDuration: "Durée maximale de requête",
2028
2092
  defaultKeyName: "Modèles hébergés",
2029
2093
  endpoint: "Point de terminaison",
2030
2094
  serverEnv: "Environnement du serveur",
@@ -2344,6 +2408,22 @@ const analyticsSliceTranslations: {
2344
2408
  firstPartyAnalytics: "First-Party-Analytics",
2345
2409
  firstPartyDescription:
2346
2410
  "Empfangen Sie Produkt-, Sitzungs- und $ai_generation-Ereignisse über denselben Erstanbieter-Endpunkt für Dashboards und LLM-Observability.",
2411
+ bigQueryRecommendationTitle: "BigQuery wird für diese Daten empfohlen",
2412
+ bigQueryRecommendationDescription:
2413
+ "Neon bleibt die Standardeinstellung. Verbinde BigQuery ab 1 Million beobachteter Ereignisse oder wiederholt langsamen/abgebrochenen Abfragen und nutze es für umfangreiche oder historische Analysen.",
2414
+ bigQueryConnectedTitle: "BigQuery ist für umfangreiche Abfragen bereit",
2415
+ bigQueryConnectedDescription:
2416
+ "Nutze BigQuery für umfangreiche oder historische Tracking-Abfragen. Neon bleibt für aktuelle operative Analysen verfügbar.",
2417
+ bigQuerySetup: "BigQuery einrichten",
2418
+ bigQueryMonitorDescription:
2419
+ "Neon ist derzeit weiterhin geeignet. Beobachte Ereignismenge und Abfragelatenz; bei wachsendem Druck wird diese Karte BigQuery empfehlen.",
2420
+ bigQueryHealthyDescription:
2421
+ "Neon ist für diese First-Party-Daten derzeit gut geeignet. Wir melden uns erneut, wenn Menge oder Latenz steigen.",
2422
+ bigQueryHealthUnavailable:
2423
+ "Der Druck der First-Party-Analytics konnte nicht geprüft werden. Lade die Seite neu, bevor du das Backend wechselst.",
2424
+ analyticsEventCount: "Beobachtete Ereignisse",
2425
+ slowQueries24h: "Langsame Abfragen (24 h)",
2426
+ maxQueryDuration: "Maximale Abfragezeit",
2347
2427
  defaultKeyName: "Gehostete Vorlagen",
2348
2428
  endpoint: "Endpunkt",
2349
2429
  serverEnv: "Serverumgebung",
@@ -2658,6 +2738,22 @@ const analyticsSliceTranslations: {
2658
2738
  firstPartyAnalytics: "ファーストパーティ Analytics",
2659
2739
  firstPartyDescription:
2660
2740
  "同じファーストパーティエンドポイントで製品、セッション、$ai_generation イベントを受信し、ダッシュボードと LLM 可観測性に使用します。",
2741
+ bigQueryRecommendationTitle: "このデータには BigQuery をおすすめします",
2742
+ bigQueryRecommendationDescription:
2743
+ "Neon は引き続き標準です。観測イベントが 100 万件を超える、または遅いクエリやタイムアウトが繰り返される場合は BigQuery に接続し、大量・履歴分析に使用してください。",
2744
+ bigQueryConnectedTitle: "BigQuery は重いクエリに対応できます",
2745
+ bigQueryConnectedDescription:
2746
+ "大量または履歴のトラッキングクエリには BigQuery を使用してください。Neon は最近の運用分析に引き続き利用できます。",
2747
+ bigQuerySetup: "BigQuery を設定",
2748
+ bigQueryMonitorDescription:
2749
+ "今のところ Neon が適しています。イベント量とクエリ遅延を確認してください。負荷が増えるとこのカードが BigQuery をおすすめします。",
2750
+ bigQueryHealthyDescription:
2751
+ "現在、このファーストパーティデータには Neon が適しています。量やクエリ遅延が増えたら再度お知らせします。",
2752
+ bigQueryHealthUnavailable:
2753
+ "ファーストパーティ Analytics の負荷を確認できませんでした。バックエンドを変更する前に再読み込みしてください。",
2754
+ analyticsEventCount: "観測イベント",
2755
+ slowQueries24h: "遅いクエリ(24 時間)",
2756
+ maxQueryDuration: "最大クエリ時間",
2661
2757
  defaultKeyName: "ホストされたテンプレート",
2662
2758
  endpoint: "終点",
2663
2759
  serverEnv: "サーバー環境",
@@ -2967,6 +3063,23 @@ const analyticsSliceTranslations: {
2967
3063
  firstPartyAnalytics: "퍼스트파티 Analytics",
2968
3064
  firstPartyDescription:
2969
3065
  "동일한 퍼스트파티 엔드포인트에서 제품, 세션, $ai_generation 이벤트를 받아 대시보드와 LLM 관측성에 사용합니다.",
3066
+ bigQueryRecommendationTitle: "이 데이터에는 BigQuery를 권장합니다",
3067
+ bigQueryRecommendationDescription:
3068
+ "Neon은 여전히 기본값입니다. 관측 이벤트가 100만 개 이상이거나 느린 쿼리/시간 초과가 반복되면 BigQuery를 연결하고 대용량 또는 과거 분석에 사용하세요.",
3069
+ bigQueryConnectedTitle:
3070
+ "BigQuery가 무거운 쿼리를 처리할 준비가 되었습니다",
3071
+ bigQueryConnectedDescription:
3072
+ "대용량 또는 과거 추적 쿼리에는 BigQuery를 사용하세요. Neon은 최근 운영 분석에 계속 사용할 수 있습니다.",
3073
+ bigQuerySetup: "BigQuery 설정",
3074
+ bigQueryMonitorDescription:
3075
+ "현재는 Neon이 적합합니다. 이벤트 양과 쿼리 지연을 확인하세요. 부담이 커지면 이 카드에서 BigQuery를 권장합니다.",
3076
+ bigQueryHealthyDescription:
3077
+ "현재 이 퍼스트파티 데이터에는 Neon이 적합합니다. 양이나 쿼리 지연이 증가하면 다시 알려드립니다.",
3078
+ bigQueryHealthUnavailable:
3079
+ "퍼스트파티 Analytics 부담을 확인하지 못했습니다. 백엔드를 바꾸기 전에 다시 로드하세요.",
3080
+ analyticsEventCount: "관측된 이벤트",
3081
+ slowQueries24h: "느린 쿼리 (24시간)",
3082
+ maxQueryDuration: "최대 쿼리 시간",
2970
3083
  defaultKeyName: "호스팅된 템플릿",
2971
3084
  endpoint: "엔드포인트",
2972
3085
  serverEnv: "서버 환경",
@@ -3274,6 +3387,23 @@ const analyticsSliceTranslations: {
3274
3387
  firstPartyAnalytics: "Analytics primário",
3275
3388
  firstPartyDescription:
3276
3389
  "Receba eventos de produto, sessão e $ai_generation pelo mesmo endpoint primário para dashboards e observabilidade de LLM.",
3390
+ bigQueryRecommendationTitle: "BigQuery é recomendado para estes dados",
3391
+ bigQueryRecommendationDescription:
3392
+ "Neon continua sendo o padrão. Conecte o BigQuery ao observar mais de 1 milhão de eventos ou consultas lentas/expiradas repetidas e use-o para análises históricas ou de alto volume.",
3393
+ bigQueryConnectedTitle:
3394
+ "BigQuery está pronto para consultas mais pesadas",
3395
+ bigQueryConnectedDescription:
3396
+ "Use BigQuery para consultas históricas ou de rastreamento de alto volume. Neon continua disponível para análises operacionais recentes.",
3397
+ bigQuerySetup: "Configurar BigQuery",
3398
+ bigQueryMonitorDescription:
3399
+ "Neon ainda é uma boa opção. Acompanhe o volume de eventos e a latência; este cartão recomendará BigQuery se a pressão aumentar.",
3400
+ bigQueryHealthyDescription:
3401
+ "Neon é uma boa opção para estes dados primários agora. Avisaremos novamente se o volume ou a latência crescer.",
3402
+ bigQueryHealthUnavailable:
3403
+ "Não foi possível verificar a pressão do Analytics primário. Recarregue antes de trocar o backend.",
3404
+ analyticsEventCount: "Eventos observados",
3405
+ slowQueries24h: "Consultas lentas (24 h)",
3406
+ maxQueryDuration: "Tempo máximo da consulta",
3277
3407
  defaultKeyName: "Modelos hospedados",
3278
3408
  endpoint: "Ponto final",
3279
3409
  serverEnv: "Ambiente do servidor",
@@ -3585,6 +3715,22 @@ const analyticsSliceTranslations: {
3585
3715
  firstPartyAnalytics: "प्रथम-पक्ष Analytics",
3586
3716
  firstPartyDescription:
3587
3717
  "डैशबोर्ड और LLM observability के लिए उसी प्रथम-पक्ष endpoint से product, session, और $ai_generation events प्राप्त करें।",
3718
+ bigQueryRecommendationTitle: "इस डेटा के लिए BigQuery की सलाह है",
3719
+ bigQueryRecommendationDescription:
3720
+ "Neon अभी भी डिफ़ॉल्ट है। 10 लाख से अधिक देखे गए events या बार-बार धीमे queries/timeouts होने पर BigQuery जोड़ें और बड़े या पुराने डेटा के विश्लेषण के लिए इसका उपयोग करें।",
3721
+ bigQueryConnectedTitle: "BigQuery भारी queries के लिए तैयार है",
3722
+ bigQueryConnectedDescription:
3723
+ "बड़े या पुराने tracking queries के लिए BigQuery का उपयोग करें। हाल के operational analytics के लिए Neon उपलब्ध रहेगा।",
3724
+ bigQuerySetup: "BigQuery सेट अप करें",
3725
+ bigQueryMonitorDescription:
3726
+ "अभी Neon उपयुक्त है। event volume और query latency पर नज़र रखें; दबाव बढ़ने पर यह card BigQuery की सलाह देगा।",
3727
+ bigQueryHealthyDescription:
3728
+ "अभी इस first-party data के लिए Neon उपयुक्त है। volume या query latency बढ़ने पर हम फिर बताएँगे।",
3729
+ bigQueryHealthUnavailable:
3730
+ "First-party Analytics pressure की जाँच नहीं हो सकी। backend बदलने से पहले reload करके फिर प्रयास करें।",
3731
+ analyticsEventCount: "देखे गए events",
3732
+ slowQueries24h: "धीमे queries (24 घंटे)",
3733
+ maxQueryDuration: "अधिकतम query समय",
3588
3734
  defaultKeyName: "होस्ट किए गए टेम्पलेट",
3589
3735
  endpoint: "endpoint",
3590
3736
  serverEnv: "सर्वर एन.वी",
@@ -3887,6 +4033,22 @@ const analyticsSliceTranslations: {
3887
4033
  firstPartyAnalytics: "تحليلات الطرف الأول",
3888
4034
  firstPartyDescription:
3889
4035
  "استقبل أحداث المنتج والجلسة و $ai_generation عبر نقطة نهاية الطرف الأول نفسها للوحات المعلومات ومراقبة LLM.",
4036
+ bigQueryRecommendationTitle: "يُنصح باستخدام BigQuery لهذه البيانات",
4037
+ bigQueryRecommendationDescription:
4038
+ "يبقى Neon هو الخيار الافتراضي. وصّل BigQuery عند وجود أكثر من مليون حدث ملحوظ أو تكرار الاستعلامات البطيئة/المهلة، واستخدمه للتحليل التاريخي أو عالي الحجم.",
4039
+ bigQueryConnectedTitle: "BigQuery جاهز للاستعلامات الأثقل",
4040
+ bigQueryConnectedDescription:
4041
+ "استخدم BigQuery لاستعلامات التتبع عالية الحجم أو التاريخية. يظل Neon متاحاً للتحليلات التشغيلية الحديثة.",
4042
+ bigQuerySetup: "إعداد BigQuery",
4043
+ bigQueryMonitorDescription:
4044
+ "لا يزال Neon مناسباً حالياً. راقب حجم الأحداث وزمن الاستعلام؛ ستوصي هذه البطاقة بـ BigQuery إذا زاد الضغط.",
4045
+ bigQueryHealthyDescription:
4046
+ "Neon مناسب حالياً لبيانات الطرف الأول هذه. سننبهك مجدداً إذا زاد الحجم أو زمن الاستعلام.",
4047
+ bigQueryHealthUnavailable:
4048
+ "تعذّر التحقق من ضغط Analytics للطرف الأول. أعد التحميل وحاول مجدداً قبل تغيير الخلفية.",
4049
+ analyticsEventCount: "الأحداث الملحوظة",
4050
+ slowQueries24h: "الاستعلامات البطيئة (24 ساعة)",
4051
+ maxQueryDuration: "أقصى زمن للاستعلام",
3890
4052
  defaultKeyName: "القوالب المستضافة",
3891
4053
  endpoint: "نقطة النهاية",
3892
4054
  serverEnv: "بيئة الخادم",
@@ -10,7 +10,7 @@ import {
10
10
  useActionQuery,
11
11
  } from "@agent-native/core/client/hooks";
12
12
  import { oauthRedirectUri } from "@agent-native/core/client/host";
13
- import { useT } from "@agent-native/core/client/i18n";
13
+ import { useFormatters, useT } from "@agent-native/core/client/i18n";
14
14
  import { useOrgRole } from "@agent-native/core/client/org";
15
15
  import {
16
16
  IconCheck,
@@ -118,6 +118,18 @@ interface GitHubOAuthStatus {
118
118
  error?: string;
119
119
  }
120
120
 
121
+ interface FirstPartyAnalyticsHealthResponse {
122
+ status: "healthy" | "monitor" | "recommend_bigquery" | "unavailable";
123
+ metrics: {
124
+ eventCount: number;
125
+ slowQueryCount24h: number;
126
+ maxQueryDurationMs24h: number;
127
+ };
128
+ bigQuery: {
129
+ configured: boolean | null;
130
+ };
131
+ }
132
+
121
133
  const firstPartyAnalyticsEndpoint =
122
134
  (import.meta.env as Record<string, string | undefined>)
123
135
  .VITE_AGENT_NATIVE_ANALYTICS_ENDPOINT ||
@@ -1577,6 +1589,7 @@ function AddDataSourceCTA() {
1577
1589
 
1578
1590
  function FirstPartyAnalyticsCard() {
1579
1591
  const t = useT();
1592
+ const { formatNumber } = useFormatters();
1580
1593
  const queryClient = useQueryClient();
1581
1594
  const [expanded, setExpanded] = useState(false);
1582
1595
  const [name, setName] = useState(() => t("dataSources.defaultKeyName"));
@@ -1592,6 +1605,33 @@ function FirstPartyAnalyticsCard() {
1592
1605
  (key) => !key.revokedAt,
1593
1606
  );
1594
1607
  const connected = keys.length > 0;
1608
+ const {
1609
+ data: rawHealth,
1610
+ isLoading: isHealthLoading,
1611
+ isError: isHealthError,
1612
+ } = useActionQuery("get-first-party-analytics-health", undefined, {
1613
+ staleTime: 30_000,
1614
+ retry: false,
1615
+ });
1616
+ const health = rawHealth as FirstPartyAnalyticsHealthResponse | undefined;
1617
+ const healthStatus = isHealthError ? "unavailable" : health?.status;
1618
+ const bigQueryConfigured = health?.bigQuery.configured === true;
1619
+ const healthTitleKey =
1620
+ healthStatus === "recommend_bigquery"
1621
+ ? bigQueryConfigured
1622
+ ? "dataSources.bigQueryConnectedTitle"
1623
+ : "dataSources.bigQueryRecommendationTitle"
1624
+ : null;
1625
+ const healthDescriptionKey =
1626
+ healthStatus === "recommend_bigquery"
1627
+ ? bigQueryConfigured
1628
+ ? "dataSources.bigQueryConnectedDescription"
1629
+ : "dataSources.bigQueryRecommendationDescription"
1630
+ : healthStatus === "monitor"
1631
+ ? "dataSources.bigQueryMonitorDescription"
1632
+ : healthStatus === "healthy"
1633
+ ? "dataSources.bigQueryHealthyDescription"
1634
+ : "dataSources.bigQueryHealthUnavailable";
1595
1635
 
1596
1636
  const createKey = useActionMutation("create-analytics-public-key", {
1597
1637
  onSuccess: (result: any) => {
@@ -1641,6 +1681,18 @@ function FirstPartyAnalyticsCard() {
1641
1681
  <div className="flex shrink-0 items-center gap-2">
1642
1682
  {isLoading ? (
1643
1683
  <Skeleton className="h-4 w-20 rounded-full" />
1684
+ ) : healthStatus === "recommend_bigquery" ? (
1685
+ <span
1686
+ className="flex min-w-0 items-center gap-1.5 text-xs font-medium text-amber-500"
1687
+ title={healthTitleKey ? t(healthTitleKey) : undefined}
1688
+ >
1689
+ <IconAlertCircle className="h-3.5 w-3.5 shrink-0" />
1690
+ <span className="max-w-[12rem] truncate">
1691
+ {healthTitleKey
1692
+ ? t(healthTitleKey)
1693
+ : t("dataSources.bigQueryRecommendationTitle")}
1694
+ </span>
1695
+ </span>
1644
1696
  ) : connected ? (
1645
1697
  <span className="flex items-center gap-1.5 text-xs text-emerald-500 font-medium whitespace-nowrap">
1646
1698
  <IconCheck className="h-3.5 w-3.5" />
@@ -1665,6 +1717,79 @@ function FirstPartyAnalyticsCard() {
1665
1717
  {expanded && (
1666
1718
  <CardContent className="border-t border-border/50 px-5 py-4">
1667
1719
  <div className="space-y-4">
1720
+ {isHealthLoading ? (
1721
+ <Skeleton className="h-28 w-full rounded-md" />
1722
+ ) : (
1723
+ <div
1724
+ className={`rounded-md border p-3 text-xs ${
1725
+ healthStatus === "recommend_bigquery"
1726
+ ? "border-amber-500/30 bg-amber-500/10"
1727
+ : "border-border/50 bg-muted/20"
1728
+ }`}
1729
+ >
1730
+ <div className="flex items-start justify-between gap-3">
1731
+ <div className="flex min-w-0 items-start gap-2">
1732
+ <IconAlertCircle
1733
+ className={`mt-px h-3.5 w-3.5 shrink-0 ${
1734
+ healthStatus === "recommend_bigquery"
1735
+ ? "text-amber-500"
1736
+ : "text-muted-foreground"
1737
+ }`}
1738
+ />
1739
+ <div className="min-w-0 space-y-1">
1740
+ {healthTitleKey && (
1741
+ <p className="font-medium text-foreground">
1742
+ {t(healthTitleKey)}
1743
+ </p>
1744
+ )}
1745
+ <p className="text-muted-foreground">
1746
+ {t(healthDescriptionKey)}
1747
+ </p>
1748
+ </div>
1749
+ </div>
1750
+ {healthStatus === "recommend_bigquery" &&
1751
+ !bigQueryConfigured ? (
1752
+ <Button asChild size="sm" className="shrink-0 text-xs">
1753
+ <Link to="/data-sources?source=bigquery">
1754
+ {t("dataSources.bigQuerySetup")}
1755
+ </Link>
1756
+ </Button>
1757
+ ) : null}
1758
+ </div>
1759
+ {health && healthStatus !== "unavailable" && (
1760
+ <div className="mt-3 grid grid-cols-3 gap-2 border-t border-border/30 pt-3">
1761
+ <div>
1762
+ <div className="text-muted-foreground">
1763
+ {t("dataSources.analyticsEventCount")}
1764
+ </div>
1765
+ <div className="font-medium text-foreground">
1766
+ {formatNumber(health.metrics.eventCount)}
1767
+ </div>
1768
+ </div>
1769
+ <div>
1770
+ <div className="text-muted-foreground">
1771
+ {t("dataSources.slowQueries24h")}
1772
+ </div>
1773
+ <div className="font-medium text-foreground">
1774
+ {formatNumber(health.metrics.slowQueryCount24h)}
1775
+ </div>
1776
+ </div>
1777
+ <div>
1778
+ <div className="text-muted-foreground">
1779
+ {t("dataSources.maxQueryDuration")}
1780
+ </div>
1781
+ <div className="font-medium text-foreground">
1782
+ {formatNumber(
1783
+ health.metrics.maxQueryDurationMs24h / 1_000,
1784
+ { maximumFractionDigits: 1 },
1785
+ )}
1786
+ s
1787
+ </div>
1788
+ </div>
1789
+ </div>
1790
+ )}
1791
+ </div>
1792
+ )}
1668
1793
  <div className="grid gap-2 rounded-md border border-border/50 bg-muted/20 p-3 text-xs">
1669
1794
  <div className="flex items-center justify-between gap-3">
1670
1795
  <span className="text-muted-foreground">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-08-05
4
+ ---
5
+
6
+ Analytics now flags Neon pressure and guides high-volume tracking queries to BigQuery when needed
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-08-05
4
+ ---
5
+
6
+ First-party analytics uses compact rollups for faster usage and retention queries
@@ -258,6 +258,58 @@ export const analyticsEvents = table("analytics_events", {
258
258
  orgId: text("org_id"),
259
259
  });
260
260
 
261
+ /**
262
+ * Compact daily event counts. The tenant key is non-null so the natural key
263
+ * remains unique for both organization-scoped and personal analytics keys.
264
+ */
265
+ export const analyticsEventDailyRollups = table(
266
+ "analytics_event_daily_rollups",
267
+ {
268
+ id: text("id").primaryKey(),
269
+ tenantKey: text("tenant_key").notNull(),
270
+ ownerEmail: text("owner_email").notNull(),
271
+ orgId: text("org_id"),
272
+ eventDate: text("event_date").notNull(),
273
+ eventName: text("event_name").notNull(),
274
+ app: text("app").notNull().default(""),
275
+ template: text("template").notNull().default(""),
276
+ eventCount: integer("event_count").notNull().default(0),
277
+ },
278
+ );
279
+
280
+ /** One row per identifiable visitor and normalized event day. */
281
+ export const analyticsUserDays = table("analytics_user_days", {
282
+ id: text("id").primaryKey(),
283
+ tenantKey: text("tenant_key").notNull(),
284
+ ownerEmail: text("owner_email").notNull(),
285
+ orgId: text("org_id"),
286
+ eventDate: text("event_date").notNull(),
287
+ userKey: text("user_key").notNull(),
288
+ });
289
+
290
+ /**
291
+ * Compact pressure signals for first-party queries that are already slow or
292
+ * failing. Successful fast queries never write here, so the diagnostic path
293
+ * cannot become another hot-path event log.
294
+ */
295
+ export const analyticsQueryPressureDaily = table(
296
+ "analytics_query_pressure_daily",
297
+ {
298
+ id: text("id").primaryKey(),
299
+ tenantKey: text("tenant_key").notNull(),
300
+ ownerEmail: text("owner_email").notNull(),
301
+ orgId: text("org_id"),
302
+ eventDate: text("event_date").notNull(),
303
+ queryClass: text("query_class").notNull(),
304
+ slowQueryCount: integer("slow_query_count").notNull().default(0),
305
+ timeoutCount: integer("timeout_count").notNull().default(0),
306
+ errorCount: integer("error_count").notNull().default(0),
307
+ totalDurationMs: integer("total_duration_ms").notNull().default(0),
308
+ maxDurationMs: integer("max_duration_ms").notNull().default(0),
309
+ lastSeenAt: text("last_seen_at").notNull(),
310
+ },
311
+ );
312
+
261
313
  /**
262
314
  * Generic alert rules over first-party analytics events. Rules are owned by a
263
315
  * user/org but can target any app, template, event name, or event property.
@@ -57,6 +57,8 @@ export const credentialKeys: CredentialKeyConfig[] = [
57
57
  { key: "POSTHOG_API_KEY", label: "PostHog API Key", required: false },
58
58
  { key: "POSTHOG_PROJECT_ID", label: "PostHog Project ID", required: false },
59
59
  { key: "POSTHOG_HOST", label: "PostHog Host", required: false },
60
+ // FullStory Server API fallback for structured reads
61
+ { key: "FULLSTORY_API_KEY", label: "FullStory API key", required: false },
60
62
  // PostgreSQL (user's external DB, not the app's DATABASE_URL)
61
63
  { key: "POSTGRES_URL", label: "PostgreSQL URL", required: false },
62
64
  // Stripe
@@ -342,6 +344,7 @@ const credentialAliases: Record<string, string[]> = {
342
344
  postgres: ["POSTGRES_URL"],
343
345
  postgresql: ["POSTGRES_URL"],
344
346
  posthog: ["POSTHOG_API_KEY", "POSTHOG_PROJECT_ID", "POSTHOG_HOST"],
347
+ fullstory: ["FULLSTORY_API_KEY"],
345
348
  prometheus: [
346
349
  "PROMETHEUS_URL",
347
350
  "PROMETHEUS_USERNAME",