@agent-native/core 0.137.8 → 0.139.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 (472) 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/dashboard-report.ts +2 -0
  22. package/corpus/templates/analytics/server/lib/emails.ts +51 -0
  23. package/corpus/templates/analytics/server/lib/first-party-analytics-health.ts +397 -0
  24. package/corpus/templates/analytics/server/lib/first-party-analytics-rollups.ts +182 -0
  25. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +86 -15
  26. package/corpus/templates/analytics/server/lib/provider-api.ts +20 -1
  27. package/corpus/templates/analytics/server/lib/replay-storage.ts +1 -1
  28. package/corpus/templates/analytics/server/plugins/agent-chat.ts +1 -0
  29. package/corpus/templates/analytics/server/plugins/db.ts +60 -0
  30. package/corpus/templates/analytics/server/plugins/transactional-emails.ts +5 -0
  31. package/corpus/templates/assets/.agents/skills/agent-native-docs/SKILL.md +23 -3
  32. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  33. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +23 -2
  34. package/corpus/templates/assets/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  35. package/corpus/templates/assets/agent-native.json +12 -0
  36. package/corpus/templates/assets/server/lib/generation.ts +8 -8
  37. package/corpus/templates/assets/server/lib/storage.ts +1 -1
  38. package/corpus/templates/assets/server/plugins/onboarding.ts +1 -1
  39. package/corpus/templates/brain/.agents/skills/agent-native-docs/SKILL.md +23 -3
  40. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  41. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +23 -2
  42. package/corpus/templates/brain/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  43. package/corpus/templates/brain/agent-native.json +12 -0
  44. package/corpus/templates/calendar/.agents/skills/agent-native-docs/SKILL.md +23 -3
  45. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  46. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +23 -2
  47. package/corpus/templates/calendar/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  48. package/corpus/templates/calendar/agent-native.json +12 -0
  49. package/corpus/templates/calendar/server/lib/booking-emails.ts +154 -70
  50. package/corpus/templates/calendar/server/lib/emails.ts +167 -0
  51. package/corpus/templates/calendar/server/lib/event-guest-notifications.ts +64 -28
  52. package/corpus/templates/calendar/server/plugins/transactional-emails.ts +5 -0
  53. package/corpus/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  54. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  55. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  56. package/corpus/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  57. package/corpus/templates/chat/AGENTS.md +3 -0
  58. package/corpus/templates/chat/DESIGN.md +28 -0
  59. package/corpus/templates/chat/agent-native.json +12 -0
  60. package/corpus/templates/clips/.agents/skills/agent-native-docs/SKILL.md +23 -3
  61. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  62. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +23 -2
  63. package/corpus/templates/clips/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  64. package/corpus/templates/clips/actions/cleanup-transcript.ts +2 -2
  65. package/corpus/templates/clips/actions/delete-recording-permanent.ts +3 -0
  66. package/corpus/templates/clips/actions/get-playback-position.ts +68 -0
  67. package/corpus/templates/clips/actions/import-loom-recording.ts +2 -2
  68. package/corpus/templates/clips/actions/invite-member.ts +39 -15
  69. package/corpus/templates/clips/actions/save-playback-position.ts +80 -0
  70. package/corpus/templates/clips/actions/set-thumbnail.ts +1 -1
  71. package/corpus/templates/clips/agent-native.json +12 -0
  72. package/corpus/templates/clips/app/components/player/video-player.tsx +54 -5
  73. package/corpus/templates/clips/app/hooks/use-playback-position.ts +188 -0
  74. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -24
  75. package/corpus/templates/clips/app/lib/playback-position.ts +99 -0
  76. package/corpus/templates/clips/app/lib/viewer-session.ts +29 -0
  77. package/corpus/templates/clips/changelog/2026-08-05-clip-buffering-now-uses-buffering-copy-after-playback.md +6 -0
  78. package/corpus/templates/clips/changelog/2026-08-05-clips-remembers-your-playback-position-when-you-reopen-a-cli.md +6 -0
  79. package/corpus/templates/clips/learnings.defaults.md +1 -1
  80. package/corpus/templates/clips/server/db/schema.ts +18 -0
  81. package/corpus/templates/clips/server/lib/emails.ts +256 -0
  82. package/corpus/templates/clips/server/lib/public-agent-context.ts +1 -1
  83. package/corpus/templates/clips/server/lib/transactional-email-templates.ts +24 -0
  84. package/corpus/templates/clips/server/lib/video-storage.ts +1 -1
  85. package/corpus/templates/clips/server/plugins/db.ts +15 -0
  86. package/corpus/templates/clips/server/plugins/transactional-email-catalog.ts +5 -0
  87. package/corpus/templates/clips/server/routes/api/media/index.post.ts +1 -1
  88. package/corpus/templates/content/.agents/skills/agent-native-docs/SKILL.md +23 -3
  89. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  90. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +13 -0
  91. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +23 -2
  92. package/corpus/templates/content/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  93. package/corpus/templates/content/AGENTS.md +1 -0
  94. package/corpus/templates/content/actions/_content-database-mutation-lock.ts +41 -0
  95. package/corpus/templates/content/actions/_content-database-row-migration.ts +569 -0
  96. package/corpus/templates/content/actions/_database-source-utils.ts +82 -36
  97. package/corpus/templates/content/actions/_database-utils.ts +5 -0
  98. package/corpus/templates/content/actions/_delete-content-space.ts +25 -11
  99. package/corpus/templates/content/actions/add-database-item.ts +60 -42
  100. package/corpus/templates/content/actions/attach-content-database-source.ts +2 -0
  101. package/corpus/templates/content/actions/configure-document-property.ts +99 -104
  102. package/corpus/templates/content/actions/delete-content-database.ts +19 -7
  103. package/corpus/templates/content/actions/delete-document-property.ts +47 -58
  104. package/corpus/templates/content/actions/delete-document.ts +390 -167
  105. package/corpus/templates/content/actions/disconnect-content-database-source.ts +41 -24
  106. package/corpus/templates/content/actions/duplicate-database-item.ts +63 -31
  107. package/corpus/templates/content/actions/duplicate-database-items.ts +86 -43
  108. package/corpus/templates/content/actions/duplicate-document-property.ts +37 -14
  109. package/corpus/templates/content/actions/migrate-content-database-rows.ts +830 -0
  110. package/corpus/templates/content/actions/move-database-item.ts +14 -0
  111. package/corpus/templates/content/actions/permanently-delete-document.ts +27 -6
  112. package/corpus/templates/content/actions/remove-database-items.ts +13 -0
  113. package/corpus/templates/content/actions/reorder-document-property.ts +45 -46
  114. package/corpus/templates/content/actions/set-document-property.ts +68 -28
  115. package/corpus/templates/content/actions/submit-content-database-form.ts +49 -0
  116. package/corpus/templates/content/actions/transcribe-media.ts +1 -1
  117. package/corpus/templates/content/agent-native.json +12 -0
  118. package/corpus/templates/content/app/components/editor/image-upload.ts +2 -2
  119. package/corpus/templates/content/app/i18n-data.ts +1 -1
  120. package/corpus/templates/content/changelog/2026-08-01-content-can-reorganize-every-row-in-an-existing-database-as-.md +6 -0
  121. package/corpus/templates/content/parity/matrix.md +1 -1
  122. package/corpus/templates/content/parity/matrix.ts +4 -2
  123. package/corpus/templates/content/server/db/schema.ts +30 -0
  124. package/corpus/templates/content/server/lib/comment-notifications.ts +57 -26
  125. package/corpus/templates/content/server/lib/emails.ts +70 -0
  126. package/corpus/templates/content/server/plugins/db.ts +24 -0
  127. package/corpus/templates/content/server/plugins/onboarding.ts +2 -2
  128. package/corpus/templates/content/server/plugins/transactional-emails.ts +5 -0
  129. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +23 -3
  130. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  131. package/corpus/templates/crm/agent-native.json +12 -0
  132. package/corpus/templates/design/.agents/skills/agent-native-docs/SKILL.md +23 -3
  133. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  134. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +23 -2
  135. package/corpus/templates/design/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  136. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +2 -2
  137. package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +2 -2
  138. package/corpus/templates/design/actions/apply-design-token-edit.ts +1 -1
  139. package/corpus/templates/design/actions/capture-design-state.ts +1 -1
  140. package/corpus/templates/design/actions/connect-builder-app.ts +2 -2
  141. package/corpus/templates/design/actions/create-design-branch.ts +1 -1
  142. package/corpus/templates/design/actions/create-fusion-app.ts +3 -3
  143. package/corpus/templates/design/actions/deploy-design-preview.ts +1 -1
  144. package/corpus/templates/design/actions/get-component-details.ts +1 -1
  145. package/corpus/templates/design/actions/get-design-branch-diff.ts +1 -1
  146. package/corpus/templates/design/actions/index-components.ts +3 -3
  147. package/corpus/templates/design/actions/index-design-system-with-builder.ts +1 -1
  148. package/corpus/templates/design/actions/migrate-inline-design-to-app.ts +3 -3
  149. package/corpus/templates/design/actions/open-component-source.ts +1 -1
  150. package/corpus/templates/design/actions/update-design.ts +61 -0
  151. package/corpus/templates/design/agent-native.json +12 -0
  152. package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +1 -1
  153. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +1 -1
  154. package/corpus/templates/design/scripts/qa-figma-stress-import.ts +1 -1
  155. package/corpus/templates/design/server/lib/figma-node-import.ts +1 -1
  156. package/corpus/templates/design/shared/design-source-capabilities.ts +25 -9
  157. package/corpus/templates/dispatch/.agents/skills/agent-native-docs/SKILL.md +23 -3
  158. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  159. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +23 -2
  160. package/corpus/templates/dispatch/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  161. package/corpus/templates/dispatch/agent-native.json +12 -0
  162. package/corpus/templates/dispatch/app/routes/transactional-email.$appId.$id.tsx +4 -0
  163. package/corpus/templates/dispatch/app/routes/transactional-email.tsx +4 -0
  164. package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +23 -3
  165. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  166. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +23 -2
  167. package/corpus/templates/factory/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  168. package/corpus/templates/factory/agent-native.json +12 -0
  169. package/corpus/templates/forms/.agents/skills/agent-native-docs/SKILL.md +23 -3
  170. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  171. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +23 -2
  172. package/corpus/templates/forms/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  173. package/corpus/templates/forms/actions/export-responses.ts +1 -1
  174. package/corpus/templates/forms/agent-native.json +12 -0
  175. package/corpus/templates/forms/server/lib/emails.ts +52 -0
  176. package/corpus/templates/forms/server/lib/response-email.ts +2 -0
  177. package/corpus/templates/forms/server/plugins/transactional-emails.ts +5 -0
  178. package/corpus/templates/macros/.agents/skills/agent-native-docs/SKILL.md +23 -3
  179. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  180. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +23 -2
  181. package/corpus/templates/macros/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  182. package/corpus/templates/macros/agent-native.json +12 -0
  183. package/corpus/templates/mail/.agents/skills/agent-native-docs/SKILL.md +23 -3
  184. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  185. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +23 -2
  186. package/corpus/templates/mail/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  187. package/corpus/templates/mail/agent-native.json +12 -0
  188. package/corpus/templates/mail/app/i18n/en-US.ts +1 -1
  189. package/corpus/templates/mail/server/lib/media-upload.ts +1 -1
  190. package/corpus/templates/plan/.agents/skills/agent-native-docs/SKILL.md +23 -3
  191. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  192. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +23 -2
  193. package/corpus/templates/plan/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  194. package/corpus/templates/plan/actions/request-plan-access.ts +33 -12
  195. package/corpus/templates/plan/agent-native.json +12 -0
  196. package/corpus/templates/plan/server/lib/comment-notifications.ts +53 -27
  197. package/corpus/templates/plan/server/lib/emails.ts +67 -0
  198. package/corpus/templates/plan/server/lib/plan-assets.ts +1 -1
  199. package/corpus/templates/plan/server/plugins/transactional-emails.ts +5 -0
  200. package/corpus/templates/slides/.agents/skills/agent-native-docs/SKILL.md +23 -3
  201. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  202. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +23 -2
  203. package/corpus/templates/slides/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  204. package/corpus/templates/slides/actions/generate-image-api.ts +1 -1
  205. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  206. package/corpus/templates/slides/actions/import-file.ts +2 -2
  207. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
  208. package/corpus/templates/slides/agent-native.json +12 -0
  209. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +1 -1
  210. package/corpus/templates/slides/app/i18n/en-US.ts +2 -2
  211. package/corpus/templates/slides/app/lib/deck-sorting.ts +19 -0
  212. package/corpus/templates/slides/app/lib/image-drop-to-agent.ts +1 -1
  213. package/corpus/templates/slides/app/pages/Index.tsx +7 -2
  214. package/corpus/templates/slides/changelog/2026-08-05-decks-are-now-sorted-by-most-recently-updated.md +6 -0
  215. package/corpus/templates/slides/server/handlers/assets.ts +1 -1
  216. package/corpus/templates/slides/server/handlers/uploads.ts +1 -1
  217. package/corpus/templates/slides/server/lib/comment-notifications.ts +44 -21
  218. package/corpus/templates/slides/server/lib/emails.ts +40 -0
  219. package/corpus/templates/slides/server/plugins/transactional-emails.ts +5 -0
  220. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +23 -3
  221. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  222. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +23 -2
  223. package/corpus/templates/tasks/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  224. package/corpus/templates/tasks/agent-native.json +12 -0
  225. package/dist/action.d.ts +6 -0
  226. package/dist/agent/engine/builder-engine.js +2 -2
  227. package/dist/agent/engine/credential-errors.d.ts +1 -1
  228. package/dist/agent/engine/credential-errors.js +2 -2
  229. package/dist/agent/production-agent.js +3 -2
  230. package/dist/brand-kit/fig/index.js +1 -1
  231. package/dist/cli/agent.js +45 -3
  232. package/dist/cli/code-agent-executor.js +2 -1
  233. package/dist/cli/create.d.ts +9 -1
  234. package/dist/cli/create.js +94 -1
  235. package/dist/cli/doctor.d.ts +8 -11
  236. package/dist/cli/doctor.js +92 -24
  237. package/dist/cli/index.js +6 -5
  238. package/dist/client/AgentAskPopover.d.ts +3 -1
  239. package/dist/client/AgentAskPopover.js +2 -2
  240. package/dist/client/AgentPanel.js +9 -3
  241. package/dist/client/AssistantChat.js +54 -33
  242. package/dist/client/MultiTabAssistantChat.js +1 -1
  243. package/dist/client/RouteTransitionIndicator.d.ts +7 -0
  244. package/dist/client/RouteTransitionIndicator.js +31 -0
  245. package/dist/client/agent-engine-key.js +1 -1
  246. package/dist/client/app-providers.js +11 -2
  247. package/dist/client/chat/message-components.js +1 -1
  248. package/dist/client/chat/run-recovery.js +1 -1
  249. package/dist/client/chat/tool-call-display.d.ts +3 -1
  250. package/dist/client/chat/tool-call-display.js +4 -3
  251. package/dist/client/chat-model-groups.d.ts +6 -0
  252. package/dist/client/chat-model-groups.js +11 -0
  253. package/dist/client/error-format.js +1 -1
  254. package/dist/client/i18n.js +1 -1
  255. package/dist/client/onboarding/FirstRunOnboarding.d.ts +5 -1
  256. package/dist/client/onboarding/FirstRunOnboarding.js +29 -13
  257. package/dist/client/onboarding/first-run-enabled.d.ts +6 -1
  258. package/dist/client/onboarding/first-run-enabled.js +33 -3
  259. package/dist/client/onboarding/use-onboarding.js +16 -11
  260. package/dist/client/resources/mcp-integration-catalog.js +26 -0
  261. package/dist/client/resources/mcp-integration-logos.js +4 -0
  262. package/dist/client/route-warmup.js +56 -10
  263. package/dist/client/settings/AccountSettingsCard.js +78 -3
  264. package/dist/client/settings/SettingsPanel.js +1 -1
  265. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  266. package/dist/client/settings/useBuilderStatus.js +1 -1
  267. package/dist/client/setup-connections/useBuilderConnectCardController.js +1 -1
  268. package/dist/client/ui/index.d.ts +1 -0
  269. package/dist/client/ui/index.js +1 -0
  270. package/dist/client/uploads/upload-editor-image.js +1 -1
  271. package/dist/client/use-chat-threads.js +3 -0
  272. package/dist/collab/routes.d.ts +1 -1
  273. package/dist/config.d.ts +48 -0
  274. package/dist/config.js +111 -0
  275. package/dist/db/migrations.js +5 -0
  276. package/dist/eject/provider-api-definitions.d.ts +1 -1
  277. package/dist/eject/provider-api-definitions.js +1 -0
  278. package/dist/eject/remote-mcp-presets.js +1 -0
  279. package/dist/email-catalog/actions/list-email-activity.d.ts +6 -0
  280. package/dist/email-catalog/actions/list-email-activity.js +15 -0
  281. package/dist/email-catalog/actions/list-email-engagement.d.ts +6 -0
  282. package/dist/email-catalog/actions/list-email-engagement.js +15 -0
  283. package/dist/email-catalog/actions/list-email-log.d.ts +8 -0
  284. package/dist/email-catalog/actions/list-email-log.js +22 -0
  285. package/dist/email-catalog/actions/list-transactional-emails.d.ts +23 -0
  286. package/dist/email-catalog/actions/list-transactional-emails.js +61 -0
  287. package/dist/email-catalog/actions/render-transactional-email-preview.d.ts +10 -0
  288. package/dist/email-catalog/actions/render-transactional-email-preview.js +24 -0
  289. package/dist/email-catalog/authorize.d.ts +2 -0
  290. package/dist/email-catalog/authorize.js +10 -0
  291. package/dist/email-catalog/log.d.ts +57 -0
  292. package/dist/email-catalog/log.js +117 -0
  293. package/dist/email-catalog/provider-metrics.d.ts +34 -0
  294. package/dist/email-catalog/provider-metrics.js +165 -0
  295. package/dist/email-catalog/registry.d.ts +79 -0
  296. package/dist/email-catalog/registry.js +71 -0
  297. package/dist/email-catalog/schema.d.ts +212 -0
  298. package/dist/email-catalog/schema.js +49 -0
  299. package/dist/email-catalog/system-emails.d.ts +14 -0
  300. package/dist/email-catalog/system-emails.js +68 -0
  301. package/dist/extensions/web-search-tool.js +2 -2
  302. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  303. package/dist/file-upload/actions/upload-image.js +1 -1
  304. package/dist/file-upload/registry.js +1 -1
  305. package/dist/guards/index.d.ts +3 -0
  306. package/dist/guards/index.js +2 -0
  307. package/dist/guards/no-empty-migrations.d.ts +14 -0
  308. package/dist/guards/no-empty-migrations.js +126 -0
  309. package/dist/index.browser.d.ts +1 -0
  310. package/dist/index.browser.js +3 -0
  311. package/dist/index.d.ts +1 -0
  312. package/dist/index.js +1 -0
  313. package/dist/localization/default-messages.d.ts +69 -0
  314. package/dist/localization/default-messages.js +71 -2
  315. package/dist/notifications/routes.d.ts +2 -2
  316. package/dist/onboarding/app-profile.js +1 -1
  317. package/dist/onboarding/plugin.d.ts +2 -0
  318. package/dist/onboarding/plugin.js +29 -2
  319. package/dist/org/handlers.js +8 -1
  320. package/dist/provider-api/actions/custom-provider-registration.d.ts +11 -11
  321. package/dist/provider-api/actions/provider-api.d.ts +13 -13
  322. package/dist/provider-api/index.d.ts +4 -4
  323. package/dist/provider-api/index.js +35 -0
  324. package/dist/resources/handlers.d.ts +1 -1
  325. package/dist/resources/handlers.js +1 -1
  326. package/dist/scripts/docs/framework-search.d.ts +9 -0
  327. package/dist/scripts/docs/framework-search.js +239 -0
  328. package/dist/scripts/docs/index.js +1 -0
  329. package/dist/scripts/docs/search.d.ts +10 -0
  330. package/dist/scripts/docs/search.js +1 -1
  331. package/dist/scripts/docs/source-search.d.ts +10 -2
  332. package/dist/scripts/docs/source-search.js +108 -41
  333. package/dist/search-utils/index.d.ts +11 -0
  334. package/dist/search-utils/index.js +72 -0
  335. package/dist/server/action-change.d.ts +6 -0
  336. package/dist/server/action-change.js +28 -14
  337. package/dist/server/action-discovery.js +31 -0
  338. package/dist/server/action-routes.js +1 -0
  339. package/dist/server/agent-chat/browser-team-tools.js +1 -1
  340. package/dist/server/agent-chat/script-entries.js +43 -2
  341. package/dist/server/auth-login-mode.d.ts +8 -0
  342. package/dist/server/auth-login-mode.js +17 -0
  343. package/dist/server/auth.js +100 -15
  344. package/dist/server/better-auth-instance.d.ts +36 -0
  345. package/dist/server/better-auth-instance.js +42 -5
  346. package/dist/server/builder-design-systems.js +1 -1
  347. package/dist/server/core-routes-plugin.js +17 -14
  348. package/dist/server/credential-provider.js +3 -3
  349. package/dist/server/email-templates.d.ts +7 -0
  350. package/dist/server/email-templates.js +24 -0
  351. package/dist/server/email.d.ts +26 -0
  352. package/dist/server/email.js +66 -4
  353. package/dist/server/framework-request-handler.js +6 -0
  354. package/dist/server/index.d.ts +1 -0
  355. package/dist/server/index.js +1 -0
  356. package/dist/server/onboarding-html.d.ts +2 -0
  357. package/dist/server/onboarding-html.js +169 -8
  358. package/dist/server/realtime-token.d.ts +1 -1
  359. package/dist/server/realtime-voice.js +1 -1
  360. package/dist/server/sentry.d.ts +1 -1
  361. package/dist/server/transcribe-voice.js +3 -3
  362. package/dist/shared/first-run-onboarding.d.ts +1 -0
  363. package/dist/shared/first-run-onboarding.js +1 -0
  364. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  365. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  366. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  367. package/dist/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  368. package/dist/templates/chat/AGENTS.md +3 -0
  369. package/dist/templates/chat/DESIGN.md +28 -0
  370. package/dist/templates/chat/agent-native.json +12 -0
  371. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  372. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  373. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  374. package/dist/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  375. package/dist/templates/default/AGENTS.md +4 -0
  376. package/dist/templates/default/DESIGN.md +30 -0
  377. package/dist/templates/default/agent-native.json +9 -0
  378. package/dist/templates/default/app/i18n/ar-SA.ts +2 -2
  379. package/dist/templates/default/app/i18n/de-DE.ts +2 -2
  380. package/dist/templates/default/app/i18n/en-US.ts +2 -2
  381. package/dist/templates/default/app/i18n/es-ES.ts +2 -2
  382. package/dist/templates/default/app/i18n/fr-FR.ts +2 -2
  383. package/dist/templates/default/app/i18n/hi-IN.ts +2 -2
  384. package/dist/templates/default/app/i18n/ja-JP.ts +2 -2
  385. package/dist/templates/default/app/i18n/ko-KR.ts +2 -2
  386. package/dist/templates/default/app/i18n/pt-BR.ts +2 -2
  387. package/dist/templates/default/app/i18n/zh-CN.ts +2 -2
  388. package/dist/templates/default/app/i18n/zh-TW.ts +1 -1
  389. package/dist/templates/default/package.json +1 -0
  390. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  391. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  392. package/dist/templates/headless/agent-native.json +9 -0
  393. package/dist/templates/headless/package.json +2 -0
  394. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  395. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  396. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  397. package/dist/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  398. package/dist/templates/workspace-core/AGENTS.md +3 -0
  399. package/dist/templates/workspace-core/DESIGN.md +35 -0
  400. package/dist/templates/workspace-root/AGENTS.md +3 -0
  401. package/dist/templates/workspace-root/DESIGN.md +35 -0
  402. package/dist/templates/workspace-root/agent-native.json +9 -0
  403. package/dist/templates/workspace-root/package.json +3 -0
  404. package/dist/transcription/builder-transcription.js +1 -1
  405. package/dist/user-profile/actions/change-password.d.ts +8 -0
  406. package/dist/user-profile/actions/change-password.js +24 -0
  407. package/dist/user-profile/actions/get-auth-methods.d.ts +6 -0
  408. package/dist/user-profile/actions/get-auth-methods.js +23 -0
  409. package/dist/user-profile/actions/set-password.d.ts +7 -0
  410. package/dist/user-profile/actions/set-password.js +23 -0
  411. package/dist/vite/client.d.ts +8 -1
  412. package/dist/vite/client.js +63 -12
  413. package/dist/vite/index.d.ts +1 -0
  414. package/dist/vite/index.js +1 -0
  415. package/docs/AGENTS.md +7 -2
  416. package/docs/SKILL.md +7 -5
  417. package/docs/content/agent-native-config.mdx +165 -0
  418. package/docs/content/agent-native-toolkit.mdx +1 -1
  419. package/docs/content/deployment.mdx +7 -2
  420. package/docs/content/doctor.mdx +21 -13
  421. package/docs/content/environment-variables.mdx +158 -0
  422. package/docs/content/file-uploads.mdx +1 -1
  423. package/docs/content/getting-started.mdx +1 -1
  424. package/docs/content/key-concepts.mdx +1 -1
  425. package/docs/content/multi-app-workspace.mdx +1 -1
  426. package/docs/content/template-clips-ai-and-editing.mdx +6 -6
  427. package/docs/content/template-clips-developers.mdx +3 -3
  428. package/docs/content/toolkit-settings.mdx +1 -1
  429. package/docs/content/voice-input.mdx +4 -4
  430. package/package.json +7 -2
  431. package/src/eject/provider-api-definitions.ts +1 -0
  432. package/src/eject/remote-mcp-presets.ts +1 -0
  433. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  434. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  435. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  436. package/src/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  437. package/src/templates/chat/AGENTS.md +3 -0
  438. package/src/templates/chat/DESIGN.md +28 -0
  439. package/src/templates/chat/agent-native.json +12 -0
  440. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  441. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  442. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  443. package/src/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  444. package/src/templates/default/AGENTS.md +4 -0
  445. package/src/templates/default/DESIGN.md +30 -0
  446. package/src/templates/default/agent-native.json +9 -0
  447. package/src/templates/default/app/i18n/ar-SA.ts +2 -2
  448. package/src/templates/default/app/i18n/de-DE.ts +2 -2
  449. package/src/templates/default/app/i18n/en-US.ts +2 -2
  450. package/src/templates/default/app/i18n/es-ES.ts +2 -2
  451. package/src/templates/default/app/i18n/fr-FR.ts +2 -2
  452. package/src/templates/default/app/i18n/hi-IN.ts +2 -2
  453. package/src/templates/default/app/i18n/ja-JP.ts +2 -2
  454. package/src/templates/default/app/i18n/ko-KR.ts +2 -2
  455. package/src/templates/default/app/i18n/pt-BR.ts +2 -2
  456. package/src/templates/default/app/i18n/zh-CN.ts +2 -2
  457. package/src/templates/default/app/i18n/zh-TW.ts +1 -1
  458. package/src/templates/default/package.json +1 -0
  459. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  460. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  461. package/src/templates/headless/agent-native.json +9 -0
  462. package/src/templates/headless/package.json +2 -0
  463. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  464. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  465. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  466. package/src/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  467. package/src/templates/workspace-core/AGENTS.md +3 -0
  468. package/src/templates/workspace-core/DESIGN.md +35 -0
  469. package/src/templates/workspace-root/AGENTS.md +3 -0
  470. package/src/templates/workspace-root/DESIGN.md +35 -0
  471. package/src/templates/workspace-root/agent-native.json +9 -0
  472. package/src/templates/workspace-root/package.json +3 -0
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Refuse empty `runMigrations([])` plugins. The migration runner itself is
3
+ * safe for an empty list, but an empty plugin usually means a serverless boot
4
+ * is still paying for a database migration check that has no work to do.
5
+ */
6
+ import path from "node:path";
7
+ import { lineColForOffset, readFileSafe, relPosix, walk, } from "./scan-utils.js";
8
+ const EMPTY_MIGRATIONS_RE = /\brunMigrations\s*\(\s*\[\s*\]/g;
9
+ const ALLOW_MARKER_RE = /guard:allow-empty-migrations\s*[—-]\s*\S/;
10
+ const SOURCE_EXTENSIONS = /\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs)$/i;
11
+ const TEST_FILE = /\.(?:spec|test)\.(?:ts|tsx|mts|cts|js|jsx|mjs|cjs)$/i;
12
+ /** Mask comments and string literals while preserving offsets and newlines. */
13
+ function maskNonCode(source) {
14
+ const output = source.split("");
15
+ let state = "code";
16
+ let escaped = false;
17
+ for (let index = 0; index < source.length; index += 1) {
18
+ const char = source[index] ?? "";
19
+ const next = source[index + 1] ?? "";
20
+ if (state === "code") {
21
+ if (char === "/" && next === "/") {
22
+ output[index] = output[index + 1] = " ";
23
+ state = "line";
24
+ index += 1;
25
+ }
26
+ else if (char === "/" && next === "*") {
27
+ output[index] = output[index + 1] = " ";
28
+ state = "block";
29
+ index += 1;
30
+ }
31
+ else if (char === "'") {
32
+ output[index] = " ";
33
+ state = "single";
34
+ }
35
+ else if (char === '"') {
36
+ output[index] = " ";
37
+ state = "double";
38
+ }
39
+ else if (char === "`") {
40
+ output[index] = " ";
41
+ state = "template";
42
+ }
43
+ continue;
44
+ }
45
+ if (char !== "\n" && char !== "\r")
46
+ output[index] = " ";
47
+ if (state === "line") {
48
+ if (char === "\n")
49
+ state = "code";
50
+ continue;
51
+ }
52
+ if (state === "block") {
53
+ if (char === "*" && next === "/") {
54
+ output[index + 1] = " ";
55
+ state = "code";
56
+ index += 1;
57
+ }
58
+ continue;
59
+ }
60
+ if (escaped) {
61
+ escaped = false;
62
+ continue;
63
+ }
64
+ if (char === "\\") {
65
+ escaped = true;
66
+ continue;
67
+ }
68
+ if ((state === "single" && char === "'") ||
69
+ (state === "double" && char === '"') ||
70
+ (state === "template" && char === "`")) {
71
+ state = "code";
72
+ }
73
+ }
74
+ return output.join("");
75
+ }
76
+ function hasAdjacentAllow(source, line) {
77
+ const lines = source.split(/\r?\n/);
78
+ const current = line - 1;
79
+ for (let index = current; index >= Math.max(0, current - 2); index -= 1) {
80
+ const text = lines[index] ?? "";
81
+ if (ALLOW_MARKER_RE.test(text))
82
+ return true;
83
+ if (index < current && text.trim() && !/^\s*(?:\/\/|\/\*|\*)/.test(text)) {
84
+ break;
85
+ }
86
+ }
87
+ return false;
88
+ }
89
+ export function analyzeEmptyMigrationsSource({ file, source, }) {
90
+ const findings = [];
91
+ const code = maskNonCode(source);
92
+ for (const match of code.matchAll(EMPTY_MIGRATIONS_RE)) {
93
+ const line = lineColForOffset(source, match.index ?? 0).line;
94
+ if (hasAdjacentAllow(source, line))
95
+ continue;
96
+ findings.push({
97
+ file,
98
+ line,
99
+ message: "empty runMigrations list performs needless migration startup work; remove the call or provide real migrations",
100
+ });
101
+ }
102
+ return findings;
103
+ }
104
+ export function shouldScanEmptyMigrationsFile(relativeFile) {
105
+ const normalized = relativeFile.split(path.sep).join("/");
106
+ if (!SOURCE_EXTENSIONS.test(normalized) || TEST_FILE.test(normalized)) {
107
+ return false;
108
+ }
109
+ return !normalized
110
+ .split("/")
111
+ .some((segment) => segment === "node_modules" || segment === "vendor");
112
+ }
113
+ export function scanEmptyMigrations({ root }) {
114
+ const findings = [];
115
+ for (const file of walk(root)) {
116
+ const relativeFile = relPosix(root, file);
117
+ if (!shouldScanEmptyMigrationsFile(relativeFile))
118
+ continue;
119
+ const source = readFileSafe(file);
120
+ if (source === null)
121
+ continue;
122
+ findings.push(...analyzeEmptyMigrationsSource({ file: relativeFile, source }));
123
+ }
124
+ return { name: "no-empty-migrations", findings };
125
+ }
126
+ //# sourceMappingURL=no-empty-migrations.js.map
@@ -1,3 +1,4 @@
1
+ export * from "./config.js";
1
2
  export { addContextToAgentChat, appendAgentChatContextToMessage, clearAgentChatContext, formatAgentChatContextItemsForPrompt, listAgentChatContext, refreshAgentChatContext, removeAgentChatContextItem, sendToAgentChat, sendToAgentChatAndConfirm, setAgentChatContextItem, setContextToAgentChat, isEmbedMcpChatBridgeActive, useAgentChatContext, useAgentChatGenerating, useDevMode, useSendToAgentChat, AGENT_NATIVE_MCP_APP_HOST_MESSAGE_TYPES, getMcpAppHostContext, openMcpAppHostLink, requestMcpAppDisplayMode, sendMcpAppHostMessage, updateMcpAppModelContext, useMcpAppHostContext, CodeRequiredDialog, AgentNativeI18nProvider, LanguagePicker, getLocaleInitScript, localeDirection, normalizeLocaleCode, normalizeLocalePreference, normalizeLocalizationPreference, resolveLocaleFromCandidates, resolveLocaleFromPreference, useFormatters, useLocale, useT, DEFAULT_LOCALE, LOCALE_HYDRATION_GLOBAL, LOCALE_METADATA, LOCALE_STORAGE_KEY, SUPPORTED_LOCALES, useDbSync, useFileWatcher, useSession, cn, ApiKeySettings, type AgentChatContextItem, type AgentChatContextMessage, type AgentChatContextMutationOptions, type AgentChatContextRemoveOptions, type AgentChatContextSetOptions, type AgentChatContextState, type AgentChatMessage, type AgentNativeMcpAppHostMessageType, type McpAppDisplayMode, type McpAppHostChatMessage, type McpAppHostCapabilities, type McpAppHostContext, type McpAppHostContextSnapshot, type McpAppModelContextContentPart, type McpAppModelContextUpdate, type CodeRequiredDialogProps, type AuthSession, type UseAgentChatContextResult, type AgentNativeI18nCatalog, type AgentNativeI18nProviderProps, type LocaleCode, type LocaleHydrationPayload, type LocaleMessages, type LocaleMetadata, type LocalePreference, type LocalizationPreference, } from "./client/index.js";
