@agent-native/core 0.137.8 → 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 (422) 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/hooks/use-playback-position.ts +188 -0
  66. package/corpus/templates/clips/app/hooks/use-view-tracking.ts +6 -24
  67. package/corpus/templates/clips/app/lib/playback-position.ts +99 -0
  68. package/corpus/templates/clips/app/lib/viewer-session.ts +29 -0
  69. package/corpus/templates/clips/changelog/2026-08-05-clip-buffering-now-uses-buffering-copy-after-playback.md +6 -0
  70. package/corpus/templates/clips/changelog/2026-08-05-clips-remembers-your-playback-position-when-you-reopen-a-cli.md +6 -0
  71. package/corpus/templates/clips/learnings.defaults.md +1 -1
  72. package/corpus/templates/clips/server/db/schema.ts +18 -0
  73. package/corpus/templates/clips/server/lib/public-agent-context.ts +1 -1
  74. package/corpus/templates/clips/server/lib/video-storage.ts +1 -1
  75. package/corpus/templates/clips/server/plugins/db.ts +15 -0
  76. package/corpus/templates/clips/server/routes/api/media/index.post.ts +1 -1
  77. package/corpus/templates/content/.agents/skills/agent-native-docs/SKILL.md +23 -3
  78. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  79. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +13 -0
  80. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +23 -2
  81. package/corpus/templates/content/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  82. package/corpus/templates/content/AGENTS.md +1 -0
  83. package/corpus/templates/content/actions/_content-database-mutation-lock.ts +41 -0
  84. package/corpus/templates/content/actions/_content-database-row-migration.ts +569 -0
  85. package/corpus/templates/content/actions/_database-source-utils.ts +82 -36
  86. package/corpus/templates/content/actions/_database-utils.ts +5 -0
  87. package/corpus/templates/content/actions/_delete-content-space.ts +25 -11
  88. package/corpus/templates/content/actions/add-database-item.ts +60 -42
  89. package/corpus/templates/content/actions/attach-content-database-source.ts +2 -0
  90. package/corpus/templates/content/actions/configure-document-property.ts +99 -104
  91. package/corpus/templates/content/actions/delete-content-database.ts +19 -7
  92. package/corpus/templates/content/actions/delete-document-property.ts +47 -58
  93. package/corpus/templates/content/actions/delete-document.ts +390 -167
  94. package/corpus/templates/content/actions/disconnect-content-database-source.ts +41 -24
  95. package/corpus/templates/content/actions/duplicate-database-item.ts +63 -31
  96. package/corpus/templates/content/actions/duplicate-database-items.ts +86 -43
  97. package/corpus/templates/content/actions/duplicate-document-property.ts +37 -14
  98. package/corpus/templates/content/actions/migrate-content-database-rows.ts +830 -0
  99. package/corpus/templates/content/actions/move-database-item.ts +14 -0
  100. package/corpus/templates/content/actions/permanently-delete-document.ts +27 -6
  101. package/corpus/templates/content/actions/remove-database-items.ts +13 -0
  102. package/corpus/templates/content/actions/reorder-document-property.ts +45 -46
  103. package/corpus/templates/content/actions/set-document-property.ts +68 -28
  104. package/corpus/templates/content/actions/submit-content-database-form.ts +49 -0
  105. package/corpus/templates/content/actions/transcribe-media.ts +1 -1
  106. package/corpus/templates/content/agent-native.json +12 -0
  107. package/corpus/templates/content/app/components/editor/image-upload.ts +2 -2
  108. package/corpus/templates/content/app/i18n-data.ts +1 -1
  109. package/corpus/templates/content/changelog/2026-08-01-content-can-reorganize-every-row-in-an-existing-database-as-.md +6 -0
  110. package/corpus/templates/content/parity/matrix.md +1 -1
  111. package/corpus/templates/content/parity/matrix.ts +4 -2
  112. package/corpus/templates/content/server/db/schema.ts +30 -0
  113. package/corpus/templates/content/server/plugins/db.ts +24 -0
  114. package/corpus/templates/content/server/plugins/onboarding.ts +2 -2
  115. package/corpus/templates/crm/.agents/skills/agent-native-docs/SKILL.md +23 -3
  116. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  117. package/corpus/templates/crm/agent-native.json +12 -0
  118. package/corpus/templates/design/.agents/skills/agent-native-docs/SKILL.md +23 -3
  119. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  120. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +23 -2
  121. package/corpus/templates/design/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  122. package/corpus/templates/design/CODE_NATIVE_DESIGN_STUDIO_IMPLEMENTATION_PLAN.md +2 -2
  123. package/corpus/templates/design/DESIGN-STUDIO-PLAN.md +2 -2
  124. package/corpus/templates/design/actions/apply-design-token-edit.ts +1 -1
  125. package/corpus/templates/design/actions/capture-design-state.ts +1 -1
  126. package/corpus/templates/design/actions/connect-builder-app.ts +2 -2
  127. package/corpus/templates/design/actions/create-design-branch.ts +1 -1
  128. package/corpus/templates/design/actions/create-fusion-app.ts +3 -3
  129. package/corpus/templates/design/actions/deploy-design-preview.ts +1 -1
  130. package/corpus/templates/design/actions/get-component-details.ts +1 -1
  131. package/corpus/templates/design/actions/get-design-branch-diff.ts +1 -1
  132. package/corpus/templates/design/actions/index-components.ts +3 -3
  133. package/corpus/templates/design/actions/index-design-system-with-builder.ts +1 -1
  134. package/corpus/templates/design/actions/migrate-inline-design-to-app.ts +3 -3
  135. package/corpus/templates/design/actions/open-component-source.ts +1 -1
  136. package/corpus/templates/design/actions/update-design.ts +61 -0
  137. package/corpus/templates/design/agent-native.json +12 -0
  138. package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +1 -1
  139. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +1 -1
  140. package/corpus/templates/design/scripts/qa-figma-stress-import.ts +1 -1
  141. package/corpus/templates/design/server/lib/figma-node-import.ts +1 -1
  142. package/corpus/templates/design/shared/design-source-capabilities.ts +25 -9
  143. package/corpus/templates/dispatch/.agents/skills/agent-native-docs/SKILL.md +23 -3
  144. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  145. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +23 -2
  146. package/corpus/templates/dispatch/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  147. package/corpus/templates/dispatch/agent-native.json +12 -0
  148. package/corpus/templates/factory/.agents/skills/agent-native-docs/SKILL.md +23 -3
  149. package/corpus/templates/factory/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  150. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +23 -2
  151. package/corpus/templates/factory/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  152. package/corpus/templates/factory/agent-native.json +12 -0
  153. package/corpus/templates/forms/.agents/skills/agent-native-docs/SKILL.md +23 -3
  154. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  155. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +23 -2
  156. package/corpus/templates/forms/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  157. package/corpus/templates/forms/actions/export-responses.ts +1 -1
  158. package/corpus/templates/forms/agent-native.json +12 -0
  159. package/corpus/templates/macros/.agents/skills/agent-native-docs/SKILL.md +23 -3
  160. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  161. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +23 -2
  162. package/corpus/templates/macros/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  163. package/corpus/templates/macros/agent-native.json +12 -0
  164. package/corpus/templates/mail/.agents/skills/agent-native-docs/SKILL.md +23 -3
  165. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  166. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +23 -2
  167. package/corpus/templates/mail/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  168. package/corpus/templates/mail/agent-native.json +12 -0
  169. package/corpus/templates/mail/app/i18n/en-US.ts +1 -1
  170. package/corpus/templates/mail/server/lib/media-upload.ts +1 -1
  171. package/corpus/templates/plan/.agents/skills/agent-native-docs/SKILL.md +23 -3
  172. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  173. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +23 -2
  174. package/corpus/templates/plan/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  175. package/corpus/templates/plan/agent-native.json +12 -0
  176. package/corpus/templates/plan/server/lib/plan-assets.ts +1 -1
  177. package/corpus/templates/slides/.agents/skills/agent-native-docs/SKILL.md +23 -3
  178. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  179. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +23 -2
  180. package/corpus/templates/slides/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  181. package/corpus/templates/slides/actions/generate-image-api.ts +1 -1
  182. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  183. package/corpus/templates/slides/actions/import-file.ts +2 -2
  184. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +1 -1
  185. package/corpus/templates/slides/agent-native.json +12 -0
  186. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +1 -1
  187. package/corpus/templates/slides/app/i18n/en-US.ts +2 -2
  188. package/corpus/templates/slides/app/lib/deck-sorting.ts +19 -0
  189. package/corpus/templates/slides/app/lib/image-drop-to-agent.ts +1 -1
  190. package/corpus/templates/slides/app/pages/Index.tsx +7 -2
  191. package/corpus/templates/slides/changelog/2026-08-05-decks-are-now-sorted-by-most-recently-updated.md +6 -0
  192. package/corpus/templates/slides/server/handlers/assets.ts +1 -1
  193. package/corpus/templates/slides/server/handlers/uploads.ts +1 -1
  194. package/corpus/templates/tasks/.agents/skills/agent-native-docs/SKILL.md +23 -3
  195. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  196. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +23 -2
  197. package/corpus/templates/tasks/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  198. package/corpus/templates/tasks/agent-native.json +12 -0
  199. package/dist/action.d.ts +6 -0
  200. package/dist/agent/engine/builder-engine.js +2 -2
  201. package/dist/agent/engine/credential-errors.d.ts +1 -1
  202. package/dist/agent/engine/credential-errors.js +2 -2
  203. package/dist/agent/production-agent.js +3 -2
  204. package/dist/brand-kit/fig/index.js +1 -1
  205. package/dist/cli/agent.js +45 -3
  206. package/dist/cli/code-agent-executor.js +2 -1
  207. package/dist/cli/create.d.ts +9 -1
  208. package/dist/cli/create.js +94 -1
  209. package/dist/cli/doctor.d.ts +8 -11
  210. package/dist/cli/doctor.js +92 -24
  211. package/dist/cli/index.js +6 -5
  212. package/dist/client/AgentAskPopover.d.ts +3 -1
  213. package/dist/client/AgentAskPopover.js +2 -2
  214. package/dist/client/AgentPanel.js +9 -3
  215. package/dist/client/AssistantChat.js +54 -33
  216. package/dist/client/MultiTabAssistantChat.js +1 -1
  217. package/dist/client/RouteTransitionIndicator.d.ts +7 -0
  218. package/dist/client/RouteTransitionIndicator.js +31 -0
  219. package/dist/client/agent-engine-key.js +1 -1
  220. package/dist/client/app-providers.js +11 -2
  221. package/dist/client/chat/message-components.js +1 -1
  222. package/dist/client/chat/run-recovery.js +1 -1
  223. package/dist/client/chat/tool-call-display.d.ts +3 -1
  224. package/dist/client/chat/tool-call-display.js +4 -3
  225. package/dist/client/chat-model-groups.d.ts +6 -0
  226. package/dist/client/chat-model-groups.js +11 -0
  227. package/dist/client/error-format.js +1 -1
  228. package/dist/client/i18n.js +1 -1
  229. package/dist/client/onboarding/FirstRunOnboarding.d.ts +5 -1
  230. package/dist/client/onboarding/FirstRunOnboarding.js +29 -13
  231. package/dist/client/onboarding/first-run-enabled.d.ts +6 -1
  232. package/dist/client/onboarding/first-run-enabled.js +33 -3
  233. package/dist/client/onboarding/use-onboarding.js +16 -11
  234. package/dist/client/resources/mcp-integration-catalog.js +26 -0
  235. package/dist/client/resources/mcp-integration-logos.js +4 -0
  236. package/dist/client/route-warmup.js +56 -10
  237. package/dist/client/settings/AccountSettingsCard.js +78 -3
  238. package/dist/client/settings/SettingsPanel.js +1 -1
  239. package/dist/client/settings/VoiceTranscriptionSection.js +2 -2
  240. package/dist/client/settings/useBuilderStatus.js +1 -1
  241. package/dist/client/setup-connections/useBuilderConnectCardController.js +1 -1
  242. package/dist/client/ui/index.d.ts +1 -0
  243. package/dist/client/ui/index.js +1 -0
  244. package/dist/client/uploads/upload-editor-image.js +1 -1
  245. package/dist/client/use-chat-threads.js +3 -0
  246. package/dist/collab/routes.d.ts +2 -2
  247. package/dist/collab/struct-routes.d.ts +1 -1
  248. package/dist/config.d.ts +48 -0
  249. package/dist/config.js +111 -0
  250. package/dist/db/migrations.js +5 -0
  251. package/dist/eject/provider-api-definitions.d.ts +1 -1
  252. package/dist/eject/provider-api-definitions.js +1 -0
  253. package/dist/eject/remote-mcp-presets.js +1 -0
  254. package/dist/extensions/web-search-tool.js +2 -2
  255. package/dist/file-upload/actions/upload-image.js +1 -1
  256. package/dist/file-upload/registry.js +1 -1
  257. package/dist/guards/index.d.ts +3 -0
  258. package/dist/guards/index.js +2 -0
  259. package/dist/guards/no-empty-migrations.d.ts +14 -0
  260. package/dist/guards/no-empty-migrations.js +126 -0
  261. package/dist/index.browser.d.ts +1 -0
  262. package/dist/index.browser.js +3 -0
  263. package/dist/index.d.ts +1 -0
  264. package/dist/index.js +1 -0
  265. package/dist/localization/default-messages.d.ts +24 -0
  266. package/dist/localization/default-messages.js +26 -2
  267. package/dist/notifications/routes.d.ts +3 -3
  268. package/dist/onboarding/app-profile.js +1 -1
  269. package/dist/onboarding/plugin.d.ts +2 -0
  270. package/dist/onboarding/plugin.js +29 -2
  271. package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
  272. package/dist/provider-api/actions/provider-api.d.ts +13 -13
  273. package/dist/provider-api/index.d.ts +4 -4
  274. package/dist/provider-api/index.js +35 -0
  275. package/dist/resources/handlers.d.ts +1 -1
  276. package/dist/resources/handlers.js +1 -1
  277. package/dist/scripts/docs/framework-search.d.ts +9 -0
  278. package/dist/scripts/docs/framework-search.js +239 -0
  279. package/dist/scripts/docs/index.js +1 -0
  280. package/dist/scripts/docs/search.d.ts +10 -0
  281. package/dist/scripts/docs/search.js +1 -1
  282. package/dist/scripts/docs/source-search.d.ts +10 -2
  283. package/dist/scripts/docs/source-search.js +108 -41
  284. package/dist/search-utils/index.d.ts +11 -0
  285. package/dist/search-utils/index.js +72 -0
  286. package/dist/server/action-change.d.ts +6 -0
  287. package/dist/server/action-change.js +28 -14
  288. package/dist/server/action-discovery.js +9 -0
  289. package/dist/server/action-routes.js +1 -0
  290. package/dist/server/agent-chat/browser-team-tools.js +1 -1
  291. package/dist/server/agent-chat/script-entries.js +43 -2
  292. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  293. package/dist/server/auth-login-mode.d.ts +8 -0
  294. package/dist/server/auth-login-mode.js +17 -0
  295. package/dist/server/auth.js +100 -15
  296. package/dist/server/better-auth-instance.d.ts +36 -0
  297. package/dist/server/better-auth-instance.js +25 -3
  298. package/dist/server/builder-design-systems.js +1 -1
  299. package/dist/server/core-routes-plugin.js +17 -14
  300. package/dist/server/credential-provider.js +3 -3
  301. package/dist/server/email-templates.d.ts +7 -0
  302. package/dist/server/email-templates.js +24 -0
  303. package/dist/server/email.d.ts +17 -0
  304. package/dist/server/email.js +22 -1
  305. package/dist/server/framework-request-handler.js +6 -0
  306. package/dist/server/onboarding-html.d.ts +2 -0
  307. package/dist/server/onboarding-html.js +169 -8
  308. package/dist/server/realtime-token.d.ts +1 -1
  309. package/dist/server/realtime-voice.js +1 -1
  310. package/dist/server/sentry.d.ts +1 -1
  311. package/dist/server/transcribe-voice.js +3 -3
  312. package/dist/shared/first-run-onboarding.d.ts +1 -0
  313. package/dist/shared/first-run-onboarding.js +1 -0
  314. package/dist/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  315. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  316. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  317. package/dist/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  318. package/dist/templates/chat/AGENTS.md +3 -0
  319. package/dist/templates/chat/DESIGN.md +28 -0
  320. package/dist/templates/chat/agent-native.json +12 -0
  321. package/dist/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  322. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  323. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  324. package/dist/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  325. package/dist/templates/default/AGENTS.md +4 -0
  326. package/dist/templates/default/DESIGN.md +30 -0
  327. package/dist/templates/default/agent-native.json +9 -0
  328. package/dist/templates/default/app/i18n/ar-SA.ts +2 -2
  329. package/dist/templates/default/app/i18n/de-DE.ts +2 -2
  330. package/dist/templates/default/app/i18n/en-US.ts +2 -2
  331. package/dist/templates/default/app/i18n/es-ES.ts +2 -2
  332. package/dist/templates/default/app/i18n/fr-FR.ts +2 -2
  333. package/dist/templates/default/app/i18n/hi-IN.ts +2 -2
  334. package/dist/templates/default/app/i18n/ja-JP.ts +2 -2
  335. package/dist/templates/default/app/i18n/ko-KR.ts +2 -2
  336. package/dist/templates/default/app/i18n/pt-BR.ts +2 -2
  337. package/dist/templates/default/app/i18n/zh-CN.ts +2 -2
  338. package/dist/templates/default/app/i18n/zh-TW.ts +1 -1
  339. package/dist/templates/default/package.json +1 -0
  340. package/dist/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  341. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  342. package/dist/templates/headless/agent-native.json +9 -0
  343. package/dist/templates/headless/package.json +2 -0
  344. package/dist/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  345. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  346. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  347. package/dist/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  348. package/dist/templates/workspace-core/AGENTS.md +3 -0
  349. package/dist/templates/workspace-core/DESIGN.md +35 -0
  350. package/dist/templates/workspace-root/AGENTS.md +3 -0
  351. package/dist/templates/workspace-root/DESIGN.md +35 -0
  352. package/dist/templates/workspace-root/agent-native.json +9 -0
  353. package/dist/templates/workspace-root/package.json +3 -0
  354. package/dist/transcription/builder-transcription.js +1 -1
  355. package/dist/user-profile/actions/change-password.d.ts +8 -0
  356. package/dist/user-profile/actions/change-password.js +24 -0
  357. package/dist/user-profile/actions/get-auth-methods.d.ts +6 -0
  358. package/dist/user-profile/actions/get-auth-methods.js +23 -0
  359. package/dist/user-profile/actions/set-password.d.ts +7 -0
  360. package/dist/user-profile/actions/set-password.js +23 -0
  361. package/dist/vite/client.d.ts +8 -1
  362. package/dist/vite/client.js +63 -12
  363. package/dist/vite/index.d.ts +1 -0
  364. package/dist/vite/index.js +1 -0
  365. package/docs/AGENTS.md +7 -2
  366. package/docs/SKILL.md +7 -5
  367. package/docs/content/agent-native-config.mdx +165 -0
  368. package/docs/content/agent-native-toolkit.mdx +1 -1
  369. package/docs/content/deployment.mdx +7 -2
  370. package/docs/content/doctor.mdx +21 -13
  371. package/docs/content/environment-variables.mdx +158 -0
  372. package/docs/content/file-uploads.mdx +1 -1
  373. package/docs/content/getting-started.mdx +1 -1
  374. package/docs/content/key-concepts.mdx +1 -1
  375. package/docs/content/multi-app-workspace.mdx +1 -1
  376. package/docs/content/template-clips-ai-and-editing.mdx +6 -6
  377. package/docs/content/template-clips-developers.mdx +3 -3
  378. package/docs/content/toolkit-settings.mdx +1 -1
  379. package/docs/content/voice-input.mdx +4 -4
  380. package/package.json +6 -2
  381. package/src/eject/provider-api-definitions.ts +1 -0
  382. package/src/eject/remote-mcp-presets.ts +1 -0
  383. package/src/templates/chat/.agents/skills/agent-native-docs/SKILL.md +23 -3
  384. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  385. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +23 -2
  386. package/src/templates/chat/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  387. package/src/templates/chat/AGENTS.md +3 -0
  388. package/src/templates/chat/DESIGN.md +28 -0
  389. package/src/templates/chat/agent-native.json +12 -0
  390. package/src/templates/default/.agents/skills/agent-native-docs/SKILL.md +23 -3
  391. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  392. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +23 -2
  393. package/src/templates/default/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  394. package/src/templates/default/AGENTS.md +4 -0
  395. package/src/templates/default/DESIGN.md +30 -0
  396. package/src/templates/default/agent-native.json +9 -0
  397. package/src/templates/default/app/i18n/ar-SA.ts +2 -2
  398. package/src/templates/default/app/i18n/de-DE.ts +2 -2
  399. package/src/templates/default/app/i18n/en-US.ts +2 -2
  400. package/src/templates/default/app/i18n/es-ES.ts +2 -2
  401. package/src/templates/default/app/i18n/fr-FR.ts +2 -2
  402. package/src/templates/default/app/i18n/hi-IN.ts +2 -2
  403. package/src/templates/default/app/i18n/ja-JP.ts +2 -2
  404. package/src/templates/default/app/i18n/ko-KR.ts +2 -2
  405. package/src/templates/default/app/i18n/pt-BR.ts +2 -2
  406. package/src/templates/default/app/i18n/zh-CN.ts +2 -2
  407. package/src/templates/default/app/i18n/zh-TW.ts +1 -1
  408. package/src/templates/default/package.json +1 -0
  409. package/src/templates/headless/.agents/skills/agent-native-docs/SKILL.md +23 -3
  410. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  411. package/src/templates/headless/agent-native.json +9 -0
  412. package/src/templates/headless/package.json +2 -0
  413. package/src/templates/workspace-core/.agents/skills/agent-native-docs/SKILL.md +23 -3
  414. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +16 -0
  415. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +23 -2
  416. package/src/templates/workspace-core/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  417. package/src/templates/workspace-core/AGENTS.md +3 -0
  418. package/src/templates/workspace-core/DESIGN.md +35 -0
  419. package/src/templates/workspace-root/AGENTS.md +3 -0
  420. package/src/templates/workspace-root/DESIGN.md +35 -0
  421. package/src/templates/workspace-root/agent-native.json +9 -0
  422. package/src/templates/workspace-root/package.json +3 -0
