@agent-native/core 0.152.1 → 0.153.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 (907) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/adding-a-feature/SKILL.md +208 -0
  3. package/corpus/templates/analytics/.agents/skills/context-awareness/SKILL.md +206 -0
  4. package/corpus/templates/analytics/.agents/skills/data-querying/SKILL.md +6 -4
  5. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +73 -80
  6. package/corpus/templates/analytics/.agents/skills/portability/SKILL.md +107 -0
  7. package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +339 -0
  8. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +3 -3
  9. package/corpus/templates/analytics/.agents/skills/shadcn-ui/SKILL.md +1 -1
  10. package/corpus/templates/analytics/.agents/skills/sharing/SKILL.md +1 -0
  11. package/corpus/templates/analytics/.agents/skills/turn-into-app/SKILL.md +116 -44
  12. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  13. package/corpus/templates/analytics/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  14. package/corpus/templates/analytics/.agents/skills/workspace-conventions/SKILL.md +93 -0
  15. package/corpus/templates/analytics/actions/data-source-status.ts +4 -1
  16. package/corpus/templates/analytics/actions/migrate-first-party-analytics-to-bigquery.ts +2 -2
  17. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +7 -2
  18. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +7 -1
  19. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +30 -32
  20. package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +10 -0
  21. package/corpus/templates/analytics/app/global.css +5 -1
  22. package/corpus/templates/analytics/app/lib/data-source-status.ts +3 -3
  23. package/corpus/templates/analytics/app/lib/resource-access.ts +6 -1
  24. package/corpus/templates/analytics/app/pages/DataSources.tsx +79 -51
  25. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +1 -0
  26. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -0
  27. package/corpus/templates/analytics/changelog/2026-08-12-analytics-sidebar-ask-toggle-and-compact-rail.md +6 -0
  28. package/corpus/templates/analytics/changelog/2026-08-12-data-source-statuses-now-distinguish-workspace-access-from-c.md +6 -0
  29. package/corpus/templates/analytics/server/jobs/analytics-bigquery-backfill.ts +559 -147
  30. package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +79 -5
  31. package/corpus/templates/analytics/server/plugins/db.ts +84 -0
  32. package/corpus/templates/assets/.agents/skills/adding-a-feature/SKILL.md +208 -0
  33. package/corpus/templates/assets/.agents/skills/context-awareness/SKILL.md +206 -0
  34. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +73 -80
  35. package/corpus/templates/assets/.agents/skills/portability/SKILL.md +107 -0
  36. package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +339 -0
  37. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +3 -3
  38. package/corpus/templates/assets/.agents/skills/shadcn-ui/SKILL.md +1 -1
  39. package/corpus/templates/assets/.agents/skills/sharing/SKILL.md +1 -0
  40. package/corpus/templates/assets/.agents/skills/turn-into-app/SKILL.md +116 -44
  41. package/corpus/templates/assets/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  42. package/corpus/templates/assets/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  43. package/corpus/templates/assets/.agents/skills/workspace-conventions/SKILL.md +93 -0
  44. package/corpus/templates/assets/app/components/asset/AssetPreviewDialog.tsx +13 -5
  45. package/corpus/templates/assets/app/lib/asset-urls.ts +13 -0
  46. package/corpus/templates/assets/app/routes/asset.$id.tsx +16 -6
  47. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +1 -0
  48. package/corpus/templates/assets/app/routes/library.tsx +336 -78
  49. package/corpus/templates/assets/shared/api.ts +1 -1
  50. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +3 -2
  51. package/corpus/templates/brain/.agents/skills/brain/SKILL.md +8 -6
  52. package/corpus/templates/brain/.agents/skills/context-awareness/SKILL.md +206 -0
  53. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +73 -80
  54. package/corpus/templates/brain/.agents/skills/ingestion-and-connectors/SKILL.md +7 -0
  55. package/corpus/templates/brain/.agents/skills/portability/SKILL.md +107 -0
  56. package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +339 -0
  57. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +3 -3
  58. package/corpus/templates/brain/.agents/skills/shadcn-ui/SKILL.md +1 -1
  59. package/corpus/templates/brain/.agents/skills/sharing/SKILL.md +1 -0
  60. package/corpus/templates/brain/.agents/skills/turn-into-app/SKILL.md +116 -44
  61. package/corpus/templates/brain/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  62. package/corpus/templates/brain/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  63. package/corpus/templates/brain/.agents/skills/workspace-conventions/SKILL.md +93 -0
  64. package/corpus/templates/brain/AGENTS.md +2 -1
  65. package/corpus/templates/brain/actions/ask-brain.ts +19 -16
  66. package/corpus/templates/brain/actions/create-source.ts +11 -2
  67. package/corpus/templates/brain/actions/import-markdown-files.ts +237 -0
  68. package/corpus/templates/brain/actions/resanitize-captures.ts +3 -1
  69. package/corpus/templates/brain/actions/test-slack-connection.ts +12 -3
  70. package/corpus/templates/brain/actions/update-source.ts +10 -1
  71. package/corpus/templates/brain/app/components/brain/Surface.tsx +1 -11
  72. package/corpus/templates/brain/app/i18n-data.ts +111 -0
  73. package/corpus/templates/brain/app/lib/brain.ts +23 -1
  74. package/corpus/templates/brain/app/routes/knowledge.tsx +0 -2
  75. package/corpus/templates/brain/app/routes/ops.tsx +0 -2
  76. package/corpus/templates/brain/app/routes/review.tsx +0 -2
  77. package/corpus/templates/brain/app/routes/search.tsx +0 -2
  78. package/corpus/templates/brain/app/routes/sources.tsx +354 -6
  79. package/corpus/templates/brain/server/lib/brain-response-guard.ts +63 -1
  80. package/corpus/templates/brain/server/lib/brain.ts +9 -6
  81. package/corpus/templates/brain/server/lib/connectors.ts +20 -6
  82. package/corpus/templates/brain/server/lib/search.ts +9 -1
  83. package/corpus/templates/brain/server/lib/source-credentials.ts +95 -57
  84. package/corpus/templates/brain/server/plugins/agent-chat.ts +5 -2
  85. package/corpus/templates/brain/server/plugins/auth.ts +2 -0
  86. package/corpus/templates/calendar/.agents/skills/adding-a-feature/SKILL.md +208 -0
  87. package/corpus/templates/calendar/.agents/skills/context-awareness/SKILL.md +206 -0
  88. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +73 -80
  89. package/corpus/templates/calendar/.agents/skills/portability/SKILL.md +107 -0
  90. package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +339 -0
  91. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +3 -3
  92. package/corpus/templates/calendar/.agents/skills/shadcn-ui/SKILL.md +1 -1
  93. package/corpus/templates/calendar/.agents/skills/sharing/SKILL.md +1 -0
  94. package/corpus/templates/calendar/.agents/skills/turn-into-app/SKILL.md +116 -44
  95. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  96. package/corpus/templates/calendar/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  97. package/corpus/templates/calendar/.agents/skills/workspace-conventions/SKILL.md +93 -0
  98. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +1 -0
  99. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  100. package/corpus/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  101. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  102. package/corpus/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  103. package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  104. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  105. package/corpus/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  106. package/corpus/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  107. package/corpus/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  108. package/corpus/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  109. package/corpus/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  110. package/corpus/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  111. package/corpus/templates/chat/AGENTS.md +4 -5
  112. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +73 -80
  113. package/corpus/templates/clips/.agents/skills/meetings/SKILL.md +1 -1
  114. package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +339 -0
  115. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +3 -3
  116. package/corpus/templates/clips/.agents/skills/shadcn-ui/SKILL.md +1 -1
  117. package/corpus/templates/clips/.agents/skills/turn-into-app/SKILL.md +116 -44
  118. package/corpus/templates/clips/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  119. package/corpus/templates/clips/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  120. package/corpus/templates/clips/.agents/skills/workspace-conventions/SKILL.md +93 -0
  121. package/corpus/templates/clips/actions/add-comment.ts +1 -2
  122. package/corpus/templates/clips/actions/delete-comment.ts +2 -0
  123. package/corpus/templates/clips/actions/get-recording-insights.ts +9 -8
  124. package/corpus/templates/clips/actions/get-recording-player-data.ts +4 -1
  125. package/corpus/templates/clips/actions/react-to-comment.ts +1 -1
  126. package/corpus/templates/clips/actions/react-to-recording.ts +1 -1
  127. package/corpus/templates/clips/actions/reply-to-comment.ts +1 -1
  128. package/corpus/templates/clips/actions/resolve-comment.ts +1 -2
  129. package/corpus/templates/clips/actions/update-comment.ts +1 -1
  130. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +1 -0
  131. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +59 -16
  132. package/corpus/templates/clips/app/components/player/comments-panel.tsx +88 -39
  133. package/corpus/templates/clips/app/components/player/share-dialog.tsx +12 -8
  134. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +3 -1
  135. package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
  136. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -1
  137. package/corpus/templates/clips/app/i18n/en-US.ts +2 -1
  138. package/corpus/templates/clips/app/lib/public-meeting.ts +1 -1
  139. package/corpus/templates/clips/app/lib/thumbnail-capture.ts +71 -0
  140. package/corpus/templates/clips/app/lib/thumbnail-picker-state.ts +93 -0
  141. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +1 -1
  142. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +25 -19
  143. package/corpus/templates/clips/app/routes/share.$shareId.tsx +8 -0
  144. package/corpus/templates/clips/changelog/2026-07-23-meeting-recording-meters-and-dismissed-prompts.md +1 -1
  145. package/corpus/templates/clips/changelog/2026-08-11-clips-asks-to-take-notes-again-when-you-join-an-adhoc-zoom-o.md +6 -0
  146. package/corpus/templates/clips/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  147. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +166 -14
  148. package/corpus/templates/clips/desktop/src-tauri/src/call_activity.rs +146 -0
  149. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
  150. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +2 -122
  151. package/corpus/templates/clips/server/lib/recording-page-access.ts +6 -1
  152. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +5 -0
  153. package/corpus/templates/clips/shared/share-meta.ts +19 -3
  154. package/corpus/templates/content/.agents/skills/adding-a-feature/SKILL.md +208 -0
  155. package/corpus/templates/content/.agents/skills/context-awareness/SKILL.md +206 -0
  156. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +73 -80
  157. package/corpus/templates/content/.agents/skills/portability/SKILL.md +107 -0
  158. package/corpus/templates/content/.agents/skills/secrets/SKILL.md +339 -0
  159. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +3 -3
  160. package/corpus/templates/content/.agents/skills/shadcn-ui/SKILL.md +1 -1
  161. package/corpus/templates/content/.agents/skills/sharing/SKILL.md +1 -0
  162. package/corpus/templates/content/.agents/skills/turn-into-app/SKILL.md +116 -44
  163. package/corpus/templates/content/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  164. package/corpus/templates/content/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  165. package/corpus/templates/content/.agents/skills/workspace-conventions/SKILL.md +93 -0
  166. package/corpus/templates/content/actions/_database-utils.ts +10 -0
  167. package/corpus/templates/content/actions/add-comment.ts +1 -1
  168. package/corpus/templates/content/actions/attach-content-database-source.ts +158 -61
  169. package/corpus/templates/content/actions/create-document.ts +1 -0
  170. package/corpus/templates/content/actions/delete-comment.ts +1 -1
  171. package/corpus/templates/content/actions/get-document.ts +9 -1
  172. package/corpus/templates/content/actions/import-content-source.ts +8 -0
  173. package/corpus/templates/content/actions/list-documents.ts +10 -1
  174. package/corpus/templates/content/actions/update-comment.ts +1 -1
  175. package/corpus/templates/content/actions/update-document.ts +11 -0
  176. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +52 -29
  177. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +13 -8
  178. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +62 -2
  179. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +163 -53
  180. package/corpus/templates/content/app/components/editor/database/TimelineView.tsx +16 -0
  181. package/corpus/templates/content/app/components/editor/database/settings.tsx +22 -13
  182. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +7 -7
  183. package/corpus/templates/content/app/hooks/use-documents.ts +2 -0
  184. package/corpus/templates/content/app/i18n-data.ts +10 -0
  185. package/corpus/templates/content/app/root.tsx +1 -21
  186. package/corpus/templates/content/changelog/2026-08-05-connect-sources-from-add-column.md +6 -0
  187. package/corpus/templates/content/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  188. package/corpus/templates/content/shared/api.ts +7 -1
  189. package/corpus/templates/crm/.agents/skills/actions/SKILL.md +146 -0
  190. package/corpus/templates/crm/.agents/skills/actions/references/action-fields.md +136 -0
  191. package/corpus/templates/crm/.agents/skills/actions/references/examples.md +94 -0
  192. package/corpus/templates/crm/.agents/skills/actions/references/provider-apis.md +95 -0
  193. package/corpus/templates/crm/.agents/skills/adding-a-feature/SKILL.md +208 -0
  194. package/corpus/templates/crm/.agents/skills/context-awareness/SKILL.md +206 -0
  195. package/corpus/templates/crm/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  196. package/corpus/templates/crm/.agents/skills/frontend-design/SKILL.md +296 -0
  197. package/corpus/templates/crm/.agents/skills/frontend-design/references/visual-direction.md +99 -0
  198. package/corpus/templates/crm/.agents/skills/portability/SKILL.md +107 -0
  199. package/corpus/templates/crm/.agents/skills/real-time-sync/SKILL.md +232 -0
  200. package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +339 -0
  201. package/corpus/templates/crm/.agents/skills/security/SKILL.md +324 -0
  202. package/corpus/templates/crm/.agents/skills/self-modifying-code/SKILL.md +123 -0
  203. package/corpus/templates/crm/.agents/skills/shadcn-ui/SKILL.md +123 -0
  204. package/corpus/templates/crm/.agents/skills/sharing/SKILL.md +1 -0
  205. package/corpus/templates/crm/.agents/skills/turn-into-app/SKILL.md +116 -44
  206. package/corpus/templates/crm/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  207. package/corpus/templates/crm/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  208. package/corpus/templates/crm/.agents/skills/workspace-conventions/SKILL.md +93 -0
  209. package/corpus/templates/design/.agents/skills/adding-a-feature/SKILL.md +208 -0
  210. package/corpus/templates/design/.agents/skills/context-awareness/SKILL.md +206 -0
  211. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +73 -80
  212. package/corpus/templates/design/.agents/skills/portability/SKILL.md +107 -0
  213. package/corpus/templates/design/.agents/skills/real-time-sync/SKILL.md +232 -0
  214. package/corpus/templates/design/.agents/skills/secrets/SKILL.md +339 -0
  215. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +3 -3
  216. package/corpus/templates/design/.agents/skills/shadcn-ui/SKILL.md +1 -1
  217. package/corpus/templates/design/.agents/skills/sharing/SKILL.md +1 -0
  218. package/corpus/templates/design/.agents/skills/turn-into-app/SKILL.md +116 -44
  219. package/corpus/templates/design/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  220. package/corpus/templates/design/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  221. package/corpus/templates/design/.agents/skills/workspace-conventions/SKILL.md +93 -0
  222. package/corpus/templates/design/actions/index-design-system-with-builder.ts +16 -2
  223. package/corpus/templates/design/app/components/design-system/ProductionDesignSystemShowcase.tsx +6 -18
  224. package/corpus/templates/design/app/i18n/en-US.ts +1 -1
  225. package/corpus/templates/design/app/i18n-data.ts +40 -0
  226. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +153 -131
  227. package/corpus/templates/design/app/pages/DesignSystems.tsx +7 -61
  228. package/corpus/templates/design/app/pages/Present.tsx +8 -2
  229. package/corpus/templates/design/app/pages/Templates.tsx +1 -0
  230. package/corpus/templates/design/app/pages/design-editor/tool-state.ts +4 -1
  231. package/corpus/templates/design/app/pages/design-editor/types.ts +6 -1
  232. package/corpus/templates/design/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  233. package/corpus/templates/dispatch/.agents/skills/adding-a-feature/SKILL.md +208 -0
  234. package/corpus/templates/dispatch/.agents/skills/context-awareness/SKILL.md +206 -0
  235. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +73 -80
  236. package/corpus/templates/dispatch/.agents/skills/portability/SKILL.md +107 -0
  237. package/corpus/templates/dispatch/.agents/skills/real-time-sync/SKILL.md +232 -0
  238. package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +339 -0
  239. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +3 -3
  240. package/corpus/templates/dispatch/.agents/skills/shadcn-ui/SKILL.md +1 -1
  241. package/corpus/templates/dispatch/.agents/skills/sharing/SKILL.md +1 -0
  242. package/corpus/templates/dispatch/.agents/skills/turn-into-app/SKILL.md +116 -44
  243. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  244. package/corpus/templates/dispatch/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  245. package/corpus/templates/dispatch/.agents/skills/workspace-conventions/SKILL.md +93 -0
  246. package/corpus/templates/dispatch/actions/apply-workspace-connection-setup.ts +97 -15
  247. package/corpus/templates/dispatch/actions/connection-permissions.ts +77 -0
  248. package/corpus/templates/dispatch/actions/delete-workspace-connection.ts +12 -2
  249. package/corpus/templates/dispatch/actions/list-workspace-user-groups.ts +19 -0
  250. package/corpus/templates/dispatch/actions/plan-workspace-connection-setup.ts +9 -2
  251. package/corpus/templates/dispatch/actions/set-workspace-connection-grant.ts +21 -2
  252. package/corpus/templates/dispatch/actions/upsert-workspace-connection.ts +66 -1
  253. package/corpus/templates/dispatch/actions/upsert-workspace-user-group.ts +27 -0
  254. package/corpus/templates/dispatch/app/chat-first-pages.ts +84 -0
  255. package/corpus/templates/dispatch/app/i18n-data.ts +3989 -3527
  256. package/corpus/templates/dispatch/app/routes/integrations.tsx +1568 -685
  257. package/corpus/templates/dispatch/app/routes/settings.tsx +14 -9
  258. package/corpus/templates/dispatch/changelog/2026-08-12-search-and-pin-workspace-apps-from-the-app-catalog.md +6 -0
  259. package/corpus/templates/dispatch/changelog/2026-08-12-workspace-integration-access-now-shows-exactly-which-apps-ca.md +6 -0
  260. package/corpus/templates/dispatch/server/lib/app-roles.ts +5 -0
  261. package/corpus/templates/dispatch/shared/app-roles.ts +1 -0
  262. package/corpus/templates/factory/.agents/skills/adding-a-feature/SKILL.md +3 -2
  263. package/corpus/templates/factory/.agents/skills/context-awareness/SKILL.md +206 -0
  264. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +73 -80
  265. package/corpus/templates/factory/.agents/skills/portability/SKILL.md +107 -0
  266. package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +339 -0
  267. package/corpus/templates/factory/.agents/skills/self-modifying-code/SKILL.md +3 -3
  268. package/corpus/templates/factory/.agents/skills/shadcn-ui/SKILL.md +1 -1
  269. package/corpus/templates/factory/.agents/skills/sharing/SKILL.md +1 -0
  270. package/corpus/templates/factory/.agents/skills/turn-into-app/SKILL.md +116 -44
  271. package/corpus/templates/factory/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  272. package/corpus/templates/factory/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  273. package/corpus/templates/factory/.agents/skills/workspace-conventions/SKILL.md +93 -0
  274. package/corpus/templates/factory/AGENTS.md +10 -1
  275. package/corpus/templates/factory/README.md +18 -7
  276. package/corpus/templates/factory/actions/list-triage-items.ts +10 -4
  277. package/corpus/templates/factory/actions/poll-github-sources.ts +53 -14
  278. package/corpus/templates/factory/actions/poll-sentry-errors.ts +31 -13
  279. package/corpus/templates/factory/actions/poll-slack-channel.ts +41 -5
  280. package/corpus/templates/factory/actions/provider-api-catalog.ts +13 -0
  281. package/corpus/templates/factory/actions/provider-api-docs.ts +11 -0
  282. package/corpus/templates/factory/actions/provider-api-request.ts +17 -0
  283. package/corpus/templates/factory/actions/save-triage-config.ts +87 -38
  284. package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +14 -12
  285. package/corpus/templates/factory/app/components/factory/FactoryCanvas.tsx +60 -77
  286. package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +66 -125
  287. package/corpus/templates/factory/app/components/layout/Header.tsx +1 -0
  288. package/corpus/templates/factory/app/components/layout/Layout.tsx +8 -3
  289. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +9 -5
  290. package/corpus/templates/factory/app/components/ui/input.tsx +15 -1
  291. package/corpus/templates/factory/app/components/ui/popover.tsx +1 -0
  292. package/corpus/templates/factory/app/components/ui/switch.tsx +1 -0
  293. package/corpus/templates/factory/app/components/ui/textarea.tsx +20 -1
  294. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +5 -3
  295. package/corpus/templates/factory/app/i18n/en-US.ts +17 -0
  296. package/corpus/templates/factory/app/routes/_index.tsx +5 -87
  297. package/corpus/templates/factory/app/routes/chat.$threadId.tsx +1 -1
  298. package/corpus/templates/factory/app/routes/chat.tsx +91 -0
  299. package/corpus/templates/factory/app/routes/factory.tsx +554 -427
  300. package/corpus/templates/factory/app/routes/settings.tsx +1 -1
  301. package/corpus/templates/factory/server/connectors/credentials.ts +25 -0
  302. package/corpus/templates/factory/server/lib/provider-api.ts +34 -0
  303. package/corpus/templates/factory/server/plugins/agent-chat.ts +15 -3
  304. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +96 -24
  305. package/corpus/templates/factory/server/triage/review-state.ts +33 -0
  306. package/corpus/templates/factory/server/triage/slack-poller.ts +1 -0
  307. package/corpus/templates/forms/.agents/skills/adding-a-feature/SKILL.md +208 -0
  308. package/corpus/templates/forms/.agents/skills/context-awareness/SKILL.md +206 -0
  309. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +73 -80
  310. package/corpus/templates/forms/.agents/skills/portability/SKILL.md +107 -0
  311. package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +339 -0
  312. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +3 -3
  313. package/corpus/templates/forms/.agents/skills/shadcn-ui/SKILL.md +1 -1
  314. package/corpus/templates/forms/.agents/skills/sharing/SKILL.md +1 -0
  315. package/corpus/templates/forms/.agents/skills/turn-into-app/SKILL.md +116 -44
  316. package/corpus/templates/forms/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  317. package/corpus/templates/forms/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  318. package/corpus/templates/forms/.agents/skills/workspace-conventions/SKILL.md +93 -0
  319. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +1 -0
  320. package/corpus/templates/forms/shared/types.ts +1 -1
  321. package/corpus/templates/macros/.agents/skills/adding-a-feature/SKILL.md +208 -0
  322. package/corpus/templates/macros/.agents/skills/context-awareness/SKILL.md +206 -0
  323. package/corpus/templates/macros/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  324. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +73 -80
  325. package/corpus/templates/macros/.agents/skills/portability/SKILL.md +107 -0
  326. package/corpus/templates/macros/.agents/skills/real-time-sync/SKILL.md +232 -0
  327. package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +339 -0
  328. package/corpus/templates/macros/.agents/skills/self-modifying-code/SKILL.md +123 -0
  329. package/corpus/templates/macros/.agents/skills/shadcn-ui/SKILL.md +1 -1
  330. package/corpus/templates/macros/.agents/skills/sharing/SKILL.md +1 -0
  331. package/corpus/templates/macros/.agents/skills/turn-into-app/SKILL.md +116 -44
  332. package/corpus/templates/macros/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  333. package/corpus/templates/macros/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  334. package/corpus/templates/macros/.agents/skills/workspace-conventions/SKILL.md +93 -0
  335. package/corpus/templates/mail/.agents/skills/adding-a-feature/SKILL.md +208 -0
  336. package/corpus/templates/mail/.agents/skills/context-awareness/SKILL.md +206 -0
  337. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +73 -80
  338. package/corpus/templates/mail/.agents/skills/portability/SKILL.md +107 -0
  339. package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +339 -0
  340. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +3 -3
  341. package/corpus/templates/mail/.agents/skills/shadcn-ui/SKILL.md +1 -1
  342. package/corpus/templates/mail/.agents/skills/sharing/SKILL.md +1 -0
  343. package/corpus/templates/mail/.agents/skills/turn-into-app/SKILL.md +116 -44
  344. package/corpus/templates/mail/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  345. package/corpus/templates/mail/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  346. package/corpus/templates/mail/.agents/skills/workspace-conventions/SKILL.md +93 -0
  347. package/corpus/templates/mail/actions/send-email.ts +9 -0
  348. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +4 -4
  349. package/corpus/templates/mail/changelog/2026-08-12-agent-sent-messages-appear-immediately.md +6 -0
  350. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +3 -2
  351. package/corpus/templates/plan/.agents/skills/context-awareness/SKILL.md +206 -0
  352. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +73 -80
  353. package/corpus/templates/plan/.agents/skills/portability/SKILL.md +107 -0
  354. package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +339 -0
  355. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +3 -3
  356. package/corpus/templates/plan/.agents/skills/shadcn-ui/SKILL.md +1 -1
  357. package/corpus/templates/plan/.agents/skills/sharing/SKILL.md +1 -0
  358. package/corpus/templates/plan/.agents/skills/turn-into-app/SKILL.md +116 -44
  359. package/corpus/templates/plan/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  360. package/corpus/templates/plan/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  361. package/corpus/templates/plan/.agents/skills/workspace-conventions/SKILL.md +93 -0
  362. package/corpus/templates/plan/actions/delete-plan-comment.ts +6 -0
  363. package/corpus/templates/plan/actions/reply-to-plan-comment.ts +7 -1
  364. package/corpus/templates/plan/actions/resolve-plan-comment.ts +7 -1
  365. package/corpus/templates/plan/actions/update-visual-plan.ts +6 -0
  366. package/corpus/templates/plan/app/hooks/use-plans.ts +1 -1
  367. package/corpus/templates/plan/app/pages/PlansPage.tsx +51 -23
  368. package/corpus/templates/plan/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  369. package/corpus/templates/plan/server/plans.ts +2 -2
  370. package/corpus/templates/plan/shared/types.ts +1 -1
  371. package/corpus/templates/slides/.agents/skills/adding-a-feature/SKILL.md +208 -0
  372. package/corpus/templates/slides/.agents/skills/context-awareness/SKILL.md +206 -0
  373. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +6 -0
  374. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +73 -80
  375. package/corpus/templates/slides/.agents/skills/portability/SKILL.md +107 -0
  376. package/corpus/templates/slides/.agents/skills/real-time-sync/SKILL.md +232 -0
  377. package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +339 -0
  378. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +3 -3
  379. package/corpus/templates/slides/.agents/skills/shadcn-ui/SKILL.md +1 -1
  380. package/corpus/templates/slides/.agents/skills/sharing/SKILL.md +1 -0
  381. package/corpus/templates/slides/.agents/skills/turn-into-app/SKILL.md +116 -44
  382. package/corpus/templates/slides/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  383. package/corpus/templates/slides/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  384. package/corpus/templates/slides/.agents/skills/workspace-conventions/SKILL.md +93 -0
  385. package/corpus/templates/slides/AGENTS.md +4 -0
  386. package/corpus/templates/slides/actions/add-slide-comment.ts +1 -1
  387. package/corpus/templates/slides/actions/delete-slide-comment.ts +1 -1
  388. package/corpus/templates/slides/actions/get-layout-overflows.ts +67 -2
  389. package/corpus/templates/slides/actions/update-slide-comment.ts +1 -1
  390. package/corpus/templates/slides/actions/view-screen.ts +76 -26
  391. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +30 -8
  392. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -1
  393. package/corpus/templates/slides/app/components/editor/AlignmentGuides.tsx +75 -0
  394. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +80 -80
  395. package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +125 -10
  396. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +244 -9
  397. package/corpus/templates/slides/app/components/editor/SlideOverflowWarning.tsx +1 -1
  398. package/corpus/templates/slides/app/components/editor/canvas-interactions/slides-canvas-adapter.ts +3 -3
  399. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +218 -0
  400. package/corpus/templates/slides/app/context/DeckContext.tsx +56 -30
  401. package/corpus/templates/slides/app/hooks/use-deck-role.ts +13 -5
  402. package/corpus/templates/slides/app/hooks/use-design-systems.ts +1 -1
  403. package/corpus/templates/slides/app/i18n/en-US.ts +6 -2
  404. package/corpus/templates/slides/app/lib/create-deck-generation.ts +1 -0
  405. package/corpus/templates/slides/app/lib/pending-deck-changes.ts +32 -0
  406. package/corpus/templates/slides/app/pages/DeckEditor.tsx +85 -4
  407. package/corpus/templates/slides/app/pages/Index.tsx +65 -66
  408. package/corpus/templates/slides/changelog/2026-08-12-viewers-are-read-only-and-commenters-can-comment.md +6 -0
  409. package/corpus/templates/tasks/.agents/skills/adding-a-feature/SKILL.md +3 -2
  410. package/corpus/templates/tasks/.agents/skills/context-awareness/SKILL.md +206 -0
  411. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +73 -80
  412. package/corpus/templates/tasks/.agents/skills/portability/SKILL.md +107 -0
  413. package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +339 -0
  414. package/corpus/templates/tasks/.agents/skills/self-modifying-code/SKILL.md +3 -3
  415. package/corpus/templates/tasks/.agents/skills/shadcn-ui/SKILL.md +1 -1
  416. package/corpus/templates/tasks/.agents/skills/sharing/SKILL.md +1 -0
  417. package/corpus/templates/tasks/.agents/skills/turn-into-app/SKILL.md +116 -44
  418. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  419. package/corpus/templates/tasks/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  420. package/corpus/templates/tasks/.agents/skills/workspace-conventions/SKILL.md +93 -0
  421. package/corpus/templates/tasks/app/components/custom-fields/FieldsPage.tsx +1 -4
  422. package/corpus/templates/tasks/app/components/inbox/InboxList.tsx +0 -1
  423. package/corpus/templates/tasks/app/components/inbox/InboxListPage.tsx +0 -1
  424. package/corpus/templates/tasks/app/components/shared/ListViewHeader.tsx +0 -3
  425. package/corpus/templates/tasks/app/components/shared/PageHeader.tsx +1 -4
  426. package/corpus/templates/tasks/app/components/tasks/TaskList.tsx +0 -1
  427. package/corpus/templates/tasks/app/components/tasks/TaskListPage.tsx +0 -1
  428. package/dist/agent/engine/ai-sdk-engine.js +5 -0
  429. package/dist/agent/engine/anthropic-engine.js +8 -0
  430. package/dist/agent/engine/registry.js +24 -19
  431. package/dist/agent/engine/translate-anthropic.js +16 -1
  432. package/dist/automations/service.d.ts +2 -0
  433. package/dist/automations/service.js +5 -1
  434. package/dist/chat-threads/schema.d.ts +2 -2
  435. package/dist/cli/changelog.js +21 -4
  436. package/dist/cli/create.d.ts +12 -1
  437. package/dist/cli/create.js +99 -11
  438. package/dist/cli/index.js +6 -6
  439. package/dist/cli/process.d.ts +7 -0
  440. package/dist/cli/process.js +12 -0
  441. package/dist/cli/workspace-skill-policy.d.ts +15 -0
  442. package/dist/cli/workspace-skill-policy.js +62 -0
  443. package/dist/cli/workspacify.js +36 -0
  444. package/dist/client/AgentPanel.d.ts +14 -2
  445. package/dist/client/AgentPanel.js +40 -24
  446. package/dist/client/AssistantChat.js +90 -182
  447. package/dist/client/FeedbackButton.js +15 -2
  448. package/dist/client/RouteTransitionIndicator.d.ts +14 -2
  449. package/dist/client/RouteTransitionIndicator.js +16 -5
  450. package/dist/client/agent-page/AgentTabsPage.js +19 -6
  451. package/dist/client/app-config.d.ts +3 -0
  452. package/dist/client/app-config.js +6 -0
  453. package/dist/client/app-providers.js +2 -1
  454. package/dist/client/changelog/Changelog.d.ts +2 -1
  455. package/dist/client/changelog/Changelog.js +7 -5
  456. package/dist/client/chat/markdown-renderer.d.ts +3 -1
  457. package/dist/client/chat/markdown-renderer.js +24 -24
  458. package/dist/client/chat/message-components.d.ts +23 -0
  459. package/dist/client/chat/message-components.js +27 -44
  460. package/dist/client/chat/tool-call-display.d.ts +2 -2
  461. package/dist/client/chat/tool-call-display.js +6 -3
  462. package/dist/client/chat-first/app-open-actions.d.ts +28 -0
  463. package/dist/client/chat-first/app-open-actions.js +25 -0
  464. package/dist/client/chat-first/index.d.ts +1 -0
  465. package/dist/client/chat-first/index.js +1 -0
  466. package/dist/client/chat-first/primary-nav.d.ts +2 -1
  467. package/dist/client/chat-first/primary-nav.js +12 -5
  468. package/dist/client/conversation/use-near-bottom-autoscroll.d.ts +14 -0
  469. package/dist/client/conversation/use-near-bottom-autoscroll.js +14 -0
  470. package/dist/client/error-format.js +32 -3
  471. package/dist/client/extensions/EmbeddedExtension.js +1 -0
  472. package/dist/client/extensions/ExtensionViewer.js +3 -1
  473. package/dist/client/extensions/InlineExtensionFrame.js +1 -0
  474. package/dist/client/extensions/iframe-bridge.d.ts +3 -2
  475. package/dist/client/extensions/iframe-bridge.js +4 -2
  476. package/dist/client/i18n.js +28 -5
  477. package/dist/client/integrations/IntegrationConnectionChoice.d.ts +11 -0
  478. package/dist/client/integrations/IntegrationConnectionChoice.js +6 -0
  479. package/dist/client/integrations/IntegrationGrid.d.ts +23 -0
  480. package/dist/client/integrations/IntegrationGrid.js +12 -0
  481. package/dist/client/integrations/IntegrationsPanel.js +92 -26
  482. package/dist/client/integrations/index.d.ts +2 -0
  483. package/dist/client/integrations/index.js +2 -0
  484. package/dist/client/onboarding/FirstRunOnboarding.d.ts +3 -1
  485. package/dist/client/onboarding/FirstRunOnboarding.js +26 -16
  486. package/dist/client/onboarding/first-run-enabled.js +1 -5
  487. package/dist/client/onboarding/first-run-startup-gate.d.ts +5 -0
  488. package/dist/client/onboarding/first-run-startup-gate.js +51 -0
  489. package/dist/client/onboarding/first-run-status.d.ts +7 -0
  490. package/dist/client/onboarding/first-run-status.js +26 -0
  491. package/dist/client/onboarding/index.d.ts +3 -0
  492. package/dist/client/onboarding/index.js +3 -0
  493. package/dist/client/onboarding/use-onboarding.d.ts +1 -0
  494. package/dist/client/onboarding/use-onboarding.js +13 -11
  495. package/dist/client/org/TeamPage.js +174 -28
  496. package/dist/client/resources/McpConnectionSuggestion.js +29 -72
  497. package/dist/client/resources/McpIntegrationDialog.d.ts +3 -1
  498. package/dist/client/resources/McpIntegrationDialog.js +176 -51
  499. package/dist/client/resources/index.d.ts +1 -0
  500. package/dist/client/resources/index.js +1 -0
  501. package/dist/client/resources/mcp-integration-catalog.d.ts +8 -0
  502. package/dist/client/resources/mcp-integration-catalog.js +28 -0
  503. package/dist/client/settings/ExtensionsSettingsContent.js +2 -2
  504. package/dist/client/settings/SettingsPanel.d.ts +6 -0
  505. package/dist/client/settings/SettingsPanel.js +21 -8
  506. package/dist/client/settings/SettingsRow.d.ts +3 -1
  507. package/dist/client/settings/SettingsRow.js +4 -2
  508. package/dist/client/settings/SettingsSkeleton.js +5 -3
  509. package/dist/client/settings/SettingsTabsPage.js +2 -2
  510. package/dist/client/settings/UsageSection.d.ts +4 -1
  511. package/dist/client/settings/UsageSection.js +187 -93
  512. package/dist/client/settings/agent-settings-search.js +6 -2
  513. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +1 -1
  514. package/dist/client/setup-connections/useBuilderConnectCardController.js +2 -2
  515. package/dist/client/sharing/ShareButton.d.ts +2 -0
  516. package/dist/client/sharing/ShareButton.js +9 -2
  517. package/dist/client/sharing/ShareDialog.js +4 -1
  518. package/dist/client/sharing/useShareButtonController.d.ts +2 -1
  519. package/dist/client/sharing/useShareButtonController.js +8 -0
  520. package/dist/client/sharing/useShareDialogController.d.ts +1 -1
  521. package/dist/client/sharing/useShareDialogController.js +2 -1
  522. package/dist/collab/struct-routes.d.ts +1 -1
  523. package/dist/config.d.ts +13 -0
  524. package/dist/config.js +53 -0
  525. package/dist/dashboard-storage/schema.d.ts +2 -2
  526. package/dist/data-programs/schema.d.ts +2 -2
  527. package/dist/extensions/actions.js +2 -1
  528. package/dist/extensions/html-shell.d.ts +2 -2
  529. package/dist/extensions/routes.js +4 -1
  530. package/dist/extensions/schema.d.ts +2 -2
  531. package/dist/file-upload/pre-upload-attachments.js +1 -1
  532. package/dist/framework-tools.js +3 -0
  533. package/dist/history/types.d.ts +1 -1
  534. package/dist/index.d.ts +2 -1
  535. package/dist/index.js +2 -1
  536. package/dist/jobs/background-automation-runner.d.ts +1 -0
  537. package/dist/jobs/background-automation-runner.js +4 -2
  538. package/dist/jobs/frontmatter.d.ts +4 -0
  539. package/dist/jobs/frontmatter.js +16 -0
  540. package/dist/jobs/run-history.js +1 -1
  541. package/dist/jobs/tools.js +9 -5
  542. package/dist/localization/default-messages.d.ts +27 -0
  543. package/dist/localization/default-messages.js +28 -1
  544. package/dist/notifications/routes.d.ts +5 -5
  545. package/dist/observability/routes.d.ts +3 -3
  546. package/dist/onboarding/plugin.js +17 -2
  547. package/dist/org/context.js +16 -0
  548. package/dist/provider-api/actions/custom-provider-registration.d.ts +12 -12
  549. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  550. package/dist/review/actions/create-review-comment.js +1 -1
  551. package/dist/review/actions/delete-review-comment.js +4 -1
  552. package/dist/review/actions/list-review-comments.js +4 -2
  553. package/dist/review/actions/reply-review-comment.js +1 -1
  554. package/dist/review/types.d.ts +1 -1
  555. package/dist/secrets/routes.d.ts +9 -9
  556. package/dist/server/action-discovery.js +29 -0
  557. package/dist/server/agent-chat/plugin-options.d.ts +7 -0
  558. package/dist/server/agent-chat-plugin.d.ts +2 -0
  559. package/dist/server/agent-chat-plugin.js +12 -4
  560. package/dist/server/builder-browser.js +31 -0
  561. package/dist/server/onboarding-html.js +1 -1
  562. package/dist/server/transcribe-voice.d.ts +1 -1
  563. package/dist/server/workspace-provider-oauth.js +38 -26
  564. package/dist/setup-connections/index.d.ts +1 -1
  565. package/dist/setup-connections/index.js +1 -1
  566. package/dist/shared/first-run-onboarding.d.ts +6 -0
  567. package/dist/shared/first-run-onboarding.js +6 -0
  568. package/dist/sharing/access.d.ts +1 -1
  569. package/dist/sharing/access.js +4 -1
  570. package/dist/sharing/actions/share-resource.d.ts +1 -1
  571. package/dist/sharing/actions/share-resource.js +2 -2
  572. package/dist/sharing/registry.d.ts +2 -2
  573. package/dist/sharing/schema.d.ts +5 -5
  574. package/dist/sharing/schema.js +9 -6
  575. package/dist/styles/agent-native.css +21 -0
  576. package/dist/styles/chat-history-list.css +1 -1
  577. package/dist/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  578. package/dist/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  579. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  580. package/dist/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  581. package/dist/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  582. package/dist/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  583. package/dist/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  584. package/dist/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  585. package/dist/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  586. package/dist/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  587. package/dist/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  588. package/dist/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  589. package/dist/templates/chat/AGENTS.md +4 -5
  590. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
  591. package/dist/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
  592. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
  593. package/dist/templates/default/.agents/skills/portability/SKILL.md +107 -0
  594. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
  595. package/dist/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
  596. package/dist/templates/default/.agents/skills/sharing/SKILL.md +233 -0
  597. package/dist/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
  598. package/dist/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  599. package/dist/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  600. package/dist/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
  601. package/dist/templates/default/AGENTS.md +17 -2
  602. package/dist/templates/default/agent-native.config.ts +6 -0
  603. package/dist/templates/default/app/i18n/ar-SA.ts +2 -0
  604. package/dist/templates/default/app/i18n/de-DE.ts +2 -0
  605. package/dist/templates/default/app/i18n/en-US.ts +3 -1
  606. package/dist/templates/default/app/i18n/es-ES.ts +2 -0
  607. package/dist/templates/default/app/i18n/fr-FR.ts +2 -0
  608. package/dist/templates/default/app/i18n/hi-IN.ts +2 -0
  609. package/dist/templates/default/app/i18n/ja-JP.ts +2 -0
  610. package/dist/templates/default/app/i18n/ko-KR.ts +2 -0
  611. package/dist/templates/default/app/i18n/pt-BR.ts +2 -0
  612. package/dist/templates/default/app/i18n/zh-CN.ts +2 -0
  613. package/dist/templates/default/app/i18n/zh-TW.ts +2 -0
  614. package/dist/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  615. package/dist/templates/headless/.agents/skills/security/SKILL.md +324 -0
  616. package/dist/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
  617. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
  618. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
  619. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
  620. package/dist/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
  621. package/dist/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
  622. package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
  623. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  624. package/dist/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  625. package/dist/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
  626. package/dist/templates/workspace-core/AGENTS.md +9 -3
  627. package/dist/templates/workspace-root/AGENTS.md +26 -1
  628. package/dist/templates/workspace-root/agent-native.config.ts +8 -0
  629. package/dist/triggers/actions.js +2 -2
  630. package/dist/usage/actions/get-usage-alerts.d.ts +5 -0
  631. package/dist/usage/actions/get-usage-alerts.js +16 -0
  632. package/dist/usage/actions/get-usage-metrics.d.ts +7 -0
  633. package/dist/usage/actions/get-usage-metrics.js +26 -0
  634. package/dist/usage/actions/manage-usage-alert.d.ts +14 -0
  635. package/dist/usage/actions/manage-usage-alert.js +48 -0
  636. package/dist/usage/alerts-store.d.ts +78 -0
  637. package/dist/usage/alerts-store.js +592 -0
  638. package/dist/usage/metrics-store.d.ts +95 -0
  639. package/dist/usage/metrics-store.js +386 -0
  640. package/dist/usage/store.js +10 -0
  641. package/dist/vite/action-types-plugin.js +28 -0
  642. package/dist/vite/agent-native-config-loader.d.ts +6 -0
  643. package/dist/vite/agent-native-config-loader.js +54 -2
  644. package/dist/vite/client.js +11 -5
  645. package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.d.ts +6 -0
  646. package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.js +24 -0
  647. package/dist/workspace-connections/actions/delete-workspace-user-group.d.ts +7 -0
  648. package/dist/workspace-connections/actions/delete-workspace-user-group.js +29 -0
  649. package/dist/workspace-connections/actions/list-workspace-user-groups.d.ts +2 -0
  650. package/dist/workspace-connections/actions/list-workspace-user-groups.js +13 -0
  651. package/dist/workspace-connections/actions/upsert-workspace-user-group.d.ts +6 -0
  652. package/dist/workspace-connections/actions/upsert-workspace-user-group.js +22 -0
  653. package/dist/workspace-connections/credential-key-aliases.d.ts +3 -0
  654. package/dist/workspace-connections/credential-key-aliases.js +31 -0
  655. package/dist/workspace-connections/credentials.js +1 -25
  656. package/dist/workspace-connections/groups.d.ts +32 -0
  657. package/dist/workspace-connections/groups.js +288 -0
  658. package/dist/workspace-connections/index.d.ts +3 -1
  659. package/dist/workspace-connections/index.js +3 -1
  660. package/dist/workspace-connections/store.d.ts +9 -0
  661. package/dist/workspace-connections/store.js +68 -8
  662. package/docs/content/components.mdx +2 -2
  663. package/docs/content/sharing.mdx +2 -1
  664. package/package.json +10 -2
  665. package/src/templates/chat/.agents/skills/adding-a-feature/SKILL.md +3 -2
  666. package/src/templates/chat/.agents/skills/context-awareness/SKILL.md +206 -0
  667. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +73 -80
  668. package/src/templates/chat/.agents/skills/portability/SKILL.md +107 -0
  669. package/src/templates/chat/.agents/skills/secrets/SKILL.md +339 -0
  670. package/src/templates/chat/.agents/skills/self-modifying-code/SKILL.md +3 -3
  671. package/src/templates/chat/.agents/skills/shadcn-ui/SKILL.md +1 -1
  672. package/src/templates/chat/.agents/skills/sharing/SKILL.md +1 -0
  673. package/src/templates/chat/.agents/skills/turn-into-app/SKILL.md +116 -44
  674. package/src/templates/chat/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  675. package/src/templates/chat/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  676. package/src/templates/chat/.agents/skills/workspace-conventions/SKILL.md +93 -0
  677. package/src/templates/chat/AGENTS.md +4 -5
  678. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +3 -2
  679. package/src/templates/default/.agents/skills/context-awareness/SKILL.md +206 -0
  680. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +73 -80
  681. package/src/templates/default/.agents/skills/portability/SKILL.md +107 -0
  682. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +3 -3
  683. package/src/templates/default/.agents/skills/shadcn-ui/SKILL.md +1 -1
  684. package/src/templates/default/.agents/skills/sharing/SKILL.md +233 -0
  685. package/src/templates/default/.agents/skills/turn-into-app/SKILL.md +116 -44
  686. package/src/templates/default/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  687. package/src/templates/default/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  688. package/src/templates/default/.agents/skills/workspace-conventions/SKILL.md +93 -0
  689. package/src/templates/default/AGENTS.md +17 -2
  690. package/src/templates/default/agent-native.config.ts +6 -0
  691. package/src/templates/default/app/i18n/ar-SA.ts +2 -0
  692. package/src/templates/default/app/i18n/de-DE.ts +2 -0
  693. package/src/templates/default/app/i18n/en-US.ts +3 -1
  694. package/src/templates/default/app/i18n/es-ES.ts +2 -0
  695. package/src/templates/default/app/i18n/fr-FR.ts +2 -0
  696. package/src/templates/default/app/i18n/hi-IN.ts +2 -0
  697. package/src/templates/default/app/i18n/ja-JP.ts +2 -0
  698. package/src/templates/default/app/i18n/ko-KR.ts +2 -0
  699. package/src/templates/default/app/i18n/pt-BR.ts +2 -0
  700. package/src/templates/default/app/i18n/zh-CN.ts +2 -0
  701. package/src/templates/default/app/i18n/zh-TW.ts +2 -0
  702. package/src/templates/headless/.agents/skills/delegate-to-agent/SKILL.md +289 -0
  703. package/src/templates/headless/.agents/skills/security/SKILL.md +324 -0
  704. package/src/templates/headless/.agents/skills/storing-data/SKILL.md +178 -0
  705. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +3 -2
  706. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +73 -80
  707. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +3 -3
  708. package/src/templates/workspace-core/.agents/skills/shadcn-ui/SKILL.md +1 -1
  709. package/src/templates/workspace-core/.agents/skills/sharing/SKILL.md +1 -0
  710. package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +116 -44
  711. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/fresh-project.md +9 -3
  712. package/src/templates/workspace-core/.agents/skills/turn-into-app/references/spreadsheet-source.md +148 -0
  713. package/src/templates/workspace-core/.agents/skills/workspace-conventions/SKILL.md +3 -2
  714. package/src/templates/workspace-core/AGENTS.md +9 -3
  715. package/src/templates/workspace-root/AGENTS.md +26 -1
  716. package/src/templates/workspace-root/agent-native.config.ts +8 -0
  717. package/corpus/templates/analytics/.agents/skills/capture-learnings/SKILL.md +0 -89
  718. package/corpus/templates/analytics/.agents/skills/create-skill/SKILL.md +0 -195
  719. package/corpus/templates/analytics/.agents/skills/feature-flags/SKILL.md +0 -169
  720. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  721. package/corpus/templates/assets/.agents/skills/capture-learnings/SKILL.md +0 -89
  722. package/corpus/templates/assets/.agents/skills/create-skill/SKILL.md +0 -195
  723. package/corpus/templates/assets/.agents/skills/feature-flags/SKILL.md +0 -169
  724. package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +0 -392
  725. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  726. package/corpus/templates/brain/.agents/skills/capture-learnings/SKILL.md +0 -89
  727. package/corpus/templates/brain/.agents/skills/create-skill/SKILL.md +0 -195
  728. package/corpus/templates/brain/.agents/skills/feature-flags/SKILL.md +0 -169
  729. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  730. package/corpus/templates/calendar/.agents/skills/capture-learnings/SKILL.md +0 -89
  731. package/corpus/templates/calendar/.agents/skills/create-skill/SKILL.md +0 -195
  732. package/corpus/templates/calendar/.agents/skills/feature-flags/SKILL.md +0 -169
  733. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  734. package/corpus/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  735. package/corpus/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  736. package/corpus/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  737. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  738. package/corpus/templates/clips/.agents/skills/capture-learnings/SKILL.md +0 -89
  739. package/corpus/templates/clips/.agents/skills/create-skill/SKILL.md +0 -195
  740. package/corpus/templates/clips/.agents/skills/feature-flags/SKILL.md +0 -169
  741. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  742. package/corpus/templates/content/.agents/skills/capture-learnings/SKILL.md +0 -89
  743. package/corpus/templates/content/.agents/skills/create-skill/SKILL.md +0 -195
  744. package/corpus/templates/content/.agents/skills/feature-flags/SKILL.md +0 -169
  745. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  746. package/corpus/templates/crm/.agents/skills/feature-flags/SKILL.md +0 -169
  747. package/corpus/templates/crm/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  748. package/corpus/templates/design/.agents/skills/capture-learnings/SKILL.md +0 -89
  749. package/corpus/templates/design/.agents/skills/create-skill/SKILL.md +0 -195
  750. package/corpus/templates/design/.agents/skills/feature-flags/SKILL.md +0 -169
  751. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  752. package/corpus/templates/dispatch/.agents/skills/capture-learnings/SKILL.md +0 -89
  753. package/corpus/templates/dispatch/.agents/skills/create-skill/SKILL.md +0 -195
  754. package/corpus/templates/dispatch/.agents/skills/feature-flags/SKILL.md +0 -169
  755. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  756. package/corpus/templates/factory/.agents/skills/capture-learnings/SKILL.md +0 -89
  757. package/corpus/templates/factory/.agents/skills/create-skill/SKILL.md +0 -195
  758. package/corpus/templates/factory/.agents/skills/feature-flags/SKILL.md +0 -169
  759. package/corpus/templates/factory/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  760. package/corpus/templates/forms/.agents/skills/capture-learnings/SKILL.md +0 -89
  761. package/corpus/templates/forms/.agents/skills/create-skill/SKILL.md +0 -195
  762. package/corpus/templates/forms/.agents/skills/feature-flags/SKILL.md +0 -169
  763. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  764. package/corpus/templates/macros/.agents/skills/feature-flags/SKILL.md +0 -169
  765. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  766. package/corpus/templates/mail/.agents/skills/capture-learnings/SKILL.md +0 -89
  767. package/corpus/templates/mail/.agents/skills/create-skill/SKILL.md +0 -195
  768. package/corpus/templates/mail/.agents/skills/feature-flags/SKILL.md +0 -169
  769. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  770. package/corpus/templates/plan/.agents/skills/capture-learnings/SKILL.md +0 -89
  771. package/corpus/templates/plan/.agents/skills/create-skill/SKILL.md +0 -195
  772. package/corpus/templates/plan/.agents/skills/feature-flags/SKILL.md +0 -169
  773. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  774. package/corpus/templates/slides/.agents/skills/capture-learnings/SKILL.md +0 -89
  775. package/corpus/templates/slides/.agents/skills/create-skill/SKILL.md +0 -195
  776. package/corpus/templates/slides/.agents/skills/feature-flags/SKILL.md +0 -169
  777. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  778. package/corpus/templates/tasks/.agents/skills/capture-learnings/SKILL.md +0 -89
  779. package/corpus/templates/tasks/.agents/skills/create-skill/SKILL.md +0 -195
  780. package/corpus/templates/tasks/.agents/skills/feature-flags/SKILL.md +0 -169
  781. package/corpus/templates/tasks/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  782. package/dist/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  783. package/dist/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  784. package/dist/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  785. package/dist/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  786. package/dist/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
  787. package/dist/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
  788. package/dist/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
  789. package/dist/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
  790. package/dist/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
  791. package/dist/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
  792. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
  793. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  794. package/dist/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
  795. package/dist/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
  796. package/dist/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
  797. package/dist/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
  798. package/dist/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
  799. package/dist/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
  800. package/dist/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
  801. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  802. package/dist/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
  803. package/dist/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
  804. package/dist/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
  805. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
  806. package/dist/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
  807. package/dist/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
  808. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
  809. package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
  810. package/dist/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
  811. package/dist/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
  812. package/dist/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
  813. package/dist/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
  814. package/dist/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
  815. package/dist/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
  816. package/dist/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
  817. package/dist/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
  818. package/dist/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
  819. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
  820. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
  821. package/dist/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
  822. package/dist/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
  823. package/dist/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
  824. package/dist/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
  825. package/dist/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
  826. package/dist/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
  827. package/dist/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
  828. package/dist/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
  829. package/dist/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
  830. package/dist/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
  831. package/dist/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
  832. package/dist/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
  833. package/dist/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
  834. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
  835. package/dist/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
  836. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
  837. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
  838. package/dist/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
  839. package/dist/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
  840. package/dist/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
  841. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  842. package/dist/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
  843. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
  844. package/dist/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
  845. package/src/templates/chat/.agents/skills/capture-learnings/SKILL.md +0 -89
  846. package/src/templates/chat/.agents/skills/create-skill/SKILL.md +0 -195
  847. package/src/templates/chat/.agents/skills/feature-flags/SKILL.md +0 -169
  848. package/src/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  849. package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +0 -89
  850. package/src/templates/default/.agents/skills/create-skill/SKILL.md +0 -195
  851. package/src/templates/default/.agents/skills/feature-flags/SKILL.md +0 -169
  852. package/src/templates/default/.agents/skills/integration-webhooks/SKILL.md +0 -364
  853. package/src/templates/default/.agents/skills/internationalization/SKILL.md +0 -82
  854. package/src/templates/default/.agents/skills/onboarding/SKILL.md +0 -56
  855. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +0 -392
  856. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  857. package/src/templates/headless/.agents/skills/feature-flags/SKILL.md +0 -169
  858. package/src/templates/headless/.agents/skills/integration-webhooks/SKILL.md +0 -364
  859. package/src/templates/headless/.agents/skills/turn-into-app/SKILL.md +0 -402
  860. package/src/templates/headless/.agents/skills/turn-into-app/agents/openai.yaml +0 -4
  861. package/src/templates/headless/.agents/skills/turn-into-app/references/fresh-project.md +0 -90
  862. package/src/templates/headless/.agents/skills/turn-into-skill/SKILL.md +0 -112
  863. package/src/templates/headless/.agents/skills/turn-into-skill/agents/openai.yaml +0 -4
  864. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  865. package/src/templates/workspace-core/.agents/skills/a2a-protocol/SKILL.md +0 -411
  866. package/src/templates/workspace-core/.agents/skills/adding-workspace-apps/SKILL.md +0 -107
  867. package/src/templates/workspace-core/.agents/skills/address-feedback/SKILL.md +0 -176
  868. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +0 -63
  869. package/src/templates/workspace-core/.agents/skills/audit-log/SKILL.md +0 -96
  870. package/src/templates/workspace-core/.agents/skills/authentication/SKILL.md +0 -295
  871. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +0 -242
  872. package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +0 -131
  873. package/src/templates/workspace-core/.agents/skills/capture-learnings/SKILL.md +0 -89
  874. package/src/templates/workspace-core/.agents/skills/changelog/SKILL.md +0 -114
  875. package/src/templates/workspace-core/.agents/skills/client-methods/SKILL.md +0 -115
  876. package/src/templates/workspace-core/.agents/skills/client-methods/references/legacy-client-fetch-audit-2026-06-03.md +0 -62
  877. package/src/templates/workspace-core/.agents/skills/client-side-routing/SKILL.md +0 -87
  878. package/src/templates/workspace-core/.agents/skills/composable-mini-apps/SKILL.md +0 -139
  879. package/src/templates/workspace-core/.agents/skills/context-xray/SKILL.md +0 -72
  880. package/src/templates/workspace-core/.agents/skills/create-skill/SKILL.md +0 -195
  881. package/src/templates/workspace-core/.agents/skills/data-programs/SKILL.md +0 -128
  882. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +0 -219
  883. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +0 -533
  884. package/src/templates/workspace-core/.agents/skills/extensions/references/api.md +0 -340
  885. package/src/templates/workspace-core/.agents/skills/extensions/references/examples.md +0 -259
  886. package/src/templates/workspace-core/.agents/skills/external-agents/SKILL.md +0 -547
  887. package/src/templates/workspace-core/.agents/skills/external-agents/references/mcp-apps-embedding.md +0 -157
  888. package/src/templates/workspace-core/.agents/skills/feature-flags/SKILL.md +0 -169
  889. package/src/templates/workspace-core/.agents/skills/generative-ui/SKILL.md +0 -117
  890. package/src/templates/workspace-core/.agents/skills/harness-agents/SKILL.md +0 -170
  891. package/src/templates/workspace-core/.agents/skills/integration-webhooks/SKILL.md +0 -364
  892. package/src/templates/workspace-core/.agents/skills/internationalization/SKILL.md +0 -82
  893. package/src/templates/workspace-core/.agents/skills/mvp-followup/SKILL.md +0 -52
  894. package/src/templates/workspace-core/.agents/skills/native-navigation/SKILL.md +0 -67
  895. package/src/templates/workspace-core/.agents/skills/observability/SKILL.md +0 -329
  896. package/src/templates/workspace-core/.agents/skills/onboarding/SKILL.md +0 -56
  897. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +0 -299
  898. package/src/templates/workspace-core/.agents/skills/qa/SKILL.md +0 -333
  899. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +0 -392
  900. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +0 -74
  901. package/src/templates/workspace-core/.agents/skills/reliable-mutations/SKILL.md +0 -70
  902. package/src/templates/workspace-core/.agents/skills/server-plugins/SKILL.md +0 -84
  903. package/src/templates/workspace-core/.agents/skills/tracking/SKILL.md +0 -278
  904. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +0 -127
  905. package/src/templates/workspace-core/.agents/skills/visual-answer/SKILL.md +0 -101
  906. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +0 -222
  907. package/src/templates/workspace-core/.agents/skills/writing-agent-instructions/SKILL.md +0 -363