2
3
  export { agentChat } from "./shared/index.js";
3
4
  export { parseArgs, camelCaseArgs } from "./scripts/parse-args.js";
@@ -1,4 +1,7 @@
1
1
  // Browser-safe entry — only client & shared exports (no Node/Express/chokidar).
2
+ // Public app configuration is serializable and safe to expose to browser
3
+ // consumers alongside the resolved config injected by the Vite preset.
4
+ export * from "./config.js";
2
5
  // Client
3
6
  export { addContextToAgentChat, appendAgentChatContextToMessage, clearAgentChatContext, formatAgentChatContextItemsForPrompt, listAgentChatContext, refreshAgentChatContext, removeAgentChatContextItem, sendToAgentChat, sendToAgentChatAndConfirm, setAgentChatContextItem, setContextToAgentChat, isEmbedMcpChatBridgeActive, useAgentChatContext, useAgentChatGenerating, useDevMode, useSendToAgentChat, AGENT_NATIVE_MCP_APP_HOST_MESSAGE_TYPES, getMcpAppHostContext, openMcpAppHostLink, requestMcpAppDisplayMode, sendMcpAppHostMessage, updateMcpAppModelContext, useMcpAppHostContext, CodeRequiredDialog, AgentNativeI18nProvider, LanguagePicker, getLocaleInitScript, localeDirection, normalizeLocaleCode, normalizeLocalePreference, normalizeLocalizationPreference, resolveLocaleFromCandidates, resolveLocaleFromPreference, useFormatters, useLocale, useT, DEFAULT_LOCALE, LOCALE_HYDRATION_GLOBAL, LOCALE_METADATA, LOCALE_STORAGE_KEY, SUPPORTED_LOCALES, useDbSync, useFileWatcher, useSession, cn, ApiKeySettings, } from "./client/index.js";