package/docs/AGENTS.md CHANGED
@@ -21,6 +21,9 @@ version installed in the app.
21
21
  From a generated app root:
22
22
 
23
23
  ```bash
24
+ pnpm action framework-search --pattern "defineAction"
25
+ pnpm action framework-search --pattern "templates/*/actions/*.ts" --mode glob --scope source
26
+ pnpm action framework-search --pattern "Agent(?:Panel|Sidebar)" --mode regex --scope source
24
27
  pnpm action docs-search --list
25
28
  pnpm action docs-search --query "actions"
26
29
  pnpm action docs-search --slug actions
@@ -30,8 +33,10 @@ pnpm action source-search --path templates/plan/AGENTS.md
30
33
  pnpm action source-search --path templates/chat/actions/hello.ts
31
34
  ```
32
35
 
33
- The built-in app agent also has read-only `docs-search` and `source-search`
34
- tools with the same options.
36
+ The built-in app agent also has a read-only `framework-search` tool for one
37
+ bounded search across docs and readable Core, Toolkit, and first-party
38
+ template source. Use `docs-search` and `source-search` for focused reads after
39
+ it identifies the relevant page or file.
35
40
 
36
41
  If the action runner is unavailable, search the package files directly:
37
42
 
package/docs/SKILL.md CHANGED
@@ -14,14 +14,16 @@ examples or template patterns matter, inspect the packaged source corpus too.
14
14
  ## How
