@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,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-08-05
4
+ ---
5
+
6
+ Decks are now sorted by most recently updated
@@ -144,7 +144,7 @@ export async function uploadImageAsset(args: {
144
144
 
145
145
  if (!result) {
146
146
  const err: Error & { statusCode?: number } = new Error(
147
- "No file upload provider is configured. Connect Builder.io from the agent composer model menu, or register a custom provider via registerFileUploadProvider().",
147
+ "No file upload provider is configured. Connect Builder.io (free tier available) from the agent composer model menu, or register a custom provider via registerFileUploadProvider().",
148
148
  );
149
149
  err.statusCode = 503;
150
150
  throw err;
@@ -155,7 +155,7 @@ export async function saveUploadedReferenceFile(args: {
155
155
  if (!reference) {
156
156
  throw Object.assign(
157
157
  new Error(
158
- "Private file storage is not configured. Connect Builder.io or another file provider before uploading reference files in a hosted Slides deployment.",
158
+ "Private file storage is not configured. Connect Builder.io (free tier available) or another file provider before uploading reference files in a hosted Slides deployment.",
159
159
  ),
160
160
  { statusCode: 503 },
161
161
  );
@@ -21,6 +21,7 @@ import { and, eq } from "drizzle-orm";
21
21
  import { getDeckUrl } from "../../actions/_app-url.js";
22
22
  import { SLIDES_USER_PREFS_KEY } from "../../shared/slides-user-prefs.js";
23
23
  import { getDb, schema } from "../db/index.js";
24
+ import { SLIDES_DECK_COMMENT_EMAIL_ID } from "./emails.js";
24
25
 
25
26
  /**
26
27
  * `deck-missing` stays distinct from `no-recipients`: one means the deck could
@@ -99,6 +100,41 @@ async function threadParticipants(
99
100
  return rows.map((row) => row.authorEmail);
100
101
  }
101
102
 
103
+ export function renderDeckCommentEmail({
104
+ actor,
105
+ title,
106
+ url,
107
+ content,
108
+ isReply,
109
+ }: {
110
+ actor: string;
111
+ title: string;
112
+ url: string;
113
+ content: string;
114
+ isReply: boolean;
115
+ }) {
116
+ return {
117
+ subject: isReply
118
+ ? `${actor} replied to a comment on "${title}"`
119
+ : `${actor} commented on "${title}"`,
120
+ ...renderEmail({
121
+ preheader: isReply
122
+ ? `${actor} replied to a comment on ${title}.`
123
+ : `${actor} commented on ${title}.`,
124
+ heading: isReply ? "New reply on your deck" : "New comment",
125
+ paragraphs: [
126
+ isReply
127
+ ? `${emailStrong(actor)} replied in a comment thread on ${emailStrong(title)}.`
128
+ : `${emailStrong(actor)} commented on ${emailStrong(title)}.`,
129
+ `"${excerpt(content)}"`,
130
+ ],
131
+ cta: { label: "Open deck", url },
132
+ footer:
133
+ "You received this because you own or participated in this thread. Turn these off in Slides settings.",
134
+ }),
135
+ };
136
+ }
137
+
102
138
  export async function notifyDeckComment(input: {
103
139
  deckId: string;
104
140
  slideId: string;
@@ -153,29 +189,16 @@ async function deliverDeckCommentEmails(input: {
153
189
  preferenceKey: SLIDES_USER_PREFS_KEY,
154
190
  logLabel: LOG_LABEL,
155
191
  send: async (to) => {
156
- const { html, text } = renderEmail({
157
- preheader: input.isReply
158
- ? `${actor} replied to a comment on ${deck.title}.`
159
- : `${actor} commented on ${deck.title}.`,
160
- heading: input.isReply ? "New reply on your deck" : "New comment",
161
- paragraphs: [
162
- input.isReply
163
- ? `${emailStrong(actor)} replied in a comment thread on ${emailStrong(deck.title)}.`
164
- : `${emailStrong(actor)} commented on ${emailStrong(deck.title)}.`,
165
- `"${excerpt(input.content)}"`,
166
- ],
167
- cta: { label: "Open deck", url },
168
- footer:
169
- "You received this because you own or participated in this thread. Turn these off in Slides settings.",
170
- });
171
-
172
192
  await sendEmail({
193
+ ...renderDeckCommentEmail({
194
+ actor,
195
+ title: deck.title,
196
+ url,
197
+ content: input.content,
198
+ isReply: input.isReply,
199
+ }),
173
200
  to,
174
- subject: input.isReply
175
- ? `${actor} replied to a comment on "${deck.title}"`
176
- : `${actor} commented on "${deck.title}"`,
177
- html,
178
- text,
201
+ templateId: SLIDES_DECK_COMMENT_EMAIL_ID,
179
202
  });
180
203
  },
181
204
  });
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Catalog entries for the transactional emails Slides sends.
3
+ *
4
+ * Registered from `server/plugins/transactional-emails.ts` so Dispatch can list
5
+ * and preview them without the app having sent anything yet.
6
+ */
7
+
8
+ import { defineTransactionalEmail } from "@agent-native/core/email-catalog";
9
+
10
+ import { renderDeckCommentEmail } from "./comment-notifications.js";
11
+
12
+ export const SLIDES_DECK_COMMENT_EMAIL_ID = "slides.deck-comment";
13
+
14
+ let registered = false;
15
+
16
+ export function registerSlidesEmails(): void {
17
+ if (registered) return;
18
+ registered = true;
19
+
20
+ defineTransactionalEmail({
21
+ id: SLIDES_DECK_COMMENT_EMAIL_ID,
22
+ name: "Deck comment",
23
+ trigger:
24
+ "Someone posts a comment or a thread reply on a slide. Subject and copy differ slightly for a reply; both send under this id.",
25
+ recipientLabel: "Deck owner and authors",
26
+ recipient:
27
+ "The deck owner, plus every prior author in the thread when the new comment is a reply. The list is re-checked against the deck's live ACL and filtered by each user's `emailNotifications` preference; the comment's own author never receives it.",
28
+ senderLabel: "Default sender",
29
+ sender:
30
+ "The configured default sender. This call site sets no `from`, `fromName`, `replyTo`, or `appSender`.",
31
+ preview: () =>
32
+ renderDeckCommentEmail({
33
+ actor: "Sam Rivera",
34
+ title: "Series A narrative",
35
+ url: "https://example.com/decks/deck_sample?slide=3",
36
+ content: "Slide 3 needs the updated revenue chart before Thursday.",
37
+ isReply: false,
38
+ }),
39
+ });
40
+ }
@@ -0,0 +1,5 @@
1
+ import { registerSlidesEmails } from "../lib/emails.js";
2
+
3
+ export default function registerTransactionalEmails(): void {
4
+ registerSlidesEmails();
5
+ }
@@ -31,6 +31,26 @@ the framework monorepo checkout.
31
31
 
32
32
  From a generated app directory:
33
33
 
34
+ ```bash
35
+ pnpm action framework-search --pattern "defineAction"
36
+ pnpm action framework-search --pattern "templates/*/actions/*.ts" --mode glob --scope source
37
+ pnpm action framework-search --pattern "Agent(?:Panel|Sidebar)" --mode regex --scope source
38
+ ```
39
+
40
+ Use `framework-search` first when a question may cross the docs and source
41
+ boundary. It searches the version-matched framework docs, runtime-visible
42
+ skills, readable Core or Toolkit package source, and first-party template
43
+ corpus in one bounded read-only call. Use `scope: docs` or `scope: source` to
44
+ narrow it, then use the existing focused readers for the page or file you need.
45
+
46
+ The same tool is available in the headless `pnpm agent` loop and every built-in
47
+ app agent. Its default substring mode is safest for ordinary questions; use
48
+ `glob` for wildcard paths, `sql-like` for `%` and `_` wildcards, and `regex`
49
+ for precise structural matches. Results are bounded, so refine the pattern or
50
+ path instead of treating a truncated result as exhaustive.
51
+
52
+ From a generated app directory, the lower-level readers remain available:
53
+
34
54
  ```bash
35
55
  pnpm action docs-search --query "<feature>"
36
56
  pnpm action docs-search --slug <slug>
@@ -41,9 +61,9 @@ pnpm action source-search --path templates/chat/actions/hello.ts
41
61
  pnpm action source-search --list
42
62
  ```
43
63
 
44
- The headless `pnpm agent` loop and built-in app agent also expose a read-only
45
- `docs-search` tool with the same `query`, `slug`, and `list` options, plus a
46
- read-only `source-search` tool with `query`, `path`, and `list`.
64
+ The headless `pnpm agent` loop and built-in app agent also expose read-only
65
+ `framework-search`, `docs-search`, and `source-search` tools. Use the unified
66
+ tool for discovery, then the focused tools for full page or file reads.
47
67
 
48
68
  If the action runner is unavailable, search the package directly:
49
69
 
@@ -65,6 +65,22 @@ Contextual agent UI is not a reason to expose every option at once. Start with
65
65
  the domain task's primary action, reveal review or configuration only when the
66
66
  current state needs it, and let the sidebar carry conversational depth.
67
67
 
68
+ ## Visual Direction And Workspace Variety
69
+
70
+ Shared workspace behavior should be consistent without forcing every app into
71
+ the same visual skin. Keep shell and component tokens semantic, then let each
72
+ app declare a named direction in `DESIGN.md` before styling. A new app should
73
+ choose its palette family and composition from the product context, compare
74
+ nearby apps, and avoid inheriting their accent by default. Use the
75
+ `frontend-design` visual-direction reference for mode, palette, type, density,
76
+ shape, anti-references, and the `distill` / `typeset` / `colorize` / `layout` /
77
+ `polish` / `audit` review vocabulary.
78
+
79
+ Do not make warm beige plus terracotta the workspace fallback. Preserve a
80
+ workspace-level brand when one exists; otherwise keep shared chrome neutral and
81
+ allow app-owned accents to distinguish products while retaining accessible
82
+ semantic states and the shared AgentSidebar contract.
83
+
68
84
  ## Discover Before Building
69
85
 
70
86
  Before creating an app-local version of repeated workspace or agent UI:
@@ -34,6 +34,22 @@ Before coding, decide:
34
34
 
35
35
  Then implement working code that is cohesive, accessible, responsive, and polished in small details: typography, spacing, copy, motion, empty states, loading states, focus states, and error states.
36
36
 
37
+ ## Visual Direction Contract
38
+
39
+ Before styling a new app or workspace surface, define its product mode,
40
+ audience, visual world, palette family, type treatment, composition, shape
41
+ language, and anti-references in `DESIGN.md`. Read
42
+ `references/visual-direction.md` for the direction families and review
43
+ vocabulary. This is the Impeccable-inspired design contract for Agent-Native
44
+ apps: understand the product, name the mode, deal a few coherent directions,
45
+ commit to one, and audit the result instead of averaging back to a starter.
46
+
47
+ Preserve an existing brand system and component library. When no brand exists,
48
+ choose a deliberate direction based on the domain and compare sibling apps
49
+ before selecting its accent family. Shared behavior and semantic token names
50
+ should stay consistent; palette, density, composition, type contrast, and
51
+ shape language should not be identical by default.
52
+
37
53
  ## Minimalism And Progressive Disclosure
38
54
 
39
55
  Default to Apple/Linear-level restraint: make the primary workflow obvious, then remove everything that does not help that workflow right now. A polished UI often has fewer visible controls, fewer borders, fewer labels, and fewer explanatory surfaces than the first reasonable implementation.
@@ -81,13 +97,13 @@ passed this requirement yet.
81
97
  operational apps, make a clear sans-serif hierarchy the default; reserve a
82
98
  serif or editorial face for a deliberate content preview or brand moment,
83
99
  not the whole application shell.
84
- - **Color and theme**: Use semantic tokens and CSS variables. Avoid one-note palettes and default purple/blue gradients unless the brand demands them.
100
+ - **Color and theme**: Use semantic tokens and CSS variables. Avoid one-note palettes, default warm beige/terracotta, and default purple/blue gradients unless the brand demands them. New apps should choose a product-fitting accent family rather than inherit the previous app's color.
85
101
  - **Motion**: Prefer purposeful transitions and small state changes. Use CSS transitions/keyframes unless the app already uses a motion library. Never `transition-all` — list the properties that actually change (e.g. `transition-[opacity,transform]`). Use the shared easing tokens defined in `packages/core/src/styles/agent-native.css` instead of hand-typing curves: `var(--ease-drawer)` (260ms, drawers/app chrome), `var(--ease-collapse)` (200ms, expand/collapse), `var(--ease-out-strong)` (snappy entrances) — in Tailwind, `ease-[var(--ease-collapse)]`. Enter/exit with ease-out, never `ease-in`. Overlays that zoom in must set the Radix origin var (e.g. `origin-[--radix-popover-content-transform-origin]`). Animate `transform`/`opacity`, not width/height/padding/box-shadow. Gate looping or large-movement animations with `motion-reduce:`. Command palettes and keyboard-triggered actions get no animation.
86
102
  - **Composition**: Match the workflow. Operational apps should be dense and scannable; marketing or portfolio pages can be more immersive.
87
103
  - **Visual assets**: Websites, games, and object-focused pages need real or generated media when images help users understand the subject.
88
104
  - **Responsive fit**: Text must not overflow buttons, cards, tabs, sidebars, or fixed-format tools. Use stable dimensions for boards, grids, toolbars, and counters.
89
105
 
90
- **Beat convergence, not just defaults.** You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option (ban Inter and you reach for Roboto; ban purple gradients and you reach for Space Grotesk + a teal accent on every screen). Commit to one named direction, pair any reference with the reason it fits ("Linear: the quiet confidence of its spacing" — a bare "Linear" collapses back to the average), and match implementation effort to the vision: maximalist wants elaborate motion and effects, minimal wants restraint and precise spacing. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
106
+ **Beat convergence, not just defaults.** You sample toward the "on-distribution" center, so naming what to avoid is not enough: every "don't" needs a "do", or you converge on the next safe option. Commit to one named direction, pair any reference with the reason it fits, and match implementation effort to the vision. If the brief is open, consider two or three coherent visual worlds, then commit to one instead of averaging them. When building on an existing app, inspect its tokens/type/components first and treat any drift back to a default as a missing token to pin, not something to re-prompt.
91
107
 
92
108
  ## Agent-Native UI Rules
93
109
 
@@ -164,6 +180,9 @@ as an operator would use it repeatedly:
164
180
  - For review flows, stack the source/original first and the generated or safe
165
181
  result second by default. Use side-by-side comparison only when the content
166
182
  is short enough to scan without excessive horizontal reading.
183
+ - Compare the result with sibling apps. Shared toolkit behavior should feel
184
+ consistent, but a repeated palette, hero composition, type pairing, and
185
+ radius language without a product reason is visual drift, not consistency.
167
186
  - Check the result at the target desktop width and a narrow width. If the first
168
187
  viewport feels like documentation instead of a tool, subtract again.
169
188
 
@@ -216,6 +235,8 @@ For substantial frontend work:
216
235
  5. When registering or changing a company adapter, run
217
236
  `@agent-native/toolkit/conformance`, including mixed-overlay focus,
218
237
  `portalContainer`, and z-index stacking checks.
238
+ 6. For a new app or a visual redesign, review `DESIGN.md` against the rendered
239
+ surface and run the anti-slop audit in `references/visual-direction.md`.
219
240
 
220
241
  ## Related Skills
221
242
 
@@ -0,0 +1,99 @@
1
+ # Visual Direction Reference
2
+
3
+ Use this reference when a new app or workspace needs a visual point of view and
4
+ does not already have an established brand system. It adapts the useful parts
5
+ of Impeccable's workflow: understand the product, name the surface mode, deal
6
+ several coherent directions, commit to one, and audit the result for defaults
7
+ that became the design by accident.
8
+
9
+ ## The direction contract
10
+
11
+ Before writing UI, capture these decisions in the app's `DESIGN.md`:
12
+
13
+ | Decision | What to record |
14
+ | -------------------- | ------------------------------------------------------------------- |
15
+ | Product mode | `operate`, `read`, `persuade`, or `experience` |
16
+ | Audience and cadence | Who uses it, how often, and under what conditions |
17
+ | Visual world | A short name and the feeling it creates |
18
+ | Palette family | The semantic accent family and neutral undertone |
19
+ | Type treatment | Sans-first, editorial contrast, or display-led emphasis |
20
+ | Composition | Dense console, focused workbench, document, canvas, or guided steps |
21
+ | Shape language | Quiet corners, crisp geometry, or soft utility surfaces |
22
+ | Anti-references | Defaults this app must not drift toward |
23
+
24
+ `DESIGN.md` is a portable design contract, not a license to bypass the app's
25
+ tokens or component system. If the app already has a brand system, document it
26
+ and preserve it. If it does not, choose a direction before styling.
27
+
28
+ ## Palette families
29
+
30
+ Use one family as an accent and keep the rest of the system semantic and quiet.
31
+ These are starting points, not a fixed theme library:
32
+
33
+ | Family | Good fit | Typical character |
34
+ | ---------------- | ------------------------------------------- | --------------------------------- |
35
+ | Ink / graphite | Admin, security, sensitive review | Serious, low-noise, high contrast |
36
+ | Cobalt / sky | Planning, collaboration, scheduling | Clear, trustworthy, alert |
37
+ | Pine / teal | Automation, systems, finance, data | Calm, capable, grounded |
38
+ | Indigo / violet | Slides, creative tools, research | Exploratory, focused, expressive |
39
+ | Plum / berry | Publishing, knowledge, editorial work | Distinctive, thoughtful, human |
40
+ | Coral / rose | Communication, people, customer workflows | Warm, direct, social |
41
+ | Ochre / citron | Lightweight planning or energetic utilities | Optimistic, sparing, directional |
42
+ | Paper / charcoal | Long-form reading, exports, approvals | Tactile, restrained, legible |
43
+
44
+ Do not make warm beige plus terracotta the universal fallback. Do not rotate
45
+ through saturated colors mechanically. Choose the family that supports the
46
+ workflow, then verify contrast, dark mode, focus states, destructive states,
47
+ and the sidebar boundary.
48
+
49
+ ## Variation without chaos
50
+
51
+ Vary at least two independent axes when sibling apps share a workspace:
52
+
53
+ - accent family or neutral undertone;
54
+ - information density and page composition;
55
+ - type contrast and display treatment;
56
+ - radius and border language;
57
+ - navigation emphasis and use of whitespace.
58
+
59
+ Keep shared behavior, semantic token names, accessibility, and AgentSidebar
60
+ placement consistent. The goal is a family of products, not five unrelated
61
+ themes and not five copies of the same starter.
62
+
63
+ For a batch of apps, keep a small direction ledger in the workspace
64
+ `DESIGN.md` or the handoff. Record each app's mode, direction, and palette
65
+ family, then choose a new family or a clearly different composition for the
66
+ next app unless an existing brand requires reuse. Never copy a sibling's
67
+ `global.css` palette block or treat the last app's accent as the generator
68
+ default.
69
+
70
+ ## Review vocabulary
71
+
72
+ Make one named intervention at a time so the agent can reason about the
73
+ change:
74
+
75
+ - `distill` - remove copy, controls, cards, and chrome that do not serve the
76
+ next decision;
77
+ - `typeset` - repair hierarchy, measure, line length, and emphasis;
78
+ - `colorize` - establish a restrained semantic palette and contrast states;
79
+ - `layout` - repair grouping, density, alignment, and responsive composition;
80
+ - `polish` - resolve the small visual inconsistencies after the structure is
81
+ right;
82
+ - `audit` - check slop, accessibility, responsive behavior, and visual drift.
83
+
84
+ Do not average several directions into a generic compromise. Deal two or three
85
+ coherent options when the brief is open, select one, and encode the decision in
86
+ tokens and `DESIGN.md`.
87
+
88
+ ## Anti-slop audit
89
+
90
+ Before handoff, inspect the first viewport and ask:
91
+
92
+ - Did the app inherit the neighboring app's palette or hero layout without a
93
+ product reason?
94
+ - Are there equal-weight cards, status chips, helper paragraphs, or controls
95
+ that should be removed or disclosed?
96
+ - Does the typography fit the product mode instead of decorating the shell?
97
+ - Is the AgentSidebar distinct but quiet, with the domain page still primary?
98
+ - Are focus, loading, empty, error, dark, and narrow-width states part of the
99
+ same design direction?
@@ -0,0 +1,12 @@
1
+ {
2
+ "version": 1,
3
+ "onboarding": {
4
+ "firstRun": {
5
+ "development": "off",
6
+ "production": "connect-and-integrations"
7
+ }
8
+ },
9
+ "doctor": {
10
+ "failOnBuild": false
11
+ }
12
+ }
package/dist/action.d.ts CHANGED
@@ -52,6 +52,12 @@ export interface ActionRunContext {
52
52
  * must apply their own.
53
53
  */
54
54
  userEmail?: string;
55
+ /**
56
+ * Request headers for server-only actions that must delegate to an
57
+ * authenticated framework protocol, such as Better Auth password setup.
58
+ * Never expose this context to agent tools or return it from an action.
59
+ */
60
+ requestHeaders?: Headers;
55
61
  /** Resolved org id, or `null` when the request has no org. */
56
62
  orgId?: string | null;
57
63
  /** How this action was invoked. */
@@ -343,7 +343,7 @@ async function* emitHttpError(response) {
343
343
  yield {
344
344
  type: "stop",
345
345
  reason: "error",
346
- error: "Builder authentication failed. Reconnect Builder via Settings.",
346
+ error: "Builder authentication failed. Reconnect Builder (free tier available) via Settings.",
347
347
  errorCode: "builder_auth_error",
348
348
  };
349
349
  return;
@@ -353,7 +353,7 @@ async function* emitHttpError(response) {
353
353
  yield {
354
354
  type: "stop",
355
355
  reason: "error",
356
- error: "Builder authentication failed. Reconnect Builder via Settings.",
356
+ error: "Builder authentication failed. Reconnect Builder (free tier available) via Settings.",
357
357
  errorCode: "builder_auth_error",
358
358
  };
359
359
  return;
@@ -5,7 +5,7 @@ export declare const LLM_MISSING_CREDENTIALS_ERROR_CODE = "missing_credentials";
5
5
  * recognize it without importing server-only code into the browser bundle.
6
6
  */
7
7
  export declare const CREDENTIAL_STORE_UNAVAILABLE_ERROR_CODE = "credential_store_unavailable";
8
- export declare const LLM_MISSING_CREDENTIALS_MESSAGE = "No LLM provider is connected. Open this app's Manage agent > LLM, then connect Builder.io or add a provider key.";
8
+ export declare const LLM_MISSING_CREDENTIALS_MESSAGE = "No LLM provider is connected. Open this app's Manage agent > LLM, then connect Builder.io (free tier available) or add a provider key.";
9
9
  export declare function isLlmCredentialError(error: unknown, errorCode?: string | null): boolean;
10
10
  export declare function formatLlmCredentialErrorMessage(options?: {
11
11
  agentName?: string;
@@ -6,7 +6,7 @@ export const LLM_MISSING_CREDENTIALS_ERROR_CODE = "missing_credentials";
6
6
  * recognize it without importing server-only code into the browser bundle.
7
7
  */
8
8
  export const CREDENTIAL_STORE_UNAVAILABLE_ERROR_CODE = "credential_store_unavailable";
9
- export const LLM_MISSING_CREDENTIALS_MESSAGE = "No LLM provider is connected. Open this app's Manage agent > LLM, then connect Builder.io or add a provider key.";
9
+ export const LLM_MISSING_CREDENTIALS_MESSAGE = "No LLM provider is connected. Open this app's Manage agent > LLM, then connect Builder.io (free tier available) or add a provider key.";
10
10
  const LLM_CREDENTIAL_KEYS = new Set([
11
11
  ...PROVIDER_ENV_VARS,
12
12
  "BUILDER_PRIVATE_KEY",
@@ -40,7 +40,7 @@ export function isLlmCredentialError(error, errorCode) {
40
40
  export function formatLlmCredentialErrorMessage(options) {
41
41
  const agentName = options?.agentName?.trim();
42
42
  if (agentName) {
43
- return `The ${agentName} agent could not finish this request because that app needs an LLM connection. Open ${agentName}'s Manage agent > LLM, then connect Builder.io or add a provider key.`;
43
+ return `The ${agentName} agent could not finish this request because that app needs an LLM connection. Open ${agentName}'s Manage agent > LLM, then connect Builder.io (free tier available) or add a provider key.`;
44
44
  }
45
45
  return LLM_MISSING_CREDENTIALS_MESSAGE;
46
46
  }
@@ -2128,6 +2128,7 @@ const DEFAULT_INITIAL_TOOL_NAMES = new Set([
2128
2128
  // supplied by the plugin's effective starter list, while provider, MCP,
2129
2129
  // extension, and other uncommon schemas stay reachable through tool-search.
2130
2130
  "resources",
2131
+ "framework-search",
2131
2132
  "docs-search",
2132
2133
  "get-framework-context",
2133
2134
  "read-attachment",
@@ -4394,11 +4395,11 @@ export async function runAgentLoop(opts) {
4394
4395
  // `refresh-screen` itself.
4395
4396
  if (!isError) {
4396
4397
  try {
4397
- const { actionCallIsReadOnly, notifyActionChange } = await import("../server/action-change.js");
4398
+ const { actionCallIsReadOnly, notifyActionChangeInBackground } = await import("../server/action-change.js");
4398
4399
  if (!actionCallIsReadOnly(actionEntry, toolCall.input, false)) {
4399
4400
  const owner = opts.ownerEmail ?? getRequestUserEmail() ?? undefined;
4400
4401
  const orgId = opts.orgId ?? getRequestOrgId() ?? undefined;
4401
- await notifyActionChange({
4402
+ notifyActionChangeInBackground({
4402
4403
  actionName: toolCall.name,
4403
4404
  ...(owner ? { owner } : {}),
4404
4405
  ...(orgId ? { orgId } : {}),
@@ -3,7 +3,7 @@ const LEGACY_LOCAL_COPY_MAGIC = new Uint8Array([
3
3
  0x66, 0x69, 0x67, 0x2d, 0x6b, 0x69, 0x77, 0x69,
4
4
  ]);
5
5
  function unsupportedFigImport() {
6
- throw new Error("Legacy .fig helpers no longer process files locally. Connect Builder and use the design system indexing flow instead.");
6
+ throw new Error("Legacy .fig helpers no longer process files locally. Connect Builder (free tier available) and use the design system indexing flow instead.");
7
7
  }
8
8
  export function looksLikeFigFile(data) {
9
9
  const isZip = data[0] === 0x50 &&
package/dist/cli/agent.js CHANGED
@@ -199,8 +199,8 @@ function buildHeadlessSystemPrompt(actionNames) {
199
199
  return [
200
200
  "You are the app agent for this Agent-Native project.",
201
201
  "Use the registered app actions as your source of truth for doing work.",
202
- "Use docs-search before implementing or answering advanced Agent Native framework questions; it reads the version-matched docs bundled with @agent-native/core.",
203
- "Use source-search when examples or implementation details matter; it reads the version-matched core and template source corpus bundled with @agent-native/core.",
202
+ "Use framework-search first for questions that may span the version-matched docs and source; it supports bounded substring, wildcard, SQL-like, and safe-regex matching.",
203
+ "Use docs-search or source-search for a focused page/file read after framework-search identifies the relevant evidence.",
204
204
  "Use connected GitHub repository tools for repo context when a repository is configured; do not assume a local clone or sandbox exists.",
205
205
  "You are running headlessly from the command line, so reply with the final useful result in plain text.",
206
206
  actionList,
@@ -224,7 +224,49 @@ function cliArgsFromToolArgs(args) {
224
224
  export async function createHeadlessBuiltinActions() {
225
225
  const docsSearch = await import("../scripts/docs/search.js");
226
226
  const sourceSearch = await import("../scripts/docs/source-search.js");
227
+ const frameworkSearch = await import("../scripts/docs/framework-search.js");
227
228
  return {
229
+ "framework-search": {
230
+ readOnly: true,
231
+ tool: {
232
+ description: "Search version-matched Agent Native docs and readable Core, Toolkit, and first-party template source together. Use this first when a docs answer may require implementation evidence; supports substring, glob, SQL-like, and safe regex modes.",
233
+ parameters: {
234
+ type: "object",
235
+ properties: {
236
+ pattern: {
237
+ type: "string",
238
+ description: "Text pattern to search across docs and source.",
239
+ },
240
+ scope: {
241
+ type: "string",
242
+ description: "Search corpus: all, docs, or source (default: all).",
243
+ enum: ["all", "docs", "source"],
244
+ },
245
+ mode: {
246
+ type: "string",
247
+ description: "Match mode: substring, glob, sql-like, or safe regex (default: substring).",
248
+ enum: ["substring", "glob", "sql-like", "regex"],
249
+ },
250
+ path: {
251
+ type: "string",
252
+ description: "Optional glob path filter.",
253
+ },
254
+ limit: {
255
+ type: "string",
256
+ description: "Maximum matching files to return, from 1 to 50.",
257
+ },
258
+ list: {
259
+ type: "string",
260
+ description: 'Set to "true" to list searchable docs and source roots.',
261
+ enum: ["true"],
262
+ },
263
+ },
264
+ },
265
+ },
266
+ run: async (args) => {
267
+ return captureCliOutput(() => frameworkSearch.default(cliArgsFromToolArgs(args)));
268
+ },
269
+ },
228
270
  "docs-search": {
229
271
  readOnly: true,
230
272
  tool: {
@@ -255,7 +297,7 @@ export async function createHeadlessBuiltinActions() {
255
297
  "source-search": {
256
298
  readOnly: true,
257
299
  tool: {
258
- description: "Search and read the packaged Agent Native first-party template corpus under node_modules/@agent-native/core/corpus. Use --list for sections, --query to search template source, and --path to read a file.",
300
+ description: "Search and read readable version-matched Core, Toolkit, and first-party template source. Use framework-search for one combined docs/source search with glob, SQL-like, or regex matching; use --list, --query, or --path for focused source lookup.",
259
301
  parameters: {
260
302
  type: "object",
261
303
  properties: {
@@ -1338,7 +1338,8 @@ Current run mode: ${mode} mode (${permissionMode}).
1338
1338
  # Autonomy and verification
1339
1339
 
1340
1340
  - Stay with the work until the task is handled end to end within this turn whenever feasible. Don't stop at analysis or a proposal — implement the fix, and work through blockers yourself before handing them back. The exception is Plan mode, where you propose only.
1341
- - Done means verified, not generated. After code changes (not docs-only), run the repo's checks before reporting success: \`pnpm run prep\` (format + typecheck + test + guards), or a focused subset like \`pnpm typecheck\` or a single package's tests for a small change. Fix all errors before you call it done.
1341
+ - Done means verified, not generated. Match the check to the change: use the narrowest relevant test, typecheck, formatter, or direct invocation for a localized edit; use \`pnpm run prep\` for shared or cross-cutting changes. Do not restart a dev server or run broad checks as a generic post-edit ritual. Fix failures before you call it done, and keep any repository-required guards or doctor checks that apply.
1342
+ - In an Agent-Native app or workspace, also run \`pnpm agent-native:doctor\` (or \`pnpm doctor\`) after source changes. Treat every finding as a fix-required security issue; do not disable a guard without a reviewer-readable reason.
1342
1343
  - Do not claim a change works, tests pass, or a build succeeds unless you actually ran it and saw the result. If you could not verify something, say exactly what is unverified and why.
1343
1344
 
1344
1345
  # Tools beyond the basics
@@ -131,6 +131,14 @@ declare function communityTemplateTrustMessage(selection: string): string | unde
131
131
  * templates need it.
132
132
  */
133
133
  declare function scaffoldRequiredPackages(templateNames: string[], workspaceRoot: string): Promise<void>;
134
+ /**
135
+ * Keep the portable guard contract attached to every app/workspace created by
136
+ * the CLI, including community templates whose package.json was not authored
137
+ * by this repository. The scanners stay versioned in @agent-native/core; a
138
+ * generated project only receives the small command/config/instructions
139
+ * surface needed to run them locally and in hosted builds.
140
+ */
141
+ declare function ensureGuardedScaffold(appDir: string): void;
134
142
  /**
135
143
  * Post-process a standalone scaffold: replace placeholders, strip
136
144
  * workspace:* deps, set up agent symlinks, etc.
@@ -147,7 +155,7 @@ export declare function detectWorkspace(startDir: string): {
147
155
  } | null;
148
156
  export { parseWorkspaceScope };
149
157
  /** @internal — exported for E2E tests */
150
- export { scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot, scaffoldAppTemplate as _scaffoldAppTemplate, scaffoldRequiredPackages as _scaffoldRequiredPackages, postProcessStandalone as _postProcessStandalone, loadCatalog as _loadCatalog, fixPackageJsonName as _fixPackageJsonName, renameGitignore as _renameGitignore, rewriteNetlifyToml as _rewriteNetlifyToml, getCoreDependencyVersion as _getCoreDependencyVersion, getDispatchDependencyVersion as _getDispatchDependencyVersion, getToolkitDependencyVersion as _getToolkitDependencyVersion, getCorePackageVersion as _getCorePackageVersion, getGitHubTemplateRef as _getGitHubTemplateRef, getGitHubTemplateRefCandidates as _getGitHubTemplateRefCandidates, githubTarballUrl as _githubTarballUrl, findLocalTemplateFrom as _findLocalTemplateFrom, workspaceAppNameForTemplateSelection as _workspaceAppNameForTemplateSelection, startShapePromptOptions as _startShapePromptOptions, standaloneTemplatePromptOptions as _standaloneTemplatePromptOptions, parseCommunityTemplateSelection as _parseCommunityTemplateSelection, communityTemplateTrustMessage as _communityTemplateTrustMessage, communityTemplateTarballUrl as _communityTemplateTarballUrl, assertCommunityTemplateRoot as _assertCommunityTemplateRoot, assertSafeCommunityArchiveListing as _assertSafeCommunityArchiveListing, validateCommunityArchive as _validateCommunityArchive, resolveCommunityTemplateSource as _resolveCommunityTemplateSource, discoverCommunityWorkspaceApps as _discoverCommunityWorkspaceApps, normalizeCommunityWorkspaceAppDependencies as _normalizeCommunityWorkspaceAppDependencies, shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry, tarExtractArgs as _tarExtractArgs, downloadGitHubSubdir as _downloadGitHubSubdir, findLocalTemplate as _findLocalTemplate, templateSourceName as _templateSourceName, normalizeTemplateName as _normalizeTemplateName, appTitleForScaffold as _appTitleForScaffold, replacePlaceholders as _replacePlaceholders, rewriteTrackingAppId as _rewriteTrackingAppId, rewriteAgentChatAppId as _rewriteAgentChatAppId, applyScaffoldIdentity as _applyScaffoldIdentity, fixWebManifestName as _fixWebManifestName, copyDir as _copyDir, localTemplateSourceKind as _localTemplateSourceKind, REPO as _REPO, TEMPLATES_DIR as _TEMPLATES_DIR, };
158
+ export { scaffoldWorkspaceRoot as _scaffoldWorkspaceRoot, ensureGuardedScaffold as _ensureGuardedScaffold, scaffoldAppTemplate as _scaffoldAppTemplate, scaffoldRequiredPackages as _scaffoldRequiredPackages, postProcessStandalone as _postProcessStandalone, loadCatalog as _loadCatalog, fixPackageJsonName as _fixPackageJsonName, renameGitignore as _renameGitignore, rewriteNetlifyToml as _rewriteNetlifyToml, getCoreDependencyVersion as _getCoreDependencyVersion, getDispatchDependencyVersion as _getDispatchDependencyVersion, getToolkitDependencyVersion as _getToolkitDependencyVersion, getCorePackageVersion as _getCorePackageVersion, getGitHubTemplateRef as _getGitHubTemplateRef, getGitHubTemplateRefCandidates as _getGitHubTemplateRefCandidates, githubTarballUrl as _githubTarballUrl, findLocalTemplateFrom as _findLocalTemplateFrom, workspaceAppNameForTemplateSelection as _workspaceAppNameForTemplateSelection, startShapePromptOptions as _startShapePromptOptions, standaloneTemplatePromptOptions as _standaloneTemplatePromptOptions, parseCommunityTemplateSelection as _parseCommunityTemplateSelection, communityTemplateTrustMessage as _communityTemplateTrustMessage, communityTemplateTarballUrl as _communityTemplateTarballUrl, assertCommunityTemplateRoot as _assertCommunityTemplateRoot, assertSafeCommunityArchiveListing as _assertSafeCommunityArchiveListing, validateCommunityArchive as _validateCommunityArchive, resolveCommunityTemplateSource as _resolveCommunityTemplateSource, discoverCommunityWorkspaceApps as _discoverCommunityWorkspaceApps, normalizeCommunityWorkspaceAppDependencies as _normalizeCommunityWorkspaceAppDependencies, shouldSkipScaffoldEntry as _shouldSkipScaffoldEntry, tarExtractArgs as _tarExtractArgs, downloadGitHubSubdir as _downloadGitHubSubdir, findLocalTemplate as _findLocalTemplate, templateSourceName as _templateSourceName, normalizeTemplateName as _normalizeTemplateName, appTitleForScaffold as _appTitleForScaffold, replacePlaceholders as _replacePlaceholders, rewriteTrackingAppId as _rewriteTrackingAppId, rewriteAgentChatAppId as _rewriteAgentChatAppId, applyScaffoldIdentity as _applyScaffoldIdentity, fixWebManifestName as _fixWebManifestName, copyDir as _copyDir, localTemplateSourceKind as _localTemplateSourceKind, REPO as _REPO, TEMPLATES_DIR as _TEMPLATES_DIR, };
151
159
  declare function tarExtractArgs(tarPath: string, destDir: string, options?: {
152
160
  skipAgentSymlinks?: boolean;
153
161
  untrustedCommunityArchive?: boolean;