@@ -313,17 +313,24 @@ const DECK_SAVE_RETRY_BASE_MS = 250;
313
313
  // Ops are appended by enqueueDeckOp and drained when the debounce fires.
314
314
  const pendingOpsQueue = new Map<string, GranularOp[]>();
315
315
 
316
- // Cached snapshot for useSyncExternalStore. MUST be stable when the boolean
316
+ // Cached snapshot for useSyncExternalStore. MUST be stable when either value
317
317
  // is unchanged or React will infinite-loop (it compares snapshots with
318
318
  // Object.is — a fresh object literal every call schedules a new update,
319
319
  // which calls getSnapshot again, which returns a new object… etc).
320
- let cachedSnapshot: { saving: boolean } = { saving: false };
320
+ let cachedSnapshot: { saving: boolean; hasUnsavedChanges: boolean } = {
321
+ saving: false,
322
+ hasUnsavedChanges: false,
323
+ };
321
324
 
322
325
  function recomputeSnapshot() {
323
326
  const saving =
324
327
  pendingSaves.size > 0 || inFlightSaves.size > 0 || pendingOpsQueue.size > 0;
325
- if (saving !== cachedSnapshot.saving) {
326
- cachedSnapshot = { saving };
328
+ const hasUnsavedChanges = saving || failedSaveDecks.size > 0;
329
+ if (
330
+ saving !== cachedSnapshot.saving ||
331
+ hasUnsavedChanges !== cachedSnapshot.hasUnsavedChanges
332
+ ) {
333
+ cachedSnapshot = { saving, hasUnsavedChanges };
327
334
  }
328
335
  }
329
336
 
@@ -342,8 +349,24 @@ export function subscribeSaveState(listener: () => void): () => void {
342
349
  return () => saveStateListeners.delete(listener);
343
350
  }
344
351
 
352
+ /**
353
+ * True when a deck still has a local write that has not been confirmed by the
354
+ * server, including a save that exhausted its retry budget.
355
+ */
356
+ export function hasUnsavedDeckChanges(deckId: string): boolean {
357
+ return (
358
+ pendingSaves.has(deckId) ||
359
+ inFlightSaves.has(deckId) ||
360
+ pendingOpsQueue.has(deckId) ||
361
+ failedSaveDecks.has(deckId)
362
+ );
363
+ }
364
+
345
365
  /** Snapshot of save state — true when anything is debounced or in flight. */
346
- export function getSaveSnapshot(): { saving: boolean } {
366
+ export function getSaveSnapshot(): {
367
+ saving: boolean;
368
+ hasUnsavedChanges: boolean;
369
+ } {
347
370
  return cachedSnapshot;
348
371
  }
349
372
 
@@ -1040,12 +1063,7 @@ export function hasUncommittedDeckChanges(
1040
1063
  deckId: string,
1041
1064
  dirtyDeckIds: Set<string>,
1042
1065
  ): boolean {
1043
- return (
1044
- dirtyDeckIds.has(deckId) ||
1045
- pendingSaves.has(deckId) ||
1046
- inFlightSaves.has(deckId) ||
1047
- failedSaveDecks.has(deckId)
1048
- );
1066
+ return dirtyDeckIds.has(deckId) || hasUnsavedDeckChanges(deckId);
1049
1067
  }
1050
1068
 
1051
1069
  /**
@@ -1174,6 +1192,7 @@ export function DeckProvider({ children }: { children: ReactNode }) {
1174
1192
  const pendingDuplicateSourceIdsRef = useRef<Set<string>>(new Set());
1175
1193
  const dirtyDeckIdsRef = useRef<Set<string>>(new Set());
1176
1194
  const deckBaselineRequestIdRef = useRef(0);
1195
+ const openDeckRequestIdByDeckRef = useRef<Map<string, number>>(new Map());
1177
1196
  // True only while the SSE channel is actually open. Stays false when SSE is
1178
1197
  // never started (embed auth), so the poll keeps its fast intervals there.
1179
1198
  const liveChannelConnectedRef = useRef(false);
@@ -1396,7 +1415,13 @@ export function DeckProvider({ children }: { children: ReactNode }) {
1396
1415
  // agent-added slides without ever overwriting or dropping local slides.
1397
1416
  const refetchOpenDeckIfChanged = useCallback(
1398
1417
  async (currentOpenId: string): Promise<Deck | null> => {
1418
+ const requestId =
1419
+ (openDeckRequestIdByDeckRef.current.get(currentOpenId) ?? 0) + 1;
1420
+ openDeckRequestIdByDeckRef.current.set(currentOpenId, requestId);
1399
1421
  const serverDeck = await fetchDeckFromAPI(currentOpenId);
1422
+ if (openDeckRequestIdByDeckRef.current.get(currentOpenId) !== requestId) {
1423
+ return null;
1424
+ }
1400
1425
  // Null means 404 (row not created yet), a transient failure, or a
1401
1426
  // still-pending create — nothing authoritative to reconcile.
1402
1427
  if (!serverDeck) return null;
@@ -1693,21 +1718,16 @@ export function DeckProvider({ children }: { children: ReactNode }) {
1693
1718
  lastExternalUpdateRef.current = Date.now();
1694
1719
  setDecks((prev) => prev.filter((d) => d.id !== data.deckId));
1695
1720
  } else if (data.type === "deck-changed") {
1696
- // Skip if a save for this deck is pending or in flight — this
1697
- // event is most likely the echo of our own write and the server
1698
- // copy may be a few hundred ms behind what the user just typed.
1699
- // Polling and the next save's response will bring the canonical
1700
- // state once the local burst settles.
1701
- if (
1702
- hasUncommittedDeckChanges(data.deckId, dirtyDeckIdsRef.current)
1703
- ) {
1704
- continue;
1705
- }
1706
- // Refetch the changed deck from the shared action surface.
1707
- void fetchDeckFromAPI(data.deckId).then((updated) => {
1708
- if (stopped || !updated) return;
1709
- lastExternalUpdateRef.current = Date.now(); // Suppress save-back
1710
- applyRemoteDeckUpdate(updated);
1721
+ // Do not drop the event while a local edit/save is pending. The
1722
+ // event may be an own-write echo, but it may also be an agent
1723
+ // write that arrived during the same local edit. The reconciler
1724
+ // preserves local slide bodies and local-only slides while still
1725
+ // surfacing server-added slides immediately.
1726
+ void refetchOpenDeckIfChanged(data.deckId).catch((error) => {
1727
+ console.error(
1728
+ `Failed to refresh deck ${data.deckId} after sync event:`,
1729
+ error,
1730
+ );
1711
1731
  });
1712
1732
  }
1713
1733
  }
@@ -1732,7 +1752,7 @@ export function DeckProvider({ children }: { children: ReactNode }) {
1732
1752
  liveChannelConnectedRef.current = false;
1733
1753
  unsubscribe();
1734
1754
  };
1735
- }, [applyRemoteDeckUpdate, resyncDeckState]);
1755
+ }, [refetchOpenDeckIfChanged, resyncDeckState]);
1736
1756
 
1737
1757
  // Flush pending (debounced) saves before the tab is hidden or unloaded so the
1738
1758
  // last ~500ms of edits aren't lost on close/navigation. `pagehide` is the
@@ -2344,15 +2364,21 @@ export function useDecks() {
2344
2364
  }
2345
2365
 
2346
2366
  /**
2347
- * Subscribe to deck save-state. Returns `{ saving: boolean }` — true while any
2348
- * deck has a pending debounce timer or an in-flight PUT.
2367
+ * Subscribe to deck save-state. `saving` is true while any deck has a pending
2368
+ * debounce timer or an in-flight PUT. `hasUnsavedChanges` also stays true when
2369
+ * a save has exhausted its retry budget, so navigation can warn before the
2370
+ * user leaves work that is still only local.
2349
2371
  *
2350
2372
  * Used by SaveStatusIndicator in the toolbar so users always see whether
2351
2373
  * their work has been committed (Rochkind reported losing a full deck because
2352
2374
  * there was no save signal).
2353
2375
  */
2354
- export function useSaveState(): { saving: boolean } {
2376
+ export function useSaveState(): {
2377
+ saving: boolean;
2378
+ hasUnsavedChanges: boolean;
2379
+ } {
2355
2380
  return useSyncExternalStore(subscribeSaveState, getSaveSnapshot, () => ({
2356
2381
  saving: false,
2382
+ hasUnsavedChanges: false,
2357
2383
  }));
2358
2384
  }
@@ -1,6 +1,6 @@
1
1
  import { useActionQuery } from "@agent-native/core/client/hooks";
2
2
 
3
- type Role = "viewer" | "editor" | "admin";
3
+ type Role = "viewer" | "commenter" | "editor" | "admin";
4
4
 
5
5
  interface SharesResponse {
6
6
  ownerEmail: string | null;
@@ -11,8 +11,8 @@ interface SharesResponse {
11
11
 
12
12
  /**
13
13
  * Resolve the signed-in user's role on a deck. Mirrors Google Slides:
14
- * `Viewer` = no edit affordances, but the editor shell is still navigable;
15
- * any other role (Owner / Editor / Admin) gets full editing.
14
+ * `Viewer` = read-only, `Commenter` = read-only with comment affordances;
15
+ * Owner / Editor / Admin get full editing.
16
16
  *
17
17
  * `assumeEditorWhileLoading` should only be true when a faster, already-known
18
18
  * signal (e.g. `deck.createdByMe`) confirms the caller is the owner — that
@@ -28,6 +28,7 @@ export function useDeckRole(
28
28
  ): {
29
29
  role: SharesResponse["role"] | undefined;
30
30
  canEdit: boolean;
31
+ canComment: boolean;
31
32
  isLoading: boolean;
32
33
  } {
33
34
  const query = useActionQuery<SharesResponse>(
@@ -39,6 +40,13 @@ export function useDeckRole(
39
40
  const canEdit =
40
41
  role === undefined
41
42
  ? assumeEditorWhileLoading
42
- : role === "owner" || role !== "viewer";
43
- return { role, canEdit, isLoading: query.isLoading };
43
+ : role === "owner" || role === "editor" || role === "admin";
44
+ const canComment =
45
+ role === undefined
46
+ ? assumeEditorWhileLoading
47
+ : role === "owner" ||
48
+ role === "commenter" ||
49
+ role === "editor" ||
50
+ role === "admin";
51
+ return { role, canEdit, canComment, isLoading: query.isLoading };
44
52
  }
@@ -7,7 +7,7 @@ type DesignSystemSummary = {
7
7
  data: string;
8
8
  isDefault: boolean;
9
9
  visibility?: "private" | "org" | "public" | null;
10
- accessRole?: "owner" | "admin" | "editor" | "viewer";
10
+ accessRole?: "owner" | "admin" | "editor" | "commenter" | "viewer";
11
11
  canManage?: boolean;
12
12
  createdAt: string;
13
13
  };
@@ -385,6 +385,7 @@ const messages = {
385
385
  center: "Center",
386
386
  right: "Right",
387
387
  justify: "Justify",
388
+ distribute: "Distribute",
388
389
  fill: "Fill",
389
390
  tint: "Tint",
390
391
  transparent: "Transparent",
@@ -563,6 +564,11 @@ const messages = {
563
564
  dismissLayoutWarning: "Dismiss layout warning",
564
565
  slidesAdded_one: "{{count}} slide added",
565
566
  slidesAdded_other: "{{count}} slides added",
567
+ unsavedChangesTitle: "Unsaved changes",
568
+ unsavedChangesDescription:
569
+ "If you leave or reload now, you may lose changes that have not been saved yet. Are you sure you want to exit?",
570
+ keepEditing: "Keep editing",
571
+ leaveWithoutSaving: "Exit without saving",
566
572
  },
567
573
  designSystemSetup: {
568
574
  importedBrand: "Imported brand",
@@ -662,8 +668,6 @@ const messages = {
662
668
  all: "All",
663
669
  showMineDecks: "Show decks created by me",
664
670
  mine: "Mine",
665
- deckCount_one: "deck",
666
- deckCount_other: "decks",
667
671
  createDeckOrVisual: "Create a presentation",
668
672
  noMineDecks: "No decks created by you yet.",
669
673
  noDecksMatchSearch: "No decks match your search.",
@@ -396,6 +396,7 @@ export async function startDeckGeneration({
396
396
  sourceModeInstructions,
397
397
  "If the user asked for a specific slide count, keep going sequentially until that count is reached unless a tool error blocks you. If no explicit count was given (including when the guided slide-count question was skipped), infer the count from the distinct topics/sections implied by the request — one slide per section plus a title and closing slide — and add slides for every section before considering the deck done. Do not stop at an arbitrary round number (e.g. 10) if sections remain uncovered, and never call `generate-slides-ai` for this flow; it is a legacy single-shot helper capped at 10 slides.",
398
398
  "Every slide is rendered into a fixed native canvas (default 16:9 is 960x540 CSS pixels, with 740x380px available inside standard 80px 110px padding). Keep the main content within that fit budget; split dense source material across more slides instead of packing it tightly. Never use zoom, transform: scale(), clipping, or scroll overflow to hide content overflow, and keep body text at least 16px.",
399
+ "When no reference deck or hydrated design system is available, use a restrained, content-first visual language. Do not invent colorful cards, boxes, or decorative rectangles behind or over text; add a colored shape only when it has a clear semantic role and leaves the text unobscured. Prefer typography, spacing, alignment, and one restrained accent.",
399
400
  "Each slide's --content must be full HTML. Slide HTML templates are in your AGENTS.md.",
400
401
  "Do NOT use create-deck (the deck already exists). Do NOT call db-schema, the resources tool, or search-files.",
401
402
  ].join("\n");
@@ -0,0 +1,32 @@
1
+ import { useEffect } from "react";
2
+
3
+ export function preventPendingDeckUnload(event: BeforeUnloadEvent): void {
4
+ event.preventDefault();
5
+ event.returnValue = "";
6
+ }
7
+
8
+ /**
9
+ * Keep the browser's native reload/close confirmation attached only while a
10
+ * deck has local work that cannot be recovered from the server.
11
+ */
12
+ export function usePendingDeckUnloadGuard(hasPendingEdits: boolean): void {
13
+ useEffect(() => {
14
+ if (!hasPendingEdits) return;
15
+ window.addEventListener("beforeunload", preventPendingDeckUnload, {
16
+ capture: true,
17
+ });
18
+ return () => {
19
+ window.removeEventListener("beforeunload", preventPendingDeckUnload, {
20
+ capture: true,
21
+ });
22
+ };
23
+ }, [hasPendingEdits]);
24
+ }
25
+
26
+ export function shouldBlockPendingDeckNavigation(args: {
27
+ hasPendingEdits: boolean;
28
+ currentPathname: string;
29
+ nextPathname: string;
30
+ }): boolean {
31
+ return args.hasPendingEdits && args.currentPathname !== args.nextPathname;
32
+ }
@@ -24,7 +24,12 @@ import {
24
24
  } from "@tabler/icons-react";
25
25
  import { nanoid } from "nanoid";
26
26
  import { useState, useCallback, useRef, useEffect } from "react";
27
- import { useParams, useSearchParams, useNavigate } from "react-router";
27
+ import {
28
+ useBlocker,
29
+ useNavigate,
30
+ useParams,
31
+ useSearchParams,
32
+ } from "react-router";
28
33
  import { toast } from "sonner";
29
34
 
30
35
  import { SlideCommentsPanel } from "@/components/comments/SlideCommentsPanel";
@@ -40,8 +45,23 @@ import ImageGenPanel from "@/components/editor/ImageGenPanel";
40
45
  import { QuestionFlow } from "@/components/editor/QuestionFlow";
41
46
  import SlideEditor from "@/components/editor/SlideEditor";
42
47
  import { TweaksPanel } from "@/components/editor/TweaksPanel";
48
+ import {
49
+ AlertDialog,
50
+ AlertDialogAction,
51
+ AlertDialogCancel,
52
+ AlertDialogContent,
53
+ AlertDialogDescription,
54
+ AlertDialogFooter,
55
+ AlertDialogHeader,
56
+ AlertDialogTitle,
57
+ } from "@/components/ui/alert-dialog";
43
58
  import { Button } from "@/components/ui/button";
44
- import { deckIdFromPathname, useDecks } from "@/context/DeckContext";
59
+ import {
60
+ deckIdFromPathname,
61
+ hasUnsavedDeckChanges,
62
+ useDecks,
63
+ useSaveState,
64
+ } from "@/context/DeckContext";
45
65
  import { useAgentGenerating } from "@/hooks/use-agent-generating";
46
66
  import { useDeckDesignSystem } from "@/hooks/use-deck-design-system";
47
67
  import { useDeckPresence } from "@/hooks/use-deck-presence";
@@ -65,6 +85,10 @@ import {
65
85
  shouldShowNewDeckGeneratingProgress,
66
86
  } from "@/lib/generation-state";
67
87
  import { isMissingUploadProviderError } from "@/lib/image-drop-to-agent";
88
+ import {
89
+ shouldBlockPendingDeckNavigation,
90
+ usePendingDeckUnloadGuard,
91
+ } from "@/lib/pending-deck-changes";
68
92
  import { imageFileLooksSupported } from "@/lib/slide-image-replacement";
69
93
  import {
70
94
  insertDroppedImageIntoSlideHtml,
@@ -165,8 +189,34 @@ export default function DeckEditor() {
165
189
  loadError,
166
190
  } = useDecks();
167
191
  const [activeSlideId, setActiveSlideId] = useState<string | null>(null);
192
+ const [inlineEditActive, setInlineEditActive] = useState(false);
168
193
  const [addSlideGenerating, setAddSlideGenerating] = useState(false);
169
194
  const [generatingSlideSelected, setGeneratingSlideSelected] = useState(false);
195
+ const { hasUnsavedChanges: hasUnsavedSave } = useSaveState();
196
+ const hasPendingDeckEdits =
197
+ inlineEditActive || (id ? hasUnsavedDeckChanges(id) : hasUnsavedSave);
198
+ usePendingDeckUnloadGuard(hasPendingDeckEdits);
199
+ const pendingDeckNavigationBlocker = useBlocker(
200
+ useCallback(
201
+ ({ currentLocation, nextLocation }) =>
202
+ shouldBlockPendingDeckNavigation({
203
+ hasPendingEdits: hasPendingDeckEdits,
204
+ currentPathname: currentLocation.pathname,
205
+ nextPathname: nextLocation.pathname,
206
+ }),
207
+ [hasPendingDeckEdits],
208
+ ),
209
+ );
210
+ const pendingDeckNavigationWarningOpen =
211
+ pendingDeckNavigationBlocker.state === "blocked";
212
+ const keepEditingAfterNavigationAttempt = useCallback(() => {
213
+ if (pendingDeckNavigationBlocker.state !== "blocked") return;
214
+ pendingDeckNavigationBlocker.reset();
215
+ }, [pendingDeckNavigationBlocker]);
216
+ const leaveWithPendingDeckChanges = useCallback(() => {
217
+ if (pendingDeckNavigationBlocker.state !== "blocked") return;
218
+ pendingDeckNavigationBlocker.proceed();
219
+ }, [pendingDeckNavigationBlocker]);
170
220
  const { generating } = useAgentGenerating();
171
221
  // Generation intent can arrive after this route mounts because the user
172
222
  // answers pre-generation questions from the empty editor.
@@ -253,7 +303,7 @@ export default function DeckEditor() {
253
303
  // get the full editor. Only assume edit access while the role is still
254
304
  // loading when `createdByMe` already confirms ownership — otherwise a
255
305
  // viewer would briefly see (and could click) edit affordances.
256
- const { canEdit } = useDeckRole(id, deck?.createdByMe === true);
306
+ const { canEdit, canComment } = useDeckRole(id, deck?.createdByMe === true);
257
307
  const isNewDeckGenerating = shouldShowNewDeckGeneratingProgress({
258
308
  generating,
259
309
  isNewDeckCreation: wasNewDeckCreation.current,
@@ -1005,6 +1055,7 @@ export default function DeckEditor() {
1005
1055
  deckId={id}
1006
1056
  deckTitle={deck.title}
1007
1057
  canEdit={canEdit}
1058
+ canComment={canComment}
1008
1059
  onTitleChange={(title) => updateDeck(id, { title })}
1009
1060
  slideCount={deck.slides.length}
1010
1061
  currentSlideIndex={currentIndex >= 0 ? currentIndex : 0}
@@ -1228,7 +1279,11 @@ export default function DeckEditor() {
1228
1279
  options,
1229
1280
  )
1230
1281
  }
1231
- onInlineEditStart={() => markDeckDirty(id)}
1282
+ onInlineEditStart={() => {
1283
+ setInlineEditActive(true);
1284
+ markDeckDirty(id);
1285
+ }}
1286
+ onInlineEditEnd={() => setInlineEditActive(false)}
1232
1287
  onGenerateImage={() => setImageGenOpen(true)}
1233
1288
  onOpenAssetLibrary={(src) => {
1234
1289
  setReplaceImageSrc(src);
@@ -1257,6 +1312,7 @@ export default function DeckEditor() {
1257
1312
  }
1258
1313
  recentEdits={deckRecentEdits}
1259
1314
  onComment={(quotedText) => {
1315
+ if (!canComment) return;
1260
1316
  setPendingComment({ quotedText });
1261
1317
  setSidePanel("comments");
1262
1318
  }}
@@ -1284,6 +1340,7 @@ export default function DeckEditor() {
1284
1340
  <SlideCommentsPanel
1285
1341
  deckId={id}
1286
1342
  slideId={currentSlide?.id ?? null}
1343
+ canComment={canComment}
1287
1344
  pendingComment={pendingComment}
1288
1345
  onPendingDone={() => setPendingComment(null)}
1289
1346
  onClose={() => {
@@ -1365,6 +1422,30 @@ export default function DeckEditor() {
1365
1422
  canRestore={canEdit}
1366
1423
  anchorRef={historyButtonRef}
1367
1424
  />
1425
+
1426
+ <AlertDialog open={pendingDeckNavigationWarningOpen}>
1427
+ <AlertDialogContent>
1428
+ <AlertDialogHeader>
1429
+ <AlertDialogTitle>
1430
+ {t("deckEditor.unsavedChangesTitle")}
1431
+ </AlertDialogTitle>
1432
+ <AlertDialogDescription>
1433
+ {t("deckEditor.unsavedChangesDescription")}
1434
+ </AlertDialogDescription>
1435
+ </AlertDialogHeader>
1436
+ <AlertDialogFooter>
1437
+ <AlertDialogCancel onClick={keepEditingAfterNavigationAttempt}>
1438
+ {t("deckEditor.keepEditing")}
1439
+ </AlertDialogCancel>
1440
+ <AlertDialogAction
1441
+ className="bg-destructive text-destructive-foreground hover:bg-destructive/90"
1442
+ onClick={leaveWithPendingDeckChanges}
1443
+ >
1444
+ {t("deckEditor.leaveWithoutSaving")}
1445
+ </AlertDialogAction>
1446
+ </AlertDialogFooter>
1447
+ </AlertDialogContent>
1448
+ </AlertDialog>
1368
1449
  </div>
1369
1450
  );
1370
1451
  }
@@ -4,6 +4,11 @@ import {
4
4
  useSession,
5
5
  } from "@agent-native/core/client/hooks";
6
6
  import { useT } from "@agent-native/core/client/i18n";
7
+ import {
8
+ FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
9
+ fetchFirstRunOnboardingStatus,
10
+ isFirstRunOnboardingEnabled,
11
+ } from "@agent-native/core/client/onboarding";
7
12
  import { buildSignInReturnHref } from "@agent-native/core/client/ui";
8
13
  import {
9
14
  useSetHeaderActions,
@@ -353,6 +358,8 @@ export default function Index() {
353
358
 
354
359
  const initialPrompt = searchParams.get("initialPrompt")?.trim() ?? "";
355
360
  const onboardingPreview = searchParams.get("onboarding") === "preview";
361
+ const firstRunOnboardingEnabled =
362
+ onboardingPreview || isFirstRunOnboardingEnabled();
356
363
  const openInitialPrompt = useCallback(() => {
357
364
  if (!initialPrompt || initialPromptConsumedRef.current) return;
358
365
  initialPromptConsumedRef.current = true;
@@ -371,40 +378,41 @@ export default function Index() {
371
378
 
372
379
  useEffect(() => {
373
380
  if (!initialPrompt || initialPromptConsumedRef.current) return;
374
- const firstRunActive =
375
- onboardingPreview ||
376
- (typeof document !== "undefined" &&
377
- document.cookie
378
- .split(";")
379
- .some((part) => part.trim().startsWith("agent-native-first-run=")));
380
381
  const handleFirstRunCompleted = () => openInitialPrompt();
382
+ const handleFirstRunStatusResolved = (event: Event) => {
383
+ const firstRun =
384
+ (event as CustomEvent<{ firstRun?: unknown }>).detail?.firstRun ===
385
+ true;
386
+ if (!firstRun) openInitialPrompt();
387
+ };
388
+
389
+ if (!firstRunOnboardingEnabled) {
390
+ openInitialPrompt();
391
+ return;
392
+ }
393
+
381
394
  window.addEventListener(
382
395
  "agent-native:first-run-completed",
383
396
  handleFirstRunCompleted,
384
397
  );
385
- let fallbackTimer: number | undefined;
386
- if (!firstRunActive) {
398
+ window.addEventListener(
399
+ FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
400
+ handleFirstRunStatusResolved,
401
+ );
402
+ void fetchFirstRunOnboardingStatus().catch(() => {
387
403
  openInitialPrompt();
388
- } else {
389
- // A landing link can open in a tab where the first-run marker exists but
390
- // the onboarding surface is not mounted. Do not leave the prompt waiting
391
- // forever in that case, while still giving the real onboarding overlay
392
- // time to load and dispatch its completion event.
393
- fallbackTimer = window.setTimeout(() => {
394
- const firstRunSurface = document.querySelector(
395
- "[data-onboarding-screen], [data-onboarding-loading]",
396
- );
397
- if (!firstRunSurface) openInitialPrompt();
398
- }, 2500);
399
- }
404
+ });
400
405
  return () => {
401
406
  window.removeEventListener(
402
407
  "agent-native:first-run-completed",
403
408
  handleFirstRunCompleted,
404
409
  );
405
- if (fallbackTimer !== undefined) window.clearTimeout(fallbackTimer);
410
+ window.removeEventListener(
411
+ FIRST_RUN_ONBOARDING_STATUS_RESOLVED_EVENT,
412
+ handleFirstRunStatusResolved,
413
+ );
406
414
  };
407
- }, [initialPrompt, onboardingPreview, openInitialPrompt]);
415
+ }, [firstRunOnboardingEnabled, initialPrompt, openInitialPrompt]);
408
416
 
409
417
  const setDeckFilter = useCallback(
410
418
  (value: string) => {
@@ -774,6 +782,7 @@ export default function Index() {
774
782
  sourceModeInstructions,
775
783
  "If the user asked for a specific slide count, keep going sequentially until that count is reached unless a tool error blocks you. If no explicit count was given (including when the guided slide-count question was skipped), infer the count from the distinct topics/sections implied by the request — one slide per section plus a title and closing slide — and add slides for every section before considering the deck done. Do not stop at an arbitrary round number (e.g. 10) if sections remain uncovered, and never call `generate-slides-ai` for this flow; it is a legacy single-shot helper capped at 10 slides.",
776
784
  "Every slide is rendered into a fixed native canvas (default 16:9 is 960x540 CSS pixels, with 740x380px available inside standard 80px 110px padding). Keep the main content within that fit budget; split dense source material across more slides instead of packing it tightly. Never use zoom, transform: scale(), clipping, or scroll overflow to hide content overflow, and keep body text at least 16px.",
785
+ "When no reference deck or hydrated design system is available, use a restrained, content-first visual language. Do not invent colorful cards, boxes, or decorative rectangles behind or over text; add a colored shape only when it has a clear semantic role and leaves the text unobscured. Prefer typography, spacing, alignment, and one restrained accent.",
777
786
  "Each slide's --content must be full HTML. Slide HTML templates are in your AGENTS.md.",
778
787
  "Do NOT use create-deck (the deck already exists). Do NOT call db-schema, the resources tool, or search-files.",
779
788
  ].join("\n");
@@ -1361,51 +1370,41 @@ export default function Index() {
1361
1370
  ) : (
1362
1371
  <>
1363
1372
  <div className="mb-4 flex flex-col gap-3 sm:flex-row sm:items-center sm:justify-between">
1364
- <div className="flex min-w-0 flex-col gap-3 sm:flex-row sm:items-center">
1365
- <ToggleGroup
1366
- type="single"
1367
- value={deckFilter}
1368
- onValueChange={(value) => value && setDeckFilter(value)}
1369
- className="w-fit rounded-lg border border-border bg-card p-0.5"
1370
- size="sm"
1373
+ <ToggleGroup
1374
+ type="single"
1375
+ value={deckFilter}
1376
+ onValueChange={(value) => value && setDeckFilter(value)}
1377
+ className="w-fit rounded-lg border border-border bg-card p-0.5"
1378
+ size="sm"
1379
+ >
1380
+ <ToggleGroupItem
1381
+ value="all"
1382
+ aria-label={t("home.showAllDecks")}
1383
+ className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
1371
1384
  >
1372
- <ToggleGroupItem
1373
- value="all"
1374
- aria-label={t("home.showAllDecks")}
1375
- className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
1376
- >
1377
- <IconStack2 className="me-1.5 h-3.5 w-3.5" />
1378
- {t("home.all")}
1379
- </ToggleGroupItem>
1380
- <ToggleGroupItem
1381
- value="mine"
1382
- aria-label={t("home.showMineDecks")}
1383
- className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
1384
- >
1385
- <IconUserCircle className="me-1.5 h-3.5 w-3.5" />
1386
- {t("home.mine")}
1387
- </ToggleGroupItem>
1388
- </ToggleGroup>
1389
- <label className="flex h-8 w-full items-center gap-2 rounded-lg border border-border bg-card px-2.5 text-muted-foreground sm:w-60">
1390
- <IconSearch className="size-3.5 shrink-0" aria-hidden="true" />
1391
- <Input
1392
- type="search"
1393
- value={deckSearch}
1394
- onChange={(event) => setDeckSearch(event.target.value)}
1395
- placeholder={t("root.searchDecks")}
1396
- aria-label={t("root.searchDecks")}
1397
- className="h-7 min-w-0 flex-1 border-0 bg-transparent p-0 text-xs shadow-none focus-visible:ring-0 focus-visible:ring-offset-0"
1398
- />
1399
- </label>
1400
- </div>
1401
- <span className="text-xs text-muted-foreground/70">
1402
- {deckFilter === "mine" || normalizedDeckSearch
1403
- ? `${visibleDecks.length} of ${decks.length}`
1404
- : visibleDecks.length}{" "}
1405
- {t("home.deckCount", {
1406
- count: visibleDecks.length,
1407
- })}
1408
- </span>
1385
+ <IconStack2 className="me-1.5 h-3.5 w-3.5" />
1386
+ {t("home.all")}
1387
+ </ToggleGroupItem>
1388
+ <ToggleGroupItem
1389
+ value="mine"
1390
+ aria-label={t("home.showMineDecks")}
1391
+ className="h-7 rounded-md px-3 text-xs data-[state=on]:bg-accent"
1392
+ >
1393
+ <IconUserCircle className="me-1.5 h-3.5 w-3.5" />
1394
+ {t("home.mine")}
1395
+ </ToggleGroupItem>
1396
+ </ToggleGroup>
1397
+ <label className="flex h-8 w-full items-center gap-2 rounded-lg border border-border bg-card px-2.5 text-muted-foreground sm:w-60">
1398
+ <IconSearch className="size-3.5 shrink-0" aria-hidden="true" />
1399
+ <Input
1400
+ type="search"
1401
+ value={deckSearch}
1402
+ onChange={(event) => setDeckSearch(event.target.value)}
1403
+ placeholder={t("root.searchDecks")}
1404
+ aria-label={t("root.searchDecks")}
1405
+ className="h-7 min-w-0 flex-1 border-0 bg-transparent p-0 text-xs shadow-none focus-visible:ring-0 focus-visible:ring-offset-0"
1406
+ />
1407
+ </label>
1409
1408
  </div>
1410
1409
  <div className="deck-grid-container">
1411
1410
  <div className="deck-grid grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4">
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-08-12
4
+ ---
5
+
6
+ Shared decks now distinguish read-only viewers from commenters who can add comments without editing slides.
@@ -101,8 +101,9 @@ placeholders such as `${keys.SLACK_WEBHOOK}` or `<SLACK_WEBHOOK>`. Do not paste
101
101
  real keys, internal data, or customer data into instructions as examples.
102
102
 
103
103
  If the feature adds or changes visible UI copy, prompts, toasts, labels, empty
104
- states, or formatting, read `internationalization` and update the app's i18n
105
- catalogs in the same change.
104
+ states, or formatting, update the English source copy. Read the optional
105
+ `internationalization` skill and update additional catalogs only when
106
+ `translations.locales` in `agent-native.config.ts` includes them.
106
107
 
107
108
  For app-backed skills, declare skill visibility in the app-skill manifest:
108
109