15
15
 
16
16
  1. Start from the generated app root.
17
- 2. Search with `pnpm action docs-search --query "<feature>"`.
18
- 3. Read a specific page with `pnpm action docs-search --slug <slug>`.
19
- 4. Search source examples with `pnpm action source-search --query "<pattern>"`
17
+ 2. Start cross-corpus discovery with `pnpm action framework-search --pattern "<feature>"`.
18
+ 3. Use `--scope docs` or `--scope source` and `--mode glob`, `--mode sql-like`,
19
+ or `--mode regex` when the question needs a narrower pattern.
20
+ 4. Read a specific page with `pnpm action docs-search --slug <slug>`.
21
+ 5. Search source examples with `pnpm action source-search --query "<pattern>"`
20
22
  or read a file with `pnpm action source-search --path <path>`.
21
- 5. If the action runner is unavailable, search
23
+ 6. If the action runner is unavailable, search
22
24
  `node_modules/@agent-native/core/docs` directly with `rg`.
23
25
  Search `node_modules/@agent-native/core/corpus` for source examples.
24
- 6. For app-specific rules, also read the app's own `AGENTS.md` and any relevant
26
+ 7. For app-specific rules, also read the app's own `AGENTS.md` and any relevant
25
27
  `.agents/skills/<name>/SKILL.md`.