4
7
  // Shared (isomorphic)
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./config.js";
1
2
  export { createProductionAgentHandler, type ActionEntry, type ScriptEntry, type ProductionAgentOptions, type ActionTool, type ScriptTool, type AgentMessage, type AgentChatRequest, type AgentChatEvent, type AgentChatAttachment, DEFAULT_MODEL, TripWire, type Processor, type ProcessorState, type ProcessorAbort, } from "./agent/index.js";
2
3
  export { defineAction, AgentActionStopError, isAgentActionStopError, type ActionDefinition, type ActionHttpConfig, type AgentActionStopOptions, type PublicAgentActionConfig, type ActionDeepLink, type ActionLinkBuilder, MCP_APP_EXTENSION_ID, MCP_APP_MIME_TYPE, MCP_APP_RESOURCE_URI_META_KEY, type ActionMcpAppConfig, type ActionMcpAppCsp, type ActionMcpAppCspBuilder, type ActionMcpAppHtmlBuilder, type ActionMcpAppPermissions, type ActionMcpAppResourceConfig, type ActionMcpAppResourceMeta, } from "./action.js";
3
4
  export * from "./user-profile/index.js";
package/dist/index.js CHANGED
@@ -1,5 +1,6 @@
1
1
  // Framework for agent-native apps.