26
28
 
27
29
  ## Useful Slugs
@@ -0,0 +1,165 @@
1
+ ---
2
+ title: "Agent-Native app configuration"
3
+ description: "Configure public app defaults with agent-native.json or a typed agent-native.config.ts file."
4
+ search: "agent-native.json agent-native.config.ts onboarding first-run Builder BYOK integrations configuration"
5
+ ---
6
+
7
+ # Agent-Native app configuration
8
+
9
+ Use app configuration for committed, non-secret defaults that should travel
10
+ with the app. Use environment variables for deployment values, credentials,
11
+ and local machine controls. The framework reads `agent-native.json` from the
12
+ app root when the `agentNative()` Vite preset runs.
13
+
14
+ The file is an additive app manifest. Existing feature-owned sections such as
15
+ `doctor`, `apps`, and local-file declarations can stay in the same file; the
16
+ onboarding reader only consumes the `version` and `onboarding` fields described
17
+ here.
18
+
19
+ ## The onboarding contract
20
+
21
+ The shared first-run surface has three supported modes:
22
+
23
+ | Mode | Local or hosted result |
24
+ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
25
+ | `off` | No shared first-run surface. This is the default for ordinary apps. |
26
+ | `connect` | Show Connect Builder or Add your own keys, then go straight to the app. The generic integrations catalog is omitted. |
27
+ | `connect-and-integrations` | Show Connect Builder or Add your own keys, followed by the generic integrations catalog. Use this for a hosted app that should expose its integration setup. |
28
+
29
+ A turn-into-app result normally commits a mode map so `pnpm dev` is useful
30
+ immediately while a production build has the hosted setup path:
31
+
32
+ ```json filename="agent-native.json"
33
+ {
34
+ "version": 1,
35
+ "onboarding": {
36
+ "firstRun": {
37
+ "development": "connect",
38
+ "production": "connect-and-integrations"
39
+ }
40
+ }
41
+ }
42
+ ```
43
+
44
+ An ordinary app can omit `onboarding` or make the default explicit:
45
+
46
+ ```json filename="agent-native.json"
47
+ {
48
+ "version": 1,
49
+ "onboarding": {
50
+ "firstRun": "off"
51
+ }
52
+ }
53
+ ```
54
+
55
+ First-party templates use `off` while running locally and
56
+ `connect-and-integrations` for a production build. The
57
+ `/turn-into-app` skill deliberately changes only the local value to `connect`
58
+ so a newly generated workflow is immediately testable without putting the
59
+ hosted integration catalog in front of the user.
60
+
61
+ The environment map uses the exact Vite `mode` first, then falls back to
62
+ `development` for `vite dev`, `production` for `vite build`, and finally
63
+ `default` or `off`. This lets a project add a named mode such as `staging`
64
+ without making the app depend on a new environment variable.
65
+
66
+ ## Typed dynamic configuration
67
+
68
+ When a static JSON map is not enough, add `agent-native.config.ts`. It returns
69
+ the same serializable shape and can use the Vite command and mode:
70
+
71
+ ```ts filename="agent-native.config.ts"
72
+ import { defineAgentNativeConfig } from "@agent-native/core/config";
73
+
74
+ export default defineAgentNativeConfig(({ command, mode }) => ({
75
+ version: 1,
76
+ onboarding: {
77
+ firstRun:
78
+ command === "serve" || mode === "preview"
79
+ ? "connect"
80
+ : "connect-and-integrations",
81
+ },
82
+ }));
83
+ ```
84
+
85
+ The preset loads `agent-native.config.ts` or `agent-native.config.mts`
86
+ automatically on the supported Node runtime. The TypeScript file takes
87
+ precedence over the JSON app defaults. An explicit `agentNative({
88
+ agentNativeConfig })` option takes precedence over both when an app needs to
89
+ compose configuration in its Vite config.
90
+
91
+ The resolved config is serialized into the browser bundle. Keep it public:
92
+ never put API keys, tokens, database URLs, auth secrets, `AUTH_DISABLED`, or
93
+ other credentials in either config file.
94
+
95
+ ## Precedence and compatibility
96
+
97
+ For a Vite app, the effective value is resolved in this order:
98
+
99
+ 1. An explicit `agentNativeConfig` passed to `agentNative()` or `defineConfig()`.
100
+ 2. The optional typed `agent-native.config.ts` or `.mts` file.
101
+ 3. `agent-native.json`.
102
+ 4. Framework defaults, which are `off` for first-run onboarding.
103
+ 5. The legacy `VITE_AGENT_NATIVE_FIRST_RUN_ONBOARDING` flags can still
104
+ override the resolved public config for older apps, but new apps should not
105
+ add them. They are public browser flags and remain documented only for
106
+ migration.
107
+
108
+ The development Connect Builder card explains the deployment-level
109
+ `ANTHROPIC_API_KEY` and `OPENAI_API_KEY` fallback and links to the
110
+ [environment-variable reference](/docs/environment-variables). A key in the
111
+ deployment environment is not a substitute for user- or organization-scoped
112
+ credentials in a hosted multi-user app. See [Onboarding & API Keys](/docs/onboarding)
113
+ and [Security](/docs/security) for the credential boundary.
114
+
115
+ ## What belongs in config versus `.env`
116
+
117
+ Good config candidates are public defaults that describe the product's shape:
118
+
119
+ - first-run onboarding mode and other setup presentation defaults;
120
+ - the app's default MCP catalog visibility or preset filters, once expressed
121
+ through the shared config contract;
122
+ - route warmup, public design tokens, and other build-time UX choices already
123
+ passed to the `agentNative()` Vite preset;
124
+ - non-secret app identity and default navigation metadata, if the framework
125
+ later gives those values a shared runtime consumer.
126
+
127
+ Keep these in environment variables or the secret store:
128
+
129
+ - API keys, OAuth secrets, signing keys, database URLs, and provider tokens;
130
+ - `APP_URL`, `APP_BASE_PATH`, deployment preset, port, and host-specific
131
+ values that change between deploy targets;
132
+ - `AUTH_DISABLED`, test switches, CI controls, and local machine paths;
133
+ - runtime flags whose safe value depends on the hosting environment rather than
134
+ the app's product contract.
135
+
136
+ The complete inventory is [Environment Variables](/docs/environment-variables).
137
+ That reference is intentionally broader than the config surface and is the
138
+ source to consult before adding a new environment variable.
139
+
140
+ ## Environment audit and next candidates
141
+
142
+ The current config surface intentionally starts with onboarding, where a
143
+ committed app default is more useful than a deployment flag. The next good
144
+ public candidates are:
145
+
146
+ | Candidate | Why it belongs in app config | Status |
147
+ | ----------------------------------------- | -------------------------------------------------------------------------- | ---------------------------------------------------------------------- |
148
+ | MCP catalog visibility and preset filters | Describes which setup choices the app offers, not a secret or host policy. | A good next addition; currently keep using the `agentNative()` option. |
149
+ | Route warmup strategy | A product-level loading preference that can be reviewed with the app. | A good next addition; currently keep using the `agentNative()` option. |
150
+ | Default navigation or app identity | Makes generated apps open on the right domain route and name. | Add only after a shared runtime consumer exists. |
151
+ | Design-system theme | Can vary intentionally per app, but is a larger structured object. | Keep in `vite.config.ts` or app code until the schema is stable. |
152
+
153
+ Do not move `DATABASE_URL`, `APP_URL`, `PORT`, `NITRO_PRESET`, auth switches,
154
+ provider keys, OAuth secrets, signing keys, telemetry endpoints, or security
155
+ flags into this file. They vary by deploy target, affect trust boundaries, or
156
+ must remain outside the browser bundle. This split keeps config useful for
157
+ scaffolders without turning it into a second environment-variable system.
158
+
159
+ ## Why there are two formats
160
+
161
+ `agent-native.json` is portable, inspectable, and easy for scaffolders and
162
+ other tools to write. `agent-native.config.ts` follows the typed-config pattern
163
+ used by frameworks such as Next.js while keeping the browser contract
164
+ serializable. Prefer JSON for a fixed app default and TypeScript when the
165
+ default genuinely depends on the Vite command or mode.
@@ -97,7 +97,7 @@ directly without adopting Toolkit or a template.
97
97
  | [Collaboration](/docs/toolkit-collaboration) | Realtime editing, presence, live cursors, recent-edit highlights, collaborative undo. |
98
98
  | [Settings](/docs/toolkit-settings) | Standard settings pages and tabs so app settings and agent/provider settings live in one predictable place. |
99
99
  | [Org & Team](/docs/toolkit-org-team) | Team pages, org switching, invites, org domains, roles, and app switching. |
100
- | [Setup & Connections](/docs/toolkit-setup-connections) | Onboarding, secrets, workspace connections, OAuth/provider readiness, and Builder connect. |
100
+ | [Setup & Connections](/docs/toolkit-setup-connections) | Onboarding, secrets, workspace connections, OAuth/provider readiness, and Builder connect (free tier available). |
101
101
  | [Command & Navigation](/docs/toolkit-command-navigation) | Command menu, deep links, standard app routes, sidebar and shell patterns. |
102
102
  | [Resources](/docs/toolkit-resources) | Resource trees, editors, file picker/search, attachments, and local file mode. |
103
103
  | [Agent UX](/docs/toolkit-agent-ux) | Composer, model picker, context chips, approvals, run recovery, and the runs tray. |
@@ -517,6 +517,11 @@ Three things to keep in mind:
517
517
 
518
518
  ## Environment Variables {#environment-variables}
519
519
 
520
+ For the repository-wide reference, including template, provider, local, and CI
521
+ variables, see [Environment Variables](/docs/environment-variables). The tables
522
+ below remain the authoritative deployment guide for production values and
523
+ hosting behavior.
524
+
520
525
  ### Build / Runtime {#env-runtime}
521
526
 
522
527
  | Variable | Description |