2
2
  // Import everything from "@agent-native/core".
3
+ export * from "./config.js";
3
4
  // Agent (production mode)
4
5
  export { createProductionAgentHandler, DEFAULT_MODEL,
5
6
  // In-loop processors (observers/guardrails for runAgentLoop)
@@ -2,6 +2,10 @@ declare const messages: {
2
2
  workspaceFile: {
3
3
  download: string;
4
4
  };
5
+ composer: {
6
+ sendMessage: string;
7
+ queueMessage: string;
8
+ };
5
9
  home: {
6
10
  settingsTitle: string;
7
11
  settingsDescription: string;
@@ -47,6 +51,21 @@ declare const messages: {
47
51
  profileSaving: string;
48
52
  profileSaved: string;
49
53
  profileSaveError: string;
54
+ passwordTitle: string;
55
+ passwordDescription: string;
56
+ passwordStatusLoading: string;
57
+ passwordAdd: string;
58
+ passwordChange: string;
59
+ passwordCurrentLabel: string;
60
+ passwordNewLabel: string;
61
+ passwordConfirmLabel: string;
62
+ passwordPlaceholder: string;
63
+ passwordMinLength: string;
64
+ passwordMismatch: string;
65
+ passwordSave: string;
66
+ passwordSaving: string;
67
+ passwordSaved: string;
68
+ passwordSaveError: string;
50
69
  profileMenuItem: string;
51
70
  manageAgentMenuItem: string;
52
71
  timezoneLabel: string;
@@ -156,6 +175,7 @@ declare const messages: {
156
175
  resources: string;
157
176
  messaging: string;
158
177
  destinations: string;
178
+ transactionalEmail: string;
159
179
  identities: string;
160
180
  approvals: string;
161
181
  automations: string;
@@ -186,6 +206,50 @@ declare const messages: {
186
206
  suggestionRouteSlack: string;
187
207
  suggestionGrantKey: string;
188
208
  };
209
+ transactionalEmail: {
210
+ title: string;
211
+ description: string;
212
+ retentionTitle: string;
213
+ retentionNote: string;
214
+ openRatesUnavailable: string;
215
+ sharedProviderMetricsUnavailable: string;
216
+ catalogFanoutFailed: string;
217
+ retry: string;
218
+ noApps: string;
219
+ catalogUnreadable: string;
220
+ countsUnreadable: string;
221
+ appSendsNoEmail: string;
222
+ emailNotFound: string;
223
+ emailNotFoundDescription: string;
224
+ sharedTitle: string;
225
+ sharedSubtitle: string;
226
+ email: string;
227
+ trigger: string;
228
+ sends: string;
229
+ openRate: string;
230
+ lastSent: string;
231
+ sendLogUnread: string;
232
+ failedCount: string;
233
+ failuresUnknown: string;
234
+ noProviderRecord: string;
235
+ noDeliveredMail: string;
236
+ neverSent: string;
237
+ lastSentUnknown: string;
238
+ preview: string;
239
+ previewDescription: string;
240
+ previewFailed: string;
241
+ previewFrameTitle: string;
242
+ subject: string;
243
+ activityLink: string;
244
+ activityTitle: string;
245
+ activityUnavailable: string;
246
+ activityEmpty: string;
247
+ recipient: string;
248
+ sender: string;
249
+ status: string;
250
+ opens: string;
251
+ lastEvent: string;
252
+ };
189
253
  pages: {
190
254
  appsDescription: string;
191
255
  appsDescriptionWithWorkspace: string;
@@ -881,6 +945,11 @@ declare const messages: {
881
945
  description: string;
882
946
  useCase: string;
883
947
  };
948
+ fullstory: {
949
+ description: string;
950
+ useCase: string;
951
+ setupNote: string;
952
+ };
884
953
  notion: {
885
954
  description: string;
886
955
  useCase: string;
@@ -7,6 +7,10 @@ const messages = {
7
7
  workspaceFile: {
8
8
  download: "Download",
9
9
  },
10
+ composer: {
11
+ sendMessage: "Send message",
12
+ queueMessage: "Queue message",
13
+ },
10
14
  home: {
11
15
  settingsTitle: "Settings",
12
16
  settingsDescription: "Language and agent preferences",
@@ -52,6 +56,21 @@ const messages = {
52
56
  profileSaving: "Saving...",
53
57
  profileSaved: "Profile updated",
54
58
  profileSaveError: "Could not update profile",
59
+ passwordTitle: "Password",
60
+ passwordDescription: "Add a password for an alternative way to sign in to your account.",
61
+ passwordStatusLoading: "Checking password settings...",
62
+ passwordAdd: "Add password",
63
+ passwordChange: "Change password",
64
+ passwordCurrentLabel: "Current password",
65
+ passwordNewLabel: "New password",
66
+ passwordConfirmLabel: "Confirm new password",
67
+ passwordPlaceholder: "Enter password",
68
+ passwordMinLength: "Password must be at least 8 characters",
69
+ passwordMismatch: "Passwords do not match",
70
+ passwordSave: "Save password",
71
+ passwordSaving: "Saving...",
72
+ passwordSaved: "Password updated",
73
+ passwordSaveError: "Could not update password",
55
74
  profileMenuItem: "Profile",
56
75
  manageAgentMenuItem: "Manage agent",
57
76
  timezoneLabel: "Timezone",
@@ -161,6 +180,7 @@ const messages = {
161
180
  resources: "Resources",
162
181
  messaging: "Messaging",
163
182
  destinations: "Destinations",
183
+ transactionalEmail: "Transactional email",
164
184
  identities: "Identities",
165
185
  approvals: "Approvals",
166
186
  automations: "Automations",
@@ -191,6 +211,50 @@ const messages = {
191
211
  suggestionRouteSlack: "Route Slack mentions to my analytics app",
192
212
  suggestionGrantKey: "Grant my OpenAI key to this app",
193
213
  },
214
+ transactionalEmail: {
215
+ title: "Transactional email",
216
+ description: "Every transactional email each app in this workspace can send, with its trigger, recipients, and delivery metrics.",
217
+ retentionTitle: "Activity feed retention is short",
218
+ retentionNote: "The email provider's activity feed only retains recent messages, so an empty activity list does not mean nothing was sent.",
219
+ openRatesUnavailable: "Open rates unavailable",
220
+ sharedProviderMetricsUnavailable: "Provider metrics vary by sending app. Expand an app to see its provider data.",
221
+ catalogFanoutFailed: "Could not load app email catalogs",
222
+ retry: "Retry",
223
+ noApps: "No ready apps reported a transactional email catalog.",
224
+ catalogUnreadable: "This app's email catalog could not be read",
225
+ countsUnreadable: "Send counts could not be read",
226
+ appSendsNoEmail: "This app sends no transactional email of its own.",
227
+ emailNotFound: "Email not found",
228
+ emailNotFoundDescription: "This email is not in the app's catalog.",
229
+ sharedTitle: "Shared system email",
230
+ sharedSubtitle: "sent by every app",
231
+ email: "Email",
232
+ trigger: "Trigger",
233
+ sends: "Sends",
234
+ openRate: "Open rate",
235
+ lastSent: "Last sent",
236
+ sendLogUnread: "The send log could not be read, so the number of sends is unknown.",
237
+ failedCount: "{{count}} failed",
238
+ failuresUnknown: "failures unknown",
239
+ noProviderRecord: "The provider reported no record for this email in the window.",
240
+ noDeliveredMail: "No delivered mail yet",
241
+ neverSent: "Never sent",
242
+ lastSentUnknown: "The send log could not be read, so the last send time is unknown.",
243
+ preview: "Preview",
244
+ previewDescription: "Rendered with dummy data. Scripts are disabled in this preview.",
245
+ previewFailed: "Preview could not be rendered",
246
+ previewFrameTitle: "Preview of {{name}}",
247
+ subject: "Subject",
248
+ activityLink: "Activity log",
249
+ activityTitle: "Activity for {{name}}",
250
+ activityUnavailable: "Activity feed unavailable",
251
+ activityEmpty: "No recent activity in the provider's retention window.",
252
+ recipient: "Recipient",
253
+ sender: "Sender",
254
+ status: "Status",
255
+ opens: "Opens",
256
+ lastEvent: "Last event",
257
+ },
194
258
  pages: {
195
259
  appsDescription: "Open workspace apps and start new app creation from Dispatch.",
196
260
  appsDescriptionWithWorkspace: 'Apps in the "{{workspace}}" workspace. Each app gets its own route under this workspace and shares its database, auth, and agent chat.',
@@ -669,7 +733,7 @@ const messages = {
669
733
  codeChangeTitle: "This requires a code change",
670
734
  codeChangeBadge: "Code change",
671
735
  connectBuilderTitle: "Connect Builder.io",
672
- connectBuilderDescription: "Connect Builder to enable cloud-based code changes from this app.",
736
+ connectBuilderDescription: "Connect Builder (free tier available) to enable cloud-based code changes from this app.",
673
737
  setupRequired: "Setup required",
674
738
  branchCreated: "Branch created",
675
739
  close: "Close",
@@ -819,7 +883,7 @@ const messages = {
819
883
  networkError: "Network error reaching the server",
820
884
  back: "Back",
821
885
  agentEngineRequired: "Agent engine required",
822
- agentEngineDescription: "Connect Builder.io or an LLM key before {{platform}} can answer.",
886
+ agentEngineDescription: "Connect Builder.io (free tier available) or an LLM key before {{platform}} can answer.",
823
887
  openLlm: "Open LLM",
824
888
  setup: "Setup",
825
889
  shareDocumentsWith: "Share documents with",
@@ -886,6 +950,11 @@ const messages = {
886
950
  description: "Inspect issues, events, and debugging data.",
887
951
  useCase: "Error monitoring, debugging, performance, crash reports",
888
952
  },
953
+ fullstory: {
954
+ description: "Read behavioral analytics and inspect session replays.",
955
+ useCase: "Product analytics, session replay, qualitative behavior, user research",
956
+ setupNote: "FullStory MCP is currently beta and requires StoryAI features plus the Model Context Protocol toggle to be enabled by a FullStory organization admin.",
957
+ },
889
958
  notion: {
890
959
  description: "Search pages and team knowledge.",
891
960
  useCase: "Documentation, knowledge management, notes, content creation",
@@ -13,13 +13,13 @@
13
13
  export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
14
14
  count: number;
15
15
  updated?: undefined;
16
- ok?: undefined;
17
16
  error?: undefined;
17
+ ok?: undefined;
18
18
  } | {
19
19
  count?: undefined;
20
20
  updated: number;
21
- ok?: undefined;
22
21
  error?: undefined;
22
+ ok?: undefined;
23
23
  } | {
24
24
  count?: undefined;
25
25
  updated?: undefined;
@@ -219,7 +219,7 @@ const PROFILES = {
219
219
  label: "Builder executor",
220
220
  required: true,
221
221
  builderIncluded: true,
222
- keySummary: "Connect Builder for managed agent runs",
222
+ keySummary: "Connect Builder for managed agent runs (free tier available)",
223
223
  why: "The executor runs approved code and review workflows for Factory items.",
224
224
  },
225
225
  {
@@ -6,6 +6,8 @@
6
6
  * POST /_agent-native/onboarding/steps/:id/complete — manual override (marks complete)
7
7
  * POST /_agent-native/onboarding/dismiss — dismiss the banner
8
8
  * GET /_agent-native/onboarding/dismissed — dismissed flag + allComplete
9
+ * GET /_agent-native/onboarding/first-run/status — post-signup flow status
10
+ * POST /_agent-native/onboarding/first-run/complete — permanently complete it
9
11
  */
10
12
  type NitroPluginDef = (nitroApp: any) => void | Promise<void>;
11
13
  export interface OnboardingPluginOptions {
@@ -6,13 +6,15 @@
6
6
  * POST /_agent-native/onboarding/steps/:id/complete — manual override (marks complete)
7
7
  * POST /_agent-native/onboarding/dismiss — dismiss the banner
8
8
  * GET /_agent-native/onboarding/dismissed — dismissed flag + allComplete
9
+ * GET /_agent-native/onboarding/first-run/status — post-signup flow status
10
+ * POST /_agent-native/onboarding/first-run/complete — permanently complete it
9
11
  */
10
- import { deleteCookie, defineEventHandler, getMethod, getQuery, setResponseStatus, } from "h3";
12
+ import { deleteCookie, defineEventHandler, getCookie, getMethod, getQuery, setResponseStatus, } from "h3";
11
13
  import { appStateGet, appStatePut } from "../application-state/store.js";
12
14
  import { getSession } from "../server/auth.js";
13
15
  import { awaitBootstrap, getH3App, markDefaultPluginProvided, } from "../server/framework-request-handler.js";
14
16
  import { runWithRequestContext } from "../server/request-context.js";
15
- import { FIRST_RUN_ONBOARDING_COOKIE } from "../shared/first-run-onboarding.js";
17
+ import { FIRST_RUN_ONBOARDING_COMPLETED_KEY, FIRST_RUN_ONBOARDING_COOKIE, } from "../shared/first-run-onboarding.js";
16
18
  import { getOnboardingAppProfile } from "./app-profile.js";
17
19
  import { registerDefaultOnboardingSteps } from "./default-steps.js";
18
20
  import { listOnboardingSteps } from "./registry.js";
@@ -189,12 +191,37 @@ export function createOnboardingPlugin(options = {}) {
189
191
  }
190
192
  return appProfile;
191
193
  }));
194
+ // GET /_agent-native/onboarding/first-run/status
195
+ getH3App(nitroApp).use(`${ONBOARDING_PREFIX}/first-run/status`, defineEventHandler(async (event) => {
196
+ if (getMethod(event) !== "GET") {
197
+ setResponseStatus(event, 405);
198
+ return { error: "Method not allowed" };
199
+ }
200
+ if (getCookie(event, FIRST_RUN_ONBOARDING_COOKIE) !== "1") {
201
+ return { firstRun: false };
202
+ }
203
+ const context = await resolveOnboardingContext(event);
204
+ if (!context.userEmail)
205
+ return { firstRun: false };
206
+ return withOnboardingRequestContext(context, async () => {
207
+ const completed = await appStateGet(context.sessionId, FIRST_RUN_ONBOARDING_COMPLETED_KEY);
208
+ return {
209
+ firstRun: completed?.completed !== true,
210
+ };
211
+ });
212
+ }));
192
213
  // POST /_agent-native/onboarding/first-run/complete
193
214
  getH3App(nitroApp).use(`${ONBOARDING_PREFIX}/first-run/complete`, defineEventHandler(async (event) => {
194
215
  if (getMethod(event) !== "POST") {
195
216
  setResponseStatus(event, 405);
196
217
  return { error: "Method not allowed" };
197
218
  }
219
+ const context = await resolveOnboardingContext(event);
220
+ if (!context.userEmail) {
221
+ setResponseStatus(event, 401);
222
+ return { error: "Authentication required" };
223
+ }
224
+ await appStatePut(context.sessionId, FIRST_RUN_ONBOARDING_COMPLETED_KEY, { completed: true, at: new Date().toISOString() }, { requestSource: "agent" });
198
225
  deleteCookie(event, FIRST_RUN_ONBOARDING_COOKIE, { path: "/" });
199
226
  return { ok: true };
200
227
  }));
@@ -28,6 +28,7 @@ function extractMemberEmail(event) {
28
28
  const nanoid = () => globalThis.crypto?.randomUUID?.().replace(/-/g, "") ??
29
29
  Math.random().toString(36).slice(2) + Date.now().toString(36);
30
30
  import { getDbExec, isPostgres } from "../db/client.js";
31
+ import { CORE_INVITE_EMAIL_ID } from "../email-catalog/system-emails.js";
31
32
  import { ssrfSafeFetch } from "../extensions/url-safety.js";
32
33
  import { getAppProductionUrl } from "../server/app-url.js";
33
34
  import { getSession } from "../server/auth.js";
@@ -275,7 +276,13 @@ async function inviteOne(ctx, rawEmail, role, event) {
275
276
  acceptUrl: getInviteAppUrl(event),
276
277
  inviter: ctx.email,
277
278
  });
278
- await sendEmail({ to: email, subject, html, text });
279
+ await sendEmail({
280
+ to: email,
281
+ subject,
282
+ html,
283
+ text,
284
+ templateId: CORE_INVITE_EMAIL_ID,
285
+ });
279
286
  emailSent = true;
280
287
  }
281
288
  catch (err) {
@@ -76,7 +76,9 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
76
76
  }>>;
77
77
  }, z.core.$strip>>, {
78
78
  deleted?: undefined;
79
- message?: undefined;
79
+ id?: undefined;
80
+ provider?: undefined;
81
+ found?: undefined;
80
82
  providers: {
81
83
  id: string;
82
84
  label: string;
@@ -87,47 +89,45 @@ export declare function createCustomProviderRegistrationAction<TSchema extends Z
87
89
  updatedAt: number;
88
90
  }[];
89
91
  count: number;
90
- provider?: undefined;
91
- found?: undefined;
92
92
  registered?: undefined;
93
- id?: undefined;
94
93
  label?: undefined;
94
+ message?: undefined;
95
95
  } | {
96
96
  deleted?: undefined;
97
97
  count?: undefined;
98
- message?: undefined;
98
+ id?: undefined;
99
99
  providers?: undefined;
100
100
  found: boolean;
101
101
  provider: import("../custom-registry.js").CustomProviderConfig;
102
102
  registered?: undefined;
103
- id?: undefined;
104
103
  label?: undefined;
104
+ message?: undefined;
105
105
  } | {
106
106
  deleted?: undefined;
107
107
  count?: undefined;
108
- message?: undefined;
109
- providers?: undefined;
110
108
  provider?: undefined;
109
+ providers?: undefined;
111
110
  found: boolean;
112
111
  id: string;
113
112
  registered?: undefined;
114
113
  label?: undefined;
114
+ message?: undefined;
115
115
  } | {
116
116
  count?: undefined;
117
- message?: undefined;
118
- providers?: undefined;
119
117
  provider?: undefined;
120
118
  found?: undefined;
119
+ providers?: undefined;
121
120
  deleted: boolean;
122
121
  id: string;
123
122
  registered?: undefined;
124
123
  label?: undefined;
124
+ message?: undefined;
125
125
  } | {
126
126
  deleted?: undefined;
127
127
  count?: undefined;
128
- providers?: undefined;
129
128
  provider?: undefined;
130
129
  found?: undefined;
130
+ providers?: undefined;
131
131
  registered: boolean;
132
132
  id: string;
133
133
  label: string;
@@ -144,7 +144,7 @@ export declare function createProviderApiCatalogAction<TSchema extends ZodTypeAn
144
144
  provider: z.ZodOptional<ZodTypeAny<unknown, unknown, z.core.$ZodTypeInternals<unknown, unknown>>>;
145
145
  }, z.core.$strip>>, {
146
146
  providers: unknown[] | {
147
- id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
147
+ id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
148
148
  label: string;
149
149
  defaultBaseUrl: string;
150
150
  requiresConnectionId: boolean;
@@ -246,7 +246,7 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
246
246
  provider?: unknown;
247
247
  }, {
248
248
  providers: unknown[] | {
249
- id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
249
+ id: "amplitude" | "apollo" | "bigquery" | "clay" | "commonroom" | "dataforseo" | "figma" | "fullstory" | "ga4" | "gcloud" | "github" | "gmail" | "gong" | "google_calendar" | "google_drive" | "google_slides" | "grafana" | "granola" | "hubspot" | "jira" | "mixpanel" | "notion" | "posthog" | "prometheus" | "pylon" | "salesforce" | "sentry" | "slack" | "stripe" | "twitter";
250
250
  label: string;
251
251
  defaultBaseUrl: string;
252
252
  requiresConnectionId: boolean;
@@ -311,9 +311,10 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
311
311
  notes?: string | undefined;
312
312
  scope?: "org" | "user" | undefined;
313
313
  }, {
314
+ message?: undefined;
314
315
  id?: undefined;
315
- provider?: undefined;
316
316
  deleted?: undefined;
317
+ found?: undefined;
317
318
  providers: {
318
319
  id: string;
319
320
  label: string;
@@ -324,11 +325,11 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
324
325
  updatedAt: number;
325
326
  }[];
326
327
  count: number;
327
- found?: undefined;
328
+ provider?: undefined;
328
329
  registered?: undefined;
329
330
  label?: undefined;
330
- message?: undefined;
331
331
  } | {
332
+ message?: undefined;
332
333
  id?: undefined;
333
334
  deleted?: undefined;
334
335
  count?: undefined;
@@ -337,33 +338,32 @@ export declare function createProviderApiActions(runtime: Pick<ProviderApiRuntim
337
338
  provider: import("../custom-registry.js").CustomProviderConfig;
338
339
  registered?: undefined;
339
340
  label?: undefined;
340
- message?: undefined;
341
341
  } | {
342
- provider?: undefined;
342
+ message?: undefined;
343
343
  deleted?: undefined;
344
344
  count?: undefined;
345
345
  providers?: undefined;
346
+ provider?: undefined;
346
347
  found: boolean;
347
348
  id: string;
348
349
  registered?: undefined;
349
350
  label?: undefined;
350
- message?: undefined;
351
351
  } | {
352
- provider?: undefined;
352
+ message?: undefined;
353
+ found?: undefined;
353
354
  count?: undefined;
354
355
  providers?: undefined;
355
- found?: undefined;
356
+ provider?: undefined;
356
357
  deleted: boolean;
357
358
  id: string;
358
359
  registered?: undefined;
359
360
  label?: undefined;
360
- message?: undefined;
361
361
  } | {
362
- provider?: undefined;
363
362
  deleted?: undefined;
363
+ found?: undefined;
364
364
  count?: undefined;
365
365
  providers?: undefined;
366
- found?: undefined;
366
+ provider?: undefined;
367
367
  registered: boolean;
368
368
  id: string;
369
369
  label: string;