@@ -640,11 +645,11 @@ In a standard production deployment with [production code execution](#production
640
645
 
641
646
  ### Builder.io: Visual Editing in Production {#builderio}
642
647
 
643
- [Builder.io](https://www.builder.io?utm_source=agent-native&utm_medium=docs&utm_campaign=framework&utm_content=deployment) is a separate managed code-capable workflow where an agent can modify your app's UI in production. Connect your repo to Builder.io and prompt for UI changes directly — no redeploy needed.
648
+ [Builder.io](https://www.builder.io?utm_source=agent-native&utm_medium=docs&utm_campaign=framework&utm_content=deployment) is a separate managed code-capable workflow where an agent can modify your app's UI in production. Connect your repo to Builder.io (free tier available) and prompt for UI changes directly — no redeploy needed.
644
649
 
645
650
  **How it works:**
646
651
 
647
- 1. Connect your agent-native repo to Builder.io
652
+ 1. Connect your agent-native repo to Builder.io (free tier available)
648
653
  2. Builder.io provides a cloud frame with the agent, visual editing, and real-time collaboration
649
654
  3. Prompt the agent to make UI changes — it edits your components, routes, and styles live
650
655
  4. Changes are committed back to your repo
@@ -1,18 +1,20 @@
1
1
  ---
2
2
  title: "Doctor (Code Checks)"
3
- description: "agent-native doctor scans a generated app's source for the framework's security and architecture invariants — the same code-safety guards this monorepo enforces on itself, ported to run against a single app root."
3
+ description: "agent-native doctor scans generated app and workspace source for the framework's security and architecture invariants — the portable code-safety guards shared outside the monorepo CI suite."
4
4
  ---
5
5
 
6
6
  # Doctor (Code Checks)
7
7
 
8
- Generated apps contain source code that can be changed through the repository's
8
+ Generated apps and workspaces contain source code that can be changed through the repository's
9
9
  development workflow, including by an agent frame intentionally granted
10
10
  workspace and write tooling. `agent-native doctor` is the automated check for that: it
11
11
  scans app source for the framework's security-critical code-safety invariants —
12
12
  the same class of check that lives in this framework's own CI as
13
- `scripts/guard-*.mjs` — ported to run against a single generated app instead of
14
- the framework's multi-template monorepo layout. It's read-only: doctor never
15
- edits your code, it only reports.
13
+ `scripts/guard-*.mjs` — ported to run against generated projects instead of
14
+ the framework's multi-template monorepo layout. A workspace-root run scans each
15
+ `apps/<name>` project and the workspace's `packages/shared` package when present,
16
+ prefixing findings with the project path. It's read-only: doctor never edits
17
+ your code, it only reports.
16
18
 
17
19
  ## Quick start {#quick-start}
18
20
 
@@ -20,12 +22,17 @@ edits your code, it only reports.
20
22
  agent-native doctor
21
23
  ```
22
24
 
23
- Every scaffolded app also gets a `pnpm doctor` script that runs the same command:
25
+ Every scaffolded app and workspace gets the collision-free
26
+ `pnpm agent-native:doctor` command. When a template does not already define its
27
+ own `doctor` script, the CLI also adds the shorter `pnpm doctor` alias:
24
28
 
25
29
  ```bash
26
30
  pnpm doctor
27
31
  ```
28
32
 
33
+ The full framework-repository `pnpm guards` suite remains a monorepo check;
34
+ generated projects use this version-matched portable Doctor surface instead.
35
+
29
36
  A clean run:
30
37
 
31
38
  ```
@@ -83,7 +90,7 @@ installed.
83
90
  agent-native doctor Scan app source for security-critical guard violations
84
91
  agent-native doctor --json Machine-readable report: { ok, findings, guardsRun, strict }
85
92
  agent-native doctor --only <guard,guard> Run only the named guard(s)
86
- agent-native doctor --strict Escalate findings to a hard failure when used by `agent-native build --strict`
93
+ agent-native doctor --strict Keep the build gate explicit when invoked by `agent-native build`
87
94
  agent-native doctor --cwd <dir> Run against a project root other than the current directory
88
95
  agent-native doctor --fix Not implemented in this version
89
96
  agent-native doctor --help Show this help
@@ -97,16 +104,16 @@ Exit codes: **`0`** clean, **`1`** findings present, **`2`** usage or execution
97
104
 
98
105
  ## The build hook {#build-hook}
99
106
 
100
- `agent-native build` always runs doctor as a pre-step before the real build. It's **warn-only by default**: findings print to stderr prefixed `[doctor]`, and the build continues. It only turns findings into a hard failure — `process.exit(1)` before the build runs — when:
107
+ `agent-native build` always runs doctor as a pre-step before the real build. It is a **hard gate by default**: findings print to stderr prefixed `[doctor]`, and the build exits before publishing. A project using `agent-native build` can explicitly opt out with `failOnBuild: false`, but `--strict` always keeps the gate enabled. Community templates that use another build command receive a strict `prebuild` hook instead:
101
108
 
102
- - `agent-native build --strict` was passed, or
103
- - `agent-native.json` sets `{ "doctor": { "failOnBuild": true } }`.
109
+ - `agent-native.json` sets `{ "doctor": { "failOnBuild": false } }` only when that exception has been reviewed.
104
110
 
105
- If the doctor pre-step itself throws — an unreadable file, a bug in a guard — the build step catches it, logs a warning, and continues. A doctor bug never blocks a deploy on its own.
111
+ If the doctor pre-step itself throws — for example, because a source file is unreadable or a guard crashes — the build is blocked. A partial security scan must never look like a clean result.
106
112
 
107
113
  ## Per-app configuration {#config}
108
114
 
109
- `agent-native.json`'s optional `"doctor"` key. Every field is optional with an empty/false default, so a fresh app runs every v1 guard with zero config:
115
+ `agent-native.json`'s optional `"doctor"` key. A fresh app runs every v1 guard
116
+ with zero config and fails builds on findings by default:
110
117
 
111
118
  ```json
112
119
  {
@@ -124,7 +131,7 @@ If the doctor pre-step itself throws — an unreadable file, a bug in a guard
124
131
  | ----------------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
125
132
  | `disabledGuards` | `string[]` | Guard names (from the table above) to skip — excluded from the default run and from the build hook. An explicit `--only` list overrides this and runs even a disabled guard. |
126
133
  | `dbToolScopingDenylist` | `Record<table, reason>` | Bare table name (the SQL name, not template-prefixed) → reviewer-readable reason. Used only by `db-tool-scoping`. A denylist entry with no matching table in `server/db/schema.ts` itself becomes a finding — "stale … entry — remove it." |
127
- | `failOnBuild` | `boolean` | See [The build hook](#build-hook). Default `false`. |
134
+ | `failOnBuild` | `boolean` | See [The build hook](#build-hook). Default `true`; set `false` only for a reviewed exception. |
128
135
 
129
136
  ## Opt-out markers {#opt-out}
130
137
 
@@ -174,6 +181,7 @@ The actual `--json` payload also carries a `strict` field reflecting whether `--
174
181
  "explicit-collab-access",
175
182
  "migration-manifest"
176
183
  ],
184
+ "workspaceApps": ["apps/mail", "apps/tasks"],
177
185
  "strict": false
178
186
  }
179
187
  ```
@@ -0,0 +1,158 @@
1
+ ---
2
+ title: "Environment Variables"
3
+ description: "Reference for Agent-Native framework, workspace, authentication, and deployment environment variables."
4
+ search: "environment variables env .env DATABASE_URL APP_URL BETTER_AUTH_SECRET Google OAuth workspace app"
5
+ ---
6
+
7
+ # Environment Variables
8
+
9
+ This page covers the environment variables owned by the Agent-Native framework
10
+ and workspace runtime. It is not a setup inventory of every template or
11
+ deployment system in this repository. Template-only values stay in the
12
+ maintainer inventory; the setup tables below focus on the shared configuration
13
+ most apps need.
14
+
15
+ For a normal app, start with [Deployment](/docs/deployment#environment-variables)
16
+ and [Authentication](/docs/authentication). Keep user-, organization-, and
17
+ workspace-scoped credentials in the database-backed secret or connection store;
18
+ use environment variables for deploy-level configuration.
19
+
20
+ For committed, non-secret app defaults such as first-run onboarding, use the
21
+ [Agent-Native app configuration guide](/docs/agent-native-config) instead of
22
+ adding another browser-exposed environment setting. Keep credentials and
23
+ deployment-specific values in the environment or scoped secret store.
24
+
25
+ ## Common application and deployment variables
26
+
27
+ | Variable | What it controls | Supported values or format |
28
+ | ------------------------------------------- | ----------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
29
+ | `DATABASE_URL` | Primary SQL connection. Local development falls back to SQLite when it is unset. | A provider-specific SQL URL, or unset for local SQLite. |
30
+ | `DATABASE_AUTH_TOKEN` | Separate database token when the database provider requires one. | An opaque provider token, or unset when the URL includes authentication. |
31
+ | `APP_URL` | Canonical public origin used for auth, OAuth, A2A, webhooks, and generated links. | An absolute public `http(s)` origin. |
32
+ | `BETTER_AUTH_URL` | Public origin used by Better Auth for cookies and callbacks. | An absolute public `http(s)` origin. |
33
+ | `APP_BASE_PATH` | Mounts an app under a path such as `/mail`. | Unset for a standalone app, or a slash-prefixed path. |
34
+ | `PORT` | Local Node/Nitro server port. | A decimal TCP port. |
35
+ | `NITRO_PRESET` | Build and deployment adapter. | A preset supported by the target host, such as `node`, `netlify`, `vercel`, or `cloudflare_pages`. |
36
+ | `BETTER_AUTH_SECRET` | Better Auth session signing and the legacy encryption fallback. Required in production. | A fresh random value of at least 32 characters. |
37
+ | `OAUTH_STATE_SECRET` | Dedicated signing key for OAuth state envelopes. Falls back to `BETTER_AUTH_SECRET` when unset. | A fresh random value of at least 32 characters. |
38
+ | `A2A_SECRET` | Shared HMAC for trusted cross-app A2A calls and signed handoffs. | One shared random value across trusted apps. |
39
+ | `SECRETS_ENCRYPTION_KEY` | Legacy app-local/shared encryption fallback. | A stable encryption key; prefer the workspace key for new shared vaults. |
40
+ | `WORKSPACE_SECRETS_ENCRYPTION_KEY` | Stable encryption key for a workspace-shared secrets vault. | The same stable key in every app that reads the vault. |
41
+ | `WORKSPACE_SECRETS_ENCRYPTION_KEY_PREVIOUS` | Previous workspace key during rotation. | The old key only; remove it after migration. |
42
+ | `ANTHROPIC_API_KEY` | Optional deploy-level fallback for the embedded production agent. | An API key; prefer scoped credentials for multi-tenant apps. |
43
+ | `AUTH_MODE` | Selects the local authentication behavior used by CLI and agent flows. | Unset or `local`; this is not a browser login bypass. |
44
+ | `AUTH_DISABLED` | Disables auth for local or preview-only work. | `true` or `1`; never use on a public production app. |
45
+ | `AUTH_MAGIC_LINK` | Controls the password-first versus magic-link sign-in path. | `0` keeps password-first sign-in; otherwise a configured email transport can enable magic links. |
46
+ | `AUTH_SKIP_EMAIL_VERIFICATION` | Skips signup email verification for local QA or previews. | `1`; never use it to weaken production auth. |
47
+ | `ACCESS_TOKEN` / `ACCESS_TOKENS` | Static bearer fallback for MCP and Connect clients. | One token or a delimited token list; these are not browser auth. |
48
+ | `AGENT_PROD_CODE_EXECUTION` | Production code-execution policy. | `off`, `sandboxed`, or `trusted`. See [Production Code Execution](/docs/deployment#production-code-execution). |
49
+ | `AGENT_NATIVE_SSR_CACHE` | Deployment-wide public SSR shell cache policy. | Unset/`on`, `off`, or a duration such as `30s` or `5m`. See [SSR Caching](/docs/deployment#ssr-caching). |
50
+ | `COOKIE_DOMAIN` | Shares auth cookies across same-database subdomains when explicitly configured. | A cookie domain. |
51
+ | `CORS_ALLOWED_ORIGINS` | Cross-origin request allowlist. | A comma-separated list of exact origins. |
52
+ | `WEBHOOK_BASE_URL` | Optional public base URL for self-callback and webhook targets. | An absolute public `http(s)` origin. |
53
+ | `APP_NAME` | App identity used by workspace and app-scoped configuration. | A short app name, such as `mail`. |
54
+ | `APP_ID` / `APP_TEMPLATE` | Optional app identity and generated-template metadata. | App-owned strings. |
55
+ | `NODE_ENV` | Node runtime mode. | Normally `development`, `test`, or `production`. |
56
+ | `CI` | Marks CI-driven test and build behavior. | A CI-provided truthy value. |
57
+ | `DEBUG` | Enables resolver-specific debug logging. | A resolver-supported truthy or namespace value. |
58
+
59
+ Generate strong secrets with:
60
+
61
+ ```bash
62
+ openssl rand -hex 32
63
+ ```
64
+
65
+ ## Google sign-in
66
+
67
+ Set one complete Google OAuth client pair to show the Google sign-in flow.
68
+ Prefer a low-scope identity-only client for app login, and keep API access in a
69
+ separate connection when a product needs broader Google scopes.
70
+
71
+ | Variable | What it controls | Supported values or format |
72
+ | ------------------------------ | ----------------------------------------------------------------------------------------------- | ----------------------------------------- |
73
+ | `GOOGLE_SIGN_IN_CLIENT_ID` | Preferred low-scope Google OAuth client ID for app login. | The client ID from Google Cloud Console. |
74
+ | `GOOGLE_SIGN_IN_CLIENT_SECRET` | Secret for the preferred sign-in client. | The matching client secret. |
75
+ | `GOOGLE_CLIENT_ID` | Backwards-compatible sign-in fallback and provider OAuth client ID for Google API integrations. | The matching Google OAuth client ID. |
76
+ | `GOOGLE_CLIENT_SECRET` | Secret for `GOOGLE_CLIENT_ID`. | The matching client secret. |
77
+ | `GOOGLE_AUTH_MODE` | Chooses the sign-in interaction. | `auto` (default), `popup`, or `redirect`. |
78
+
79
+ Register the callback URL in Google Cloud Console as the app's public URL,
80
+ including its base path, followed by
81
+ `/_agent-native/google/callback`. See [Authentication - Google OAuth](/docs/authentication#social-providers).
82
+
83
+ `GOOGLE_LEGACY_CLIENT_ID` and `GOOGLE_LEGACY_CLIENT_SECRET` are accepted for
84
+ older Google provider connections. `GOOGLE_SERVICE_ACCOUNT_KEY` and
85
+ `GOOGLE_APPLICATION_CREDENTIALS` are server-side service-account options for
86
+ specific Google API integrations; they are not required for browser sign-in.
87
+
88
+ ## Optional AI, search, and email fallbacks
89
+
90
+ These are deploy-level fallbacks for single-tenant or local use. Hosted,
91
+ multi-user apps should prefer the scoped credential and connection store.
92
+
93
+ | Variable | What it controls | Supported values or format |
94
+ | ------------------------------ | -------------------------------------------------------- | ------------------------------------------------------- |
95
+ | `OPENAI_API_KEY` | OpenAI model, realtime voice, or transcription fallback. | An OpenAI API key. |
96
+ | `OPENAI_BASE_URL` | OpenAI-compatible endpoint used with `OPENAI_API_KEY`. | An absolute `http(s)` URL without embedded credentials. |
97
+ | `GOOGLE_GENERATIVE_AI_API_KEY` | Gemini model fallback for the built-in AI engine. | A Google AI API key. |
98
+ | `GEMINI_API_KEY` | Gemini transcription fallback. | A Google AI API key. |
99
+ | `OPENROUTER_API_KEY` | OpenRouter model fallback. | An OpenRouter API key. |
100
+ | `GROQ_API_KEY` | Groq model or transcription fallback. | A Groq API key. |
101
+ | `MISTRAL_API_KEY` | Mistral model fallback. | A Mistral API key. |
102
+ | `COHERE_API_KEY` | Cohere model fallback. | A Cohere API key. |
103
+ | `BRAVE_SEARCH_API_KEY` | Brave web-search fallback. | A Brave Search API key. |
104
+ | `TAVILY_API_KEY` | Tavily web-search fallback. | A Tavily API key. |
105
+ | `EXA_API_KEY` | Exa web-search fallback. | An Exa API key. |
106
+ | `FIRECRAWL_API_KEY` | Firecrawl web-search fallback. | A Firecrawl API key. |
107
+ | `RESEND_API_KEY` | Resend transactional email delivery. | A Resend API key. |
108
+ | `SENDGRID_API_KEY` | SendGrid transactional email delivery. | A SendGrid API key. |
109
+ | `EMAIL_FROM` | Sender address used for transactional email. | A valid email address or display-name address. |
110
+ | `EMAIL_AGENT_ADDRESS` | Inbound address used by email-enabled apps. | A valid email address. |
111
+ | `EMAIL_INBOUND_WEBHOOK_SECRET` | Verifies inbound email webhook signatures. | A stable random secret. |
112
+
113
+ ## Per-app values in a workspace
114
+
115
+ The workspace root `.env` is loaded into every app. An app-local file such as
116
+ `apps/mail/.env` wins when the same key exists in both places, so use the root
117
+ file for shared values and the app file for app-specific values.
118
+
119
+ Some deploy-level values also support an app-name prefix. Set `APP_NAME`,
120
+ uppercase it, and replace non-alphanumeric characters with `_`:
121
+
122
+ ```bash
123
+ APP_NAME=mail
124
+ MAIL_DATABASE_URL=<MAIL_DATABASE_URL>
125
+ MAIL_DATABASE_AUTH_TOKEN=<MAIL_DATABASE_AUTH_TOKEN>
126
+ MAIL_SECRETS_ENCRYPTION_KEY=<MAIL_SECRETS_ENCRYPTION_KEY>
127
+ ```
128
+
129
+ The prefix form is supported for database URLs/tokens and app-local secret
130
+ encryption. Do not invent a prefix for an arbitrary variable; use
131
+ `apps/<name>/.env` or the shared root `.env` according to the variable's scope.
132
+
133
+ ## Public versus secret values
134
+
135
+ Variables whose names start with `VITE_` and values read through
136
+ `import.meta.env` can be bundled into browser code. Treat them as public
137
+ configuration. Never put an API key, token, password, or private key in a
138
+ browser-exposed variable.
139
+
140
+ Advanced integration and host-detection keys stay with their owning feature
141
+ guides and the maintainer inventory rather than appearing as a generic setup
142
+ block here. Use a scoped workspace connection for user or provider credentials,
143
+ and follow the owning app or feature guide when one is actually needed.
144
+ See [Security](/docs/security) for the credential boundary and
145
+ [Deployment](/docs/deployment) for production hosting.
146
+
147
+ ## Keeping the reference complete
148
+
149
+ The maintainer-only repository inventory remains broader than this public page.
150
+ Run the focused check from the repository root when adding a framework variable:
151
+
152
+ ```bash
153
+ pnpm run guard:env-documentation
154
+ ```
155
+
156
+ The check keeps the exhaustive internal inventory aligned with source while
157
+ also checking that the curated setup tables above do not omit a key they
158
+ explicitly document.
@@ -102,7 +102,7 @@ A one-time warning is logged when the fallback is used.
102
102
 
103
103
  ## Builder.io Hosting {#builder-hosting}
104
104
 
105
- When your app is connected to Builder.io, file uploads are automatically routed to Builder's asset hosting. Files are served from a CDN with no configuration needed. This is the recommended production setup.
105
+ When your app is connected to Builder.io, file uploads are automatically routed to Builder's asset hosting. Builder.io's free tier includes this managed storage. Files are served from a CDN with no configuration needed. This is the recommended production setup.
106
106
 
107
107
  ## Custom Providers {#custom-providers}
108
108
 
@@ -99,7 +99,7 @@ The agent chat can't respond until you connect an AI engine. After you're logged
99
99
 
100
100
  | Path | Steps |
101
101
  | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
102
- | **Connect Builder** | Click **Connect Builder.io**, choose the Builder Space, then click **Authorize**. No keys to manage yourself. |
102
+ | **Connect Builder** | Click **Connect Builder.io** (free tier available), choose the Builder Space, then click **Authorize**. No keys to manage yourself. |
103
103
  | **Bring your own key** | Enter your Anthropic or OpenAI API key in the Setup panel. Get an Anthropic key at [console.anthropic.com](https://console.anthropic.com). |
104
104
 
105
105
  Alternatively, create a `.env` file in the `my-app/` directory (the same
@@ -25,7 +25,7 @@ At runtime, every agent-native app is three things working together:
25
25
 
26
26
  - **Agent** — Autonomous AI that reads data, writes data, runs actions, and uses configured tools. It can also modify source when its frame is intentionally granted workspace and write tooling. Customizable with skills and instructions.
27
27
  - **Application** — The product surface around the agent. This may start as chat, add native inline results, grow into a small control plane, or become a full React UI with dashboards, flows, and visualizations.
28
- - **Computer** — Database, browser, and configured tool runtimes. Agents work through the app's action and data surface; MCP servers are optional add-ons, not the foundation.
28
+ - **Computer** — Database, browser, and configured tool runtimes. Agents work through the app's action and data surface; an app may expose that same action surface over MCP, while external MCP servers remain optional add-ons rather than the foundation.
29
29
 
30
30
  <Diagram id="doc-block-t1f7pj" title="Agent, application, and computer" summary="Three layers working together over one shared SQL store. The agent and the application both read and write the same data.">
31
31
 
@@ -260,7 +260,7 @@ my-company-platform/
260
260
 
261
261
  A few onboarding flows are workspace-aware out of the box:
262
262
 
263
- - **Builder `/cli-auth`**: clicking "Connect Builder" from any app writes `BUILDER_PRIVATE_KEY` and friends to scoped DB secrets, so every app can resolve the connection without sharing a deploy-global key.
263
+ - **Builder `/cli-auth`**: clicking "Connect Builder" (free tier available) from any app writes `BUILDER_PRIVATE_KEY` and friends to scoped DB secrets, so every app can resolve the connection without sharing a deploy-global key.
264
264
  - **Compatibility key route** (`POST /_agent-native/env-vars`): older onboarding forms still call this route name, but it now saves values as scoped DB secrets. Pass `scope: "workspace"` to share with the active org, or omit it for a per-user key.
265
265
 
266
266
  This works because every app in the same workspace points at the same `DATABASE_URL` by default, so framework credential storage (`@agent-native/core/credentials`) makes a credential available to every app without per-app config. Add a thin helper in `packages/shared` if your workspace wants a stricter naming convention.
@@ -12,11 +12,11 @@ This page covers what happens to a recording after it's captured: transcription
12
12
 
13
13
  Transcription tries the fastest, free option first and only falls back to a paid one when it has to:
14
14
 
15
- | Order | Provider | Notes |
16
- | ----- | ------------------------------- | ----------------------------------------------------------------------------------------- |
17
- | 1 | Native (on-device) | Browser Web Speech API or desktop local Whisper/macOS speech — instant, no API key |
18
- | 2 | Builder.io managed (Gemini) | Cloud fallback when native text is missing; no extra key needed once Builder is connected |
19
- | 3 | Groq (`whisper-large-v3-turbo`) | Optional backup if you'd rather bring your own key |
15
+ | Order | Provider | Notes |
16
+ | ----- | ------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
17
+ | 1 | Native (on-device) | Browser Web Speech API or desktop local Whisper/macOS speech — instant, no API key |
18
+ | 2 | Builder.io managed (Gemini) | Cloud fallback when native text is missing; no extra key needed once Builder is connected; Builder.io's free tier includes managed AI credits |
19
+ | 3 | Groq (`whisper-large-v3-turbo`) | Optional backup if you'd rather bring your own key |
20
20
 
21
21
  Once a transcript is ready, the agent fills in a title, summary, and chapter markers automatically, and keeps them current as you edit. You can also ask directly:
22
22
 
@@ -104,7 +104,7 @@ Human views and agent views are tracked in separate counters on purpose, so an a
104
104
 
105
105
  ## Builder credit status
106
106
 
107
- Backup transcription, transcript cleanup, and AI titles/summaries run on Builder.io-managed AI credits by default. If one of those stops working, ask the agent — it checks the current credit status and explains whether credits are paused rather than treating it as a bug. The fix is either adding Builder.io credits/upgrading, or connecting a personal Groq key as a fallback for transcription.
107
+ Backup transcription, transcript cleanup, and AI titles/summaries run on Builder.io-managed AI credits by default, including the free tier's credits. If one of those stops working, ask the agent — it checks the current credit status and explains whether credits are paused rather than treating it as a bug. The fix is either adding Builder.io credits/upgrading, or connecting a personal Groq key as a fallback for transcription.
108
108
 
109
109
  ## What's next
110
110
 
@@ -18,7 +18,7 @@ See [Getting started](/docs/getting-started) for installing dependencies, runnin
18
18
 
19
19
  Clips is a larger template with a native recorder (it ships a desktop companion for local capture). Four setup steps get recordings uploading end to end:
20
20
 
21
- 1. **Video storage (required).** Connect a storage backend through the onboarding wizard or Clips Settings. The easiest path is Builder.io (free during beta, one-click). For self-hosted storage, save `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, and optionally `S3_REGION` and `S3_PUBLIC_BASE_URL` in the app; the values are stored as scoped DB secrets. Cloudflare R2 and DigitalOcean Spaces use the same key names with the `R2_*` prefix.
21
+ 1. **Video storage (required).** Connect a storage backend through the onboarding wizard or Clips Settings. The easiest path is Builder.io (free tier includes video storage and AI credits, one-click). For self-hosted storage, save `S3_ENDPOINT`, `S3_BUCKET`, `S3_ACCESS_KEY_ID`, `S3_SECRET_ACCESS_KEY`, and optionally `S3_REGION` and `S3_PUBLIC_BASE_URL` in the app; the values are stored as scoped DB secrets. Cloudflare R2 and DigitalOcean Spaces use the same key names with the `R2_*` prefix.
22
22
  2. **Google Calendar (optional).** To sync upcoming meetings, connect a Google Calendar account from Settings. The OAuth callback URL in dev is `http://localhost:8094/_agent-native/google/callback`. Set up a Google OAuth client in [Google Cloud Console](https://console.cloud.google.com/) with the Gmail and Google Calendar APIs enabled.
23
23
  3. **Screen-capture permissions.** On macOS, grant Screen Recording permission to the browser (or the desktop companion app) in System Settings → Privacy & Security → Screen Recording.
24
24
  4. **Slack previews (optional).** Create a Slack app with `links:read`, `links:write`, and `links.embed:write`; subscribe to `link_shared`; add your Clips share domain under **App Unfurl Domains**; set the Request URL to `https://your-clips.example.com/api/slack/unfurl`; and add the OAuth redirect URL `https://your-clips.example.com/api/slack/oauth/callback`. Configure `SLACK_CLIENT_ID`, `SLACK_CLIENT_SECRET`, and `SLACK_SIGNING_SECRET`, then connect workspaces from Clips Settings.
@@ -29,7 +29,7 @@ The hosted Clips app at [clips.agent-native.com](https://clips.agent-native.com)
29
29
 
30
30
  1. **Create the app** with the quick-start command above.
31
31
 
32
- 2. **Configure production state.** Set a persistent `DATABASE_URL`, the normal production auth/secrets variables from [Deployment](/docs/deployment), and a video storage provider. Builder.io Connect is the easiest storage path; for self-hosted storage, save `S3_*` or `R2_*` keys from Clips Settings for an S3-compatible bucket.
32
+ 2. **Configure production state.** Set a persistent `DATABASE_URL`, the normal production auth/secrets variables from [Deployment](/docs/deployment), and a video storage provider. Builder.io Connect is the easiest storage path, and its free tier includes video storage and AI credits; for self-hosted storage, save `S3_*` or `R2_*` keys from Clips Settings for an S3-compatible bucket.
33
33
 
34
34
  3. **Deploy the web app.** For a plain Node deploy:
35
35
 
@@ -44,7 +44,7 @@ The hosted Clips app at [clips.agent-native.com](https://clips.agent-native.com)
44
44
 
45
45
  5. **Enable the Chrome extension after publishing.** See [Chrome extension and embedded bug reports](#chrome-extension-and-embedded-bug-reports) below.
46
46
 
47
- 6. **Connect optional integrations.** Google Calendar powers the Meetings tab, `GEMINI_API_KEY` or Builder.io Connect powers transcript cleanup and titles, `GROQ_API_KEY` can provide speech-to-text fallback, and the Slack OAuth connection in Settings enables playable Slack unfurls.
47
+ 6. **Connect optional integrations.** Google Calendar powers the Meetings tab, `GEMINI_API_KEY` or Builder.io Connect (free tier includes AI credits) powers transcript cleanup and titles, `GROQ_API_KEY` can provide speech-to-text fallback, and the Slack OAuth connection in Settings enables playable Slack unfurls.
48
48
 
49
49
  For local development, run the web app with `pnpm dev` and point the desktop tray app at `http://localhost:8094`.
50
50
 
@@ -105,7 +105,7 @@ on so settings stay findable everywhere.
105
105
 
106
106
  ## UX Standard {#ux-standard}
107
107
 
108
- - Keep model keys, OAuth connections, Builder connect, language, team, and app
108
+ - Keep model keys, OAuth connections, Builder connect (free tier available), language, team, and app
109
109
  preferences in one route.
110
110
  - Keep search on and register a `SettingsSearchEntry` for every meaningful
111
111
  control so users can find settings by name instead of scanning tabs.