@agent-native/core 0.176.1 → 0.176.2-nightly-20260831185956

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 (1037) hide show
  1. package/corpus/README.md +1 -1
  2. package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +4 -0
  3. package/corpus/templates/analytics/.agents/skills/secrets/SKILL.md +47 -0
  4. package/corpus/templates/analytics/AGENTS.md +13 -2
  5. package/corpus/templates/analytics/CHANGELOG.md +8 -0
  6. package/corpus/templates/analytics/actions/certify-dashboard.ts +39 -0
  7. package/corpus/templates/analytics/actions/get-sql-dashboard.ts +1 -1
  8. package/corpus/templates/analytics/actions/list-analysis-revisions.ts +4 -2
  9. package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +4 -2
  10. package/corpus/templates/analytics/actions/search-analytics-query-catalog.ts +1 -0
  11. package/corpus/templates/analytics/actions/search-dashboard-references.ts +2 -1
  12. package/corpus/templates/analytics/actions/set-workspace-feature-flag.ts +2 -2
  13. package/corpus/templates/analytics/app/components/agents/FeatureFlagsFleetPanel.tsx +16 -1
  14. package/corpus/templates/analytics/app/components/layout/Layout.tsx +58 -0
  15. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +7 -19
  16. package/corpus/templates/analytics/app/global.css +0 -7
  17. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +1 -1
  18. package/corpus/templates/analytics/app/i18n-data.ts +42 -0
  19. package/corpus/templates/analytics/app/lib/track-metric.ts +15 -0
  20. package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -1
  21. package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -1
  22. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +115 -2
  23. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +8 -0
  24. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +23 -25
  25. package/corpus/templates/analytics/app/root.tsx +5 -5
  26. package/corpus/templates/analytics/app/routes/_index.tsx +18 -20
  27. package/corpus/templates/analytics/app/routes/dashboard.tsx +1 -1
  28. package/corpus/templates/analytics/app/routes/home.tsx +39 -0
  29. package/corpus/templates/analytics/changelog/2026-08-27-show-analytics-s-own-registered-flags-in-fleet-feature-flag-.md +6 -0
  30. package/corpus/templates/analytics/changelog/2026-08-28-analytics-loading-placeholders-now-use-a-smooth-whole-surfac.md +6 -0
  31. package/corpus/templates/analytics/changelog/2026-08-28-analytics-loading-states-use-a-softer-whole-surfac.md +6 -0
  32. package/corpus/templates/analytics/changelog/2026-08-28-analytics-sidebar-horizontal-spacing-is-tighter.md +6 -0
  33. package/corpus/templates/analytics/changelog/2026-08-28-sidebar-branding-matches-the-app-text-color-with-a-tighter-m.md +6 -0
  34. package/corpus/templates/analytics/changelog/2026-08-28-sidebar-branding-uses-a-monochrome-agent-native-mark.md +6 -0
  35. package/corpus/templates/analytics/changelog/2026-08-29-analytics-loading-shine-is-more-subtle.md +6 -0
  36. package/corpus/templates/analytics/changelog/2026-08-29-chat-edits-can-be-reverted-to-saved-checkpoints.md +6 -0
  37. package/corpus/templates/analytics/changelog/2026-08-29-dashboard-certification-lives-in-the-overflow-menu.md +6 -0
  38. package/corpus/templates/analytics/changelog/2026-08-29-public-marketing-home.md +6 -0
  39. package/corpus/templates/analytics/package.json +2 -0
  40. package/corpus/templates/analytics/public/manifest.json +1 -1
  41. package/corpus/templates/analytics/server/db/schema.ts +4 -0
  42. package/corpus/templates/analytics/server/handlers/events.ts +10 -1
  43. package/corpus/templates/analytics/server/handlers/first-party-analytics.ts +9 -1
  44. package/corpus/templates/analytics/server/handlers/session-replay.ts +10 -1
  45. package/corpus/templates/analytics/server/lib/agent-readable-resource-context.ts +22 -2
  46. package/corpus/templates/analytics/server/lib/analytics-query-catalog.ts +82 -7
  47. package/corpus/templates/analytics/server/lib/dashboard-certification.ts +58 -0
  48. package/corpus/templates/analytics/server/lib/dashboard-report.ts +1 -0
  49. package/corpus/templates/analytics/server/lib/dashboards-store.ts +429 -46
  50. package/corpus/templates/analytics/server/lib/workspace-feature-flags.ts +204 -32
  51. package/corpus/templates/analytics/server/plugins/agent-chat.ts +139 -0
  52. package/corpus/templates/analytics/server/plugins/auth.ts +1 -0
  53. package/corpus/templates/analytics/server/plugins/core-routes.ts +3 -2
  54. package/corpus/templates/analytics/server/plugins/db.ts +11 -0
  55. package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +4 -0
  56. package/corpus/templates/assets/.agents/skills/secrets/SKILL.md +47 -0
  57. package/corpus/templates/assets/app/components/layout/Header.tsx +2 -2
  58. package/corpus/templates/assets/app/components/layout/Layout.tsx +4 -3
  59. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +14 -27
  60. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -2
  61. package/corpus/templates/assets/app/root.tsx +29 -9
  62. package/corpus/templates/assets/app/routes/_index.tsx +15 -116
  63. package/corpus/templates/assets/app/routes/chat.$threadId.tsx +1 -1
  64. package/corpus/templates/assets/app/routes/home.tsx +137 -0
  65. package/corpus/templates/assets/app/routes/library.tsx +5 -1
  66. package/corpus/templates/assets/app/routes/settings.tsx +28 -25
  67. package/corpus/templates/assets/changelog/2026-08-26-templates-across-brand-kits.md +1 -0
  68. package/corpus/templates/assets/public/manifest.json +1 -1
  69. package/corpus/templates/assets/server/plugins/auth.ts +1 -0
  70. package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +4 -0
  71. package/corpus/templates/brain/.agents/skills/secrets/SKILL.md +47 -0
  72. package/corpus/templates/brain/app/components/layout/Layout.tsx +3 -3
  73. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +10 -23
  74. package/corpus/templates/brain/app/lib/brain.ts +2 -2
  75. package/corpus/templates/brain/app/root.tsx +13 -3
  76. package/corpus/templates/brain/app/routes/_index.tsx +15 -55
  77. package/corpus/templates/brain/app/routes/home.tsx +76 -0
  78. package/corpus/templates/brain/app/routes.ts +1 -0
  79. package/corpus/templates/brain/public/manifest.json +1 -1
  80. package/corpus/templates/brain/server/lib/brain-health.ts +2 -2
  81. package/corpus/templates/brain/server/plugins/auth.ts +1 -1
  82. package/corpus/templates/brain/server/plugins/core-routes.ts +2 -1
  83. package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +4 -0
  84. package/corpus/templates/calendar/.agents/skills/secrets/SKILL.md +47 -0
  85. package/corpus/templates/calendar/CHANGELOG.md +12 -0
  86. package/corpus/templates/calendar/actions/event-action-helpers.ts +2 -1
  87. package/corpus/templates/calendar/actions/manage-event-draft.ts +1 -1
  88. package/corpus/templates/calendar/actions/update-event.ts +8 -1
  89. package/corpus/templates/calendar/amplify.yml +15 -0
  90. package/corpus/templates/calendar/app/components/calendar/ApolloPanel.tsx +2 -2
  91. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +102 -109
  92. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +23 -10
  93. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +2 -11
  94. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +150 -141
  95. package/corpus/templates/calendar/app/components/calendar/EventCard.tsx +3 -1
  96. package/corpus/templates/calendar/app/components/calendar/EventDescription.tsx +2 -2
  97. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +359 -222
  98. package/corpus/templates/calendar/app/components/calendar/InlineEventPickers.tsx +13 -5
  99. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +21 -9
  100. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +21 -32
  101. package/corpus/templates/calendar/app/global.css +11 -0
  102. package/corpus/templates/calendar/app/hooks/use-meeting-start-notifications.ts +10 -0
  103. package/corpus/templates/calendar/app/hooks/use-navigation-state.ts +3 -3
  104. package/corpus/templates/calendar/app/i18n-data.ts +110 -0
  105. package/corpus/templates/calendar/app/lib/calendar-timezone.ts +12 -3
  106. package/corpus/templates/calendar/app/lib/event-popover-style.ts +43 -0
  107. package/corpus/templates/calendar/app/lib/mcp-embed.ts +8 -2
  108. package/corpus/templates/calendar/app/lib/utils.ts +3 -1
  109. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -8
  110. package/corpus/templates/calendar/app/pages/CalendarView.tsx +9 -11
  111. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +2 -6
  112. package/corpus/templates/calendar/app/pages/NotFound.tsx +1 -1
  113. package/corpus/templates/calendar/app/pages/Settings.tsx +54 -0
  114. package/corpus/templates/calendar/app/root.tsx +9 -1
  115. package/corpus/templates/calendar/app/routes/{_app._index.tsx → _app.home.tsx} +1 -1
  116. package/corpus/templates/calendar/app/routes/_index.tsx +34 -0
  117. package/corpus/templates/calendar/app/routes/event.tsx +2 -6
  118. package/corpus/templates/calendar/changelog/2026-08-28-all-day-events-stay-in-the-compact-top-bar-in-day-and-week-v.md +6 -0
  119. package/corpus/templates/calendar/changelog/2026-08-28-calendar-organizer-note-emails-now-link-back-to-agent-native.md +6 -0
  120. package/corpus/templates/calendar/changelog/2026-08-28-calendar-shows-google-profile-photos-in-the-desktop-app.md +6 -0
  121. package/corpus/templates/calendar/changelog/2026-08-28-event-creators-can-choose-whether-a-meeting-shows-as-free-or.md +6 -0
  122. package/corpus/templates/calendar/changelog/2026-08-28-event-popovers-match-notion-calendar-s-density-a-284px-blurr.md +6 -0
  123. package/corpus/templates/calendar/changelog/2026-08-28-fixed-calendar-navigation-scheduling-permissions-and-action-.md +6 -0
  124. package/corpus/templates/calendar/changelog/2026-08-28-google-calendar-connections-use-the-registered-callback-on-m.md +6 -0
  125. package/corpus/templates/calendar/changelog/2026-08-28-sidebar-branding-matches-the-app-text-color-with-a-tighter-m.md +6 -0
  126. package/corpus/templates/calendar/changelog/2026-08-28-sidebar-branding-uses-a-monochrome-agent-native-mark.md +6 -0
  127. package/corpus/templates/calendar/changelog/2026-08-28-the-calendar-sidebar-keeps-the-settings-link-compact.md +6 -0
  128. package/corpus/templates/calendar/changelog/2026-08-28-the-calendar-sidebar-keeps-the-workspace-picker-compact.md +6 -0
  129. package/corpus/templates/calendar/changelog/2026-08-29-public-marketing-home.md +6 -0
  130. package/corpus/templates/calendar/public/manifest.json +1 -1
  131. package/corpus/templates/calendar/server/handlers/google-auth.ts +10 -2
  132. package/corpus/templates/calendar/server/lib/emails.ts +2 -1
  133. package/corpus/templates/calendar/server/lib/event-guest-notifications.ts +31 -5
  134. package/corpus/templates/calendar/server/lib/google-calendar.ts +4 -2
  135. package/corpus/templates/calendar/server/plugins/auth.ts +1 -0
  136. package/corpus/templates/calendar/server/plugins/core-routes.ts +5 -3
  137. package/corpus/templates/calendar/shared/event-permissions.ts +12 -0
  138. package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -0
  139. package/corpus/templates/chat/.agents/skills/secrets/SKILL.md +47 -0
  140. package/corpus/templates/chat/AGENTS.md +5 -4
  141. package/corpus/templates/chat/app/components/layout/Header.tsx +1 -1
  142. package/corpus/templates/chat/app/components/layout/Layout.tsx +5 -4
  143. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +16 -25
  144. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +5 -5
  145. package/corpus/templates/chat/app/root.tsx +16 -3
  146. package/corpus/templates/chat/app/routes/_index.tsx +17 -74
  147. package/corpus/templates/chat/app/routes/chat.$threadId.tsx +1 -1
  148. package/corpus/templates/chat/app/routes/home.tsx +94 -0
  149. package/corpus/templates/chat/netlify.toml +2 -1
  150. package/corpus/templates/chat/public/manifest.json +1 -1
  151. package/corpus/templates/chat/server/plugins/auth.ts +1 -0
  152. package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +4 -0
  153. package/corpus/templates/clips/.agents/skills/secrets/SKILL.md +47 -0
  154. package/corpus/templates/clips/actions/add-comment.ts +18 -1
  155. package/corpus/templates/clips/actions/get-recording-player-data.ts +2 -0
  156. package/corpus/templates/clips/actions/list-comments.ts +2 -0
  157. package/corpus/templates/clips/actions/list-notifications.ts +60 -28
  158. package/corpus/templates/clips/actions/list-recording-mention-members.ts +64 -0
  159. package/corpus/templates/clips/actions/list-recordings.ts +1 -1
  160. package/corpus/templates/clips/actions/reply-to-comment.ts +17 -1
  161. package/corpus/templates/clips/actions/update-comment.ts +36 -2
  162. package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -3
  163. package/corpus/templates/clips/app/components/library/library-grid.tsx +18 -6
  164. package/corpus/templates/clips/app/components/library/library-layout.tsx +6 -58
  165. package/corpus/templates/clips/app/components/library/recording-card.tsx +101 -3
  166. package/corpus/templates/clips/app/components/library/sort-menu.tsx +2 -2
  167. package/corpus/templates/clips/app/components/player/comment-composer.tsx +284 -0
  168. package/corpus/templates/clips/app/components/player/comments-panel.tsx +162 -46
  169. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +38 -133
  170. package/corpus/templates/clips/app/components/player/video-player.tsx +1 -1
  171. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +99 -20
  172. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +110 -116
  173. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +83 -60
  174. package/corpus/templates/clips/app/components/settings/ai-setup-section.tsx +17 -11
  175. package/corpus/templates/clips/app/components/settings/types.ts +5 -1
  176. package/corpus/templates/clips/app/components/settings/video-storage-section.tsx +21 -12
  177. package/corpus/templates/clips/app/global.css +0 -27
  178. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +3 -17
  179. package/corpus/templates/clips/app/hooks/use-mention-members.ts +24 -0
  180. package/corpus/templates/clips/app/hooks/use-navigation-state.ts +2 -2
  181. package/corpus/templates/clips/app/i18n/en-US.ts +15 -0
  182. package/corpus/templates/clips/app/lib/recording-backup.ts +245 -0
  183. package/corpus/templates/clips/app/lib/recording-retry.ts +189 -0
  184. package/corpus/templates/clips/app/lib/recording-status.ts +32 -0
  185. package/corpus/templates/clips/app/root.tsx +11 -2
  186. package/corpus/templates/clips/app/routes/_app.home.tsx +62 -0
  187. package/corpus/templates/clips/app/routes/_app.notifications.tsx +45 -12
  188. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +2 -0
  189. package/corpus/templates/clips/app/routes/_index.tsx +11 -40
  190. package/corpus/templates/clips/app/routes/download.tsx +148 -15
  191. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +4 -3
  192. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +6 -11
  193. package/corpus/templates/clips/app/routes/record.tsx +72 -13
  194. package/corpus/templates/clips/app/routes/share.$shareId.tsx +40 -24
  195. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -7
  196. package/corpus/templates/clips/changelog/2026-08-28-chrome-extension-download-help.md +6 -0
  197. package/corpus/templates/clips/changelog/2026-08-28-clips-loading-skeletons-use-a-softer-whole-surface.md +6 -0
  198. package/corpus/templates/clips/changelog/2026-08-28-comment-composer-no-longer-has-an-outer-border.md +6 -0
  199. package/corpus/templates/clips/changelog/2026-08-29-clips-loading-shine-is-more-subtle.md +6 -0
  200. package/corpus/templates/clips/desktop/src/app.tsx +377 -476
  201. package/corpus/templates/clips/desktop/src/components/ui/skeleton.tsx +1 -1
  202. package/corpus/templates/clips/desktop/src/components/ui/spinner.tsx +1 -17
  203. package/corpus/templates/clips/desktop/src/lib/recorder.ts +4 -0
  204. package/corpus/templates/clips/desktop/src/overlays/countdown.tsx +0 -8
  205. package/corpus/templates/clips/desktop/src/overlays/record-pill.tsx +221 -460
  206. package/corpus/templates/clips/desktop/src/styles.css +0 -40
  207. package/corpus/templates/clips/desktop/src/tailwind.css +28 -14
  208. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +15 -11
  209. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +9 -0
  210. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +192 -57
  211. package/corpus/templates/clips/desktop/src-tauri/src/recording_indicator.rs +9 -3
  212. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +12 -0
  213. package/corpus/templates/clips/desktop/src-tauri/src/util.rs +97 -3
  214. package/corpus/templates/clips/public/manifest.json +1 -1
  215. package/corpus/templates/clips/server/db/schema.ts +1 -0
  216. package/corpus/templates/clips/server/lib/activity-notifications.ts +30 -5
  217. package/corpus/templates/clips/server/lib/comment-mentions.ts +23 -0
  218. package/corpus/templates/clips/server/lib/emails.ts +2 -2
  219. package/corpus/templates/clips/server/lib/recording-page-access.ts +16 -0
  220. package/corpus/templates/clips/server/lib/transactional-email-templates.ts +14 -7
  221. package/corpus/templates/clips/server/plugins/auth.ts +1 -0
  222. package/corpus/templates/clips/server/plugins/core-routes.ts +5 -0
  223. package/corpus/templates/clips/server/plugins/db.ts +5 -0
  224. package/corpus/templates/clips/server/routes/api/auth/google-calendar.get.ts +4 -2
  225. package/corpus/templates/clips/server/routes/api/clips-latest.json.get.ts +77 -22
  226. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +11 -0
  227. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/interrupt.post.ts +4 -4
  228. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +1 -1
  229. package/corpus/templates/clips/shared/comment-mentions.ts +71 -0
  230. package/corpus/templates/clips/shared/prerendered-public-paths.ts +1 -1
  231. package/corpus/templates/clips/shared/recording-core.ts +5 -0
  232. package/corpus/templates/clips/shared/recording-playhead.css +207 -0
  233. package/corpus/templates/clips/shared/recording-playhead.tsx +616 -0
  234. package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +4 -0
  235. package/corpus/templates/content/.agents/skills/secrets/SKILL.md +47 -0
  236. package/corpus/templates/content/CHANGELOG.md +6 -0
  237. package/corpus/templates/content/actions/_property-utils.ts +45 -9
  238. package/corpus/templates/content/actions/edit-document.ts +17 -0
  239. package/corpus/templates/content/actions/get-document.ts +31 -11
  240. package/corpus/templates/content/actions/list-document-properties.ts +30 -2
  241. package/corpus/templates/content/actions/list-document-versions.ts +49 -17
  242. package/corpus/templates/content/actions/list-documents.ts +13 -2
  243. package/corpus/templates/content/actions/restore-document-version.ts +8 -1
  244. package/corpus/templates/content/actions/update-document.ts +8 -0
  245. package/corpus/templates/content/app/components/QueryErrorState.tsx +1 -0
  246. package/corpus/templates/content/app/components/editor/DocumentBlockFields.tsx +28 -8
  247. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +94 -61
  248. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +24 -10
  249. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +16 -13
  250. package/corpus/templates/content/app/components/editor/database/settings.tsx +16 -13
  251. package/corpus/templates/content/app/components/layout/Layout.tsx +35 -1
  252. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +5 -18
  253. package/corpus/templates/content/app/hooks/use-document-properties.ts +5 -3
  254. package/corpus/templates/content/app/hooks/use-documents.ts +3 -1
  255. package/corpus/templates/content/app/hooks/use-navigation-state.ts +3 -3
  256. package/corpus/templates/content/app/root.tsx +9 -4
  257. package/corpus/templates/content/app/routes/{_app._index.tsx → _app.home.tsx} +12 -4
  258. package/corpus/templates/content/app/routes/_index.tsx +33 -0
  259. package/corpus/templates/content/changelog/2026-08-26-shared-page-load-failures-now-stay-visible-and-safe.md +6 -0
  260. package/corpus/templates/content/docs/product/capabilities/content.workspace.session-restore.md +2 -2
  261. package/corpus/templates/content/e2e/playwright.config.ts +1 -1
  262. package/corpus/templates/content/package.json +2 -0
  263. package/corpus/templates/content/parity/matrix.md +1 -1
  264. package/corpus/templates/content/parity/matrix.ts +1 -1
  265. package/corpus/templates/content/public/manifest.json +1 -1
  266. package/corpus/templates/content/server/db/schema.ts +1 -0
  267. package/corpus/templates/content/server/lib/document-version-context.ts +67 -0
  268. package/corpus/templates/content/server/plugins/agent-chat.ts +155 -0
  269. package/corpus/templates/content/server/plugins/auth.ts +1 -0
  270. package/corpus/templates/content/server/plugins/core-routes.ts +3 -2
  271. package/corpus/templates/content/server/plugins/db.ts +5 -0
  272. package/corpus/templates/content/shared/api.ts +6 -4
  273. package/corpus/templates/crm/.agents/skills/frontend-design/SKILL.md +4 -0
  274. package/corpus/templates/crm/.agents/skills/secrets/SKILL.md +47 -0
  275. package/corpus/templates/crm/actions/list-crm-dashboard-revisions.ts +1 -1
  276. package/corpus/templates/crm/agent-native.app-skill.json +1 -1
  277. package/corpus/templates/crm/app/components/layout/CrmCommandMenu.tsx +1 -1
  278. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +36 -1
  279. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +3 -3
  280. package/corpus/templates/crm/app/root.tsx +28 -7
  281. package/corpus/templates/crm/app/routes/_index.tsx +28 -18
  282. package/corpus/templates/crm/app/routes/home.tsx +27 -0
  283. package/corpus/templates/crm/app/routes/setup.tsx +2 -2
  284. package/corpus/templates/crm/app/routes.ts +1 -0
  285. package/corpus/templates/crm/public/manifest.json +1 -1
  286. package/corpus/templates/crm/server/plugins/agent-chat.ts +81 -0
  287. package/corpus/templates/crm/server/plugins/auth.ts +1 -0
  288. package/corpus/templates/crm/server/plugins/core-routes.ts +2 -1
  289. package/corpus/templates/crm/server/plugins/db.ts +7 -1
  290. package/corpus/templates/crm/shared/crm-navigation.ts +3 -2
  291. package/corpus/templates/design/.agents/skills/design-generation/SKILL.md +13 -0
  292. package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +4 -0
  293. package/corpus/templates/design/.agents/skills/secrets/SKILL.md +47 -0
  294. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +22 -10
  295. package/corpus/templates/design/AGENTS.md +1 -1
  296. package/corpus/templates/design/actions/add-breakpoint.ts +3 -1
  297. package/corpus/templates/design/actions/add-fusion-screens.ts +2 -0
  298. package/corpus/templates/design/actions/add-localhost-screens.ts +16 -11
  299. package/corpus/templates/design/actions/apply-a11y-fix.ts +6 -8
  300. package/corpus/templates/design/actions/apply-component-prop-edit.ts +3 -1
  301. package/corpus/templates/design/actions/apply-design-token-edit.ts +3 -1
  302. package/corpus/templates/design/actions/apply-motion-edit.ts +18 -13
  303. package/corpus/templates/design/actions/apply-shader-fill.ts +3 -1
  304. package/corpus/templates/design/actions/apply-source-edit.ts +6 -1
  305. package/corpus/templates/design/actions/apply-tweaks.ts +3 -1
  306. package/corpus/templates/design/actions/apply-visual-edit.ts +14 -9
  307. package/corpus/templates/design/actions/clone-creative-context-design.ts +6 -1
  308. package/corpus/templates/design/actions/create-component.ts +3 -1
  309. package/corpus/templates/design/actions/create-file.ts +3 -1
  310. package/corpus/templates/design/actions/delete-file.ts +3 -1
  311. package/corpus/templates/design/actions/detach-component-instance.ts +3 -1
  312. package/corpus/templates/design/actions/edit-design.ts +16 -11
  313. package/corpus/templates/design/actions/generate-design.ts +19 -14
  314. package/corpus/templates/design/actions/get-design-branch-diff.ts +26 -31
  315. package/corpus/templates/design/actions/get-design-review.ts +25 -31
  316. package/corpus/templates/design/actions/get-design-system-index-status.ts +55 -0
  317. package/corpus/templates/design/actions/get-design-system.ts +1 -1
  318. package/corpus/templates/design/actions/hydrate-figma-paste-images.ts +3 -1
  319. package/corpus/templates/design/actions/import-design-source.ts +16 -9
  320. package/corpus/templates/design/actions/import-design-tokens.ts +3 -1
  321. package/corpus/templates/design/actions/import-figma-clipboard.ts +28 -16
  322. package/corpus/templates/design/actions/import-figma-frame.ts +3 -1
  323. package/corpus/templates/design/actions/insert-asset.ts +3 -1
  324. package/corpus/templates/design/actions/insert-design-native-asset.ts +3 -1
  325. package/corpus/templates/design/actions/insert-figma-library-asset.ts +3 -1
  326. package/corpus/templates/design/actions/list-design-versions.ts +23 -0
  327. package/corpus/templates/design/actions/migrate-board-objects-to-file.ts +3 -1
  328. package/corpus/templates/design/actions/open-visual-edit.ts +23 -20
  329. package/corpus/templates/design/actions/present-design-variants.ts +7 -2
  330. package/corpus/templates/design/actions/refresh-design-system-with-builder.ts +66 -10
  331. package/corpus/templates/design/actions/remove-breakpoint.ts +3 -1
  332. package/corpus/templates/design/actions/remove-motion-timeline.ts +3 -1
  333. package/corpus/templates/design/actions/restore-design-version.ts +16 -0
  334. package/corpus/templates/design/actions/set-layout-grid.ts +94 -0
  335. package/corpus/templates/design/actions/swap-component-instance.ts +6 -1
  336. package/corpus/templates/design/actions/update-design.ts +16 -11
  337. package/corpus/templates/design/actions/update-file.ts +2 -0
  338. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +25 -0
  339. package/corpus/templates/design/app/components/design/EditPanel.tsx +36 -8
  340. package/corpus/templates/design/app/components/design/LayersPanel.tsx +6 -6
  341. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +185 -29
  342. package/corpus/templates/design/app/components/design/ReviewCommentsPanel.tsx +4 -4
  343. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +1 -1
  344. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +35 -10
  345. package/corpus/templates/design/app/components/design/canvas-primitive-style.ts +16 -9
  346. package/corpus/templates/design/app/components/design/edit-panel/component-section.tsx +51 -21
  347. package/corpus/templates/design/app/components/design/edit-panel/effects-properties.tsx +18 -17
  348. package/corpus/templates/design/app/components/design/edit-panel/field-primitives.tsx +6 -1
  349. package/corpus/templates/design/app/components/design/edit-panel/frame-presets-panel.tsx +3 -3
  350. package/corpus/templates/design/app/components/design/edit-panel/layout-grid-properties.tsx +88 -0
  351. package/corpus/templates/design/app/components/design/edit-panel/panel-primitives.tsx +5 -2
  352. package/corpus/templates/design/app/components/design/edit-panel/position-layout-properties.tsx +8 -4
  353. package/corpus/templates/design/app/components/design/edit-panel/typography-helpers.ts +8 -103
  354. package/corpus/templates/design/app/components/design/edit-panel/typography-properties.tsx +68 -83
  355. package/corpus/templates/design/app/components/design/editor/MakeRealDialog.tsx +35 -10
  356. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +29 -24
  357. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +6 -0
  358. package/corpus/templates/design/app/components/design/inspector/GlslShaderPanel.tsx +72 -71
  359. package/corpus/templates/design/app/components/design/inspector/InspectorControlPopover.tsx +1 -1
  360. package/corpus/templates/design/app/components/design/keyboard-shortcuts.ts +9 -0
  361. package/corpus/templates/design/app/components/design/multi-screen/types.ts +8 -0
  362. package/corpus/templates/design/app/components/layout/Layout.tsx +32 -0
  363. package/corpus/templates/design/app/components/layout/Sidebar.tsx +8 -21
  364. package/corpus/templates/design/app/global.css +72 -1
  365. package/corpus/templates/design/app/hooks/use-navigation-state.ts +1 -1
  366. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +32 -1
  367. package/corpus/templates/design/app/i18n-data.ts +116 -12
  368. package/corpus/templates/design/app/i18n-keyboard-shortcuts.ts +3 -1
  369. package/corpus/templates/design/app/lib/design-system-data.ts +36 -0
  370. package/corpus/templates/design/app/pages/DesignEditor.tsx +170 -34
  371. package/corpus/templates/design/app/pages/DesignSystems.tsx +126 -11
  372. package/corpus/templates/design/app/pages/Index.tsx +15 -7
  373. package/corpus/templates/design/app/pages/NotFound.tsx +1 -1
  374. package/corpus/templates/design/app/pages/Templates.tsx +18 -3
  375. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -1
  376. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +3 -3
  377. package/corpus/templates/design/app/pages/design-editor/commands/README.md +1 -0
  378. package/corpus/templates/design/app/pages/design-editor/commands/geometry-commit.ts +2 -1
  379. package/corpus/templates/design/app/pages/design-editor/commands/set-layout-grid.ts +66 -0
  380. package/corpus/templates/design/app/pages/design-editor/design-data-geometry-utils.ts +5 -0
  381. package/corpus/templates/design/app/pages/design-editor/effects/publish-agent-selection-context.ts +9 -1
  382. package/corpus/templates/design/app/pages/design-editor/effects/resume-pending-generation.ts +39 -9
  383. package/corpus/templates/design/app/pages/design-editor/generation-prompt-directives.ts +31 -2
  384. package/corpus/templates/design/app/pages/design-editor/geometry-persistence.ts +26 -0
  385. package/corpus/templates/design/app/pages/design-editor/intake-question-topics.ts +335 -0
  386. package/corpus/templates/design/app/pages/design-editor/nudge-intent.ts +8 -1
  387. package/corpus/templates/design/app/root.tsx +12 -2
  388. package/corpus/templates/design/app/routes/_index.tsx +14 -1
  389. package/corpus/templates/design/app/routes/home.tsx +21 -0
  390. package/corpus/templates/design/changelog/2026-08-21-builder-design-system-imports-reconcile-after-indexing.md +1 -1
  391. package/corpus/templates/design/changelog/2026-08-28-frames-can-carry-an-8px-layout-grid-that-positions-snap-to.md +6 -0
  392. package/corpus/templates/design/changelog/2026-08-28-x-and-y-are-always-whole-numbers.md +6 -0
  393. package/corpus/templates/design/public/manifest.json +1 -1
  394. package/corpus/templates/design/server/db/schema.ts +2 -0
  395. package/corpus/templates/design/server/handlers/design-system-builder-link.ts +84 -0
  396. package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +9 -1
  397. package/corpus/templates/design/server/lib/design-versions.ts +1017 -0
  398. package/corpus/templates/design/server/plugins/agent-chat.ts +144 -0
  399. package/corpus/templates/design/server/plugins/auth.ts +1 -1
  400. package/corpus/templates/design/server/plugins/core-routes.ts +3 -2
  401. package/corpus/templates/design/server/plugins/db.ts +7 -0
  402. package/corpus/templates/design/server/routes/api/design-system-builder-link.get.ts +1 -0
  403. package/corpus/templates/design/shared/canvas-math.ts +106 -14
  404. package/corpus/templates/design/shared/layout-grid.ts +80 -0
  405. package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +4 -0
  406. package/corpus/templates/dispatch/.agents/skills/secrets/SKILL.md +47 -0
  407. package/corpus/templates/dispatch/AGENTS.md +11 -13
  408. package/corpus/templates/dispatch/actions/list-workspace-connections.ts +10 -5
  409. package/corpus/templates/dispatch/app/i18n-data.ts +120 -0
  410. package/corpus/templates/dispatch/app/root.tsx +11 -1
  411. package/corpus/templates/dispatch/app/routes/_index.tsx +34 -7
  412. package/corpus/templates/dispatch/app/routes/home.tsx +7 -0
  413. package/corpus/templates/dispatch/package.json +1 -0
  414. package/corpus/templates/dispatch/public/manifest.json +1 -1
  415. package/corpus/templates/factory/.agents/skills/factory-graphs/SKILL.md +11 -2
  416. package/corpus/templates/factory/.agents/skills/frontend-design/SKILL.md +4 -0
  417. package/corpus/templates/factory/.agents/skills/secrets/SKILL.md +47 -0
  418. package/corpus/templates/factory/.env.example +2 -14
  419. package/corpus/templates/factory/AGENTS.md +12 -11
  420. package/corpus/templates/factory/README.md +15 -17
  421. package/corpus/templates/factory/actions/{babysit-agent-native-pull-request.ts → babysit-factory-pull-request.ts} +125 -88
  422. package/corpus/templates/factory/actions/create-factory-automation.ts +161 -0
  423. package/corpus/templates/factory/actions/create-factory.ts +4 -124
  424. package/corpus/templates/factory/actions/delete-factory.ts +11 -23
  425. package/corpus/templates/factory/actions/{start-builder-for-item.ts → dispatch-factory-item.ts} +169 -57
  426. package/corpus/templates/factory/actions/get-slack-feedback-context.ts +30 -10
  427. package/corpus/templates/factory/actions/get-triage-config.ts +22 -0
  428. package/corpus/templates/factory/actions/get-triage-item.ts +49 -2
  429. package/corpus/templates/factory/actions/{govern-agent-native-pull-request.ts → govern-factory-pull-request.ts} +95 -112
  430. package/corpus/templates/factory/actions/ingest-github-observation.ts +9 -2
  431. package/corpus/templates/factory/actions/list-factory-audit.ts +85 -12
  432. package/corpus/templates/factory/actions/list-factory-automation-templates.ts +56 -0
  433. package/corpus/templates/factory/actions/list-factory-automations.ts +36 -3
  434. package/corpus/templates/factory/actions/list-factory-graph-versions.ts +37 -10
  435. package/corpus/templates/factory/actions/list-triage-items.ts +120 -15
  436. package/corpus/templates/factory/actions/poll-github-sources.ts +102 -58
  437. package/corpus/templates/factory/actions/poll-sentry-errors.ts +73 -36
  438. package/corpus/templates/factory/actions/poll-slack-channel.ts +112 -28
  439. package/corpus/templates/factory/actions/{babysit-pull-request.ts → propose-pr-babysit-status.ts} +9 -47
  440. package/corpus/templates/factory/actions/reconcile-triage-run.ts +1 -1
  441. package/corpus/templates/factory/actions/save-factory-automation.ts +131 -33
  442. package/corpus/templates/factory/actions/save-factory-graph.ts +31 -8
  443. package/corpus/templates/factory/actions/save-triage-config.ts +7 -27
  444. package/corpus/templates/factory/actions/save-triage-rule.ts +1 -1
  445. package/corpus/templates/factory/app/components/factory/CreateFactoryAutomationView.tsx +258 -0
  446. package/corpus/templates/factory/app/components/factory/FactoryAuditView.tsx +349 -106
  447. package/corpus/templates/factory/app/components/factory/FactoryAutomationFields.tsx +614 -0
  448. package/corpus/templates/factory/app/components/factory/FactoryInboxView.tsx +1136 -0
  449. package/corpus/templates/factory/app/components/factory/FactoryInspector.tsx +7 -14
  450. package/corpus/templates/factory/app/components/factory/FactorySettingsView.tsx +4 -223
  451. package/corpus/templates/factory/app/components/factory/NewFactoryForm.tsx +10 -205
  452. package/corpus/templates/factory/app/components/factory/SlackMrkdwn.tsx +100 -0
  453. package/corpus/templates/factory/app/components/factory/audit-filters.ts +30 -0
  454. package/corpus/templates/factory/app/components/factory/factory-automation-form.ts +120 -0
  455. package/corpus/templates/factory/app/components/factory/inbox-filters.ts +84 -0
  456. package/corpus/templates/factory/app/components/factory/inbox-source-url.ts +23 -0
  457. package/corpus/templates/factory/app/components/factory/slack-emoji.ts +165 -0
  458. package/corpus/templates/factory/app/components/factory/slack-mrkdwn.ts +128 -0
  459. package/corpus/templates/factory/app/components/layout/Header.tsx +1 -1
  460. package/corpus/templates/factory/app/components/layout/Layout.tsx +63 -6
  461. package/corpus/templates/factory/app/components/layout/Sidebar.tsx +13 -26
  462. package/corpus/templates/factory/app/components/triage/triage-status-pill.tsx +63 -14
  463. package/corpus/templates/factory/app/global.css +106 -0
  464. package/corpus/templates/factory/app/hooks/use-navigation-state.ts +16 -10
  465. package/corpus/templates/factory/app/i18n/en-US.ts +154 -7
  466. package/corpus/templates/factory/app/lib/factory-tab-params.ts +59 -0
  467. package/corpus/templates/factory/app/lib/safe-http-url.ts +8 -0
  468. package/corpus/templates/factory/app/root.tsx +16 -3
  469. package/corpus/templates/factory/app/routes/_index.tsx +27 -5
  470. package/corpus/templates/factory/app/routes/factory.tsx +325 -733
  471. package/corpus/templates/factory/app/routes/home.tsx +13 -0
  472. package/corpus/templates/factory/app/routes/new-factory.tsx +3 -5
  473. package/corpus/templates/factory/changelog/2026-08-26-inbox-full-screen-thread.md +6 -0
  474. package/corpus/templates/factory/changelog/2026-08-26-inbox-thread-and-audit-labels.md +6 -0
  475. package/corpus/templates/factory/changelog/2026-08-27-audit-run-list-stacks.md +6 -0
  476. package/corpus/templates/factory/changelog/2026-08-27-audit-run-names-wrap.md +6 -0
  477. package/corpus/templates/factory/changelog/2026-08-27-factory-opens-on-inbox.md +6 -0
  478. package/corpus/templates/factory/changelog/2026-08-27-github-repository-url.md +6 -0
  479. package/corpus/templates/factory/changelog/2026-08-27-inbox-filters.md +6 -0
  480. package/corpus/templates/factory/changelog/2026-08-27-polling-does-not-enable-automations.md +6 -0
  481. package/corpus/templates/factory/changelog/2026-08-27-pr-babysit-can-poll-github.md +6 -0
  482. package/corpus/templates/factory/changelog/2026-08-28-factory-automations-use-workspace-connections.md +6 -0
  483. package/corpus/templates/factory/changelog/2026-08-28-inbox-approve-and-start-removed.md +6 -0
  484. package/corpus/templates/factory/changelog/2026-08-28-pr-babysit-audit-shows-decisions.md +6 -0
  485. package/corpus/templates/factory/changelog/2026-08-28-pr-babysit-reviews-next-github-prs.md +6 -0
  486. package/corpus/templates/factory/changelog/2026-08-28-pr-babysit-sticky-out-of-scope.md +6 -0
  487. package/corpus/templates/factory/changelog/2026-08-28-pr-babysit-uses-github-evidence.md +6 -0
  488. package/corpus/templates/factory/changelog/2026-08-29-audit-filters-pagination-scroll.md +6 -0
  489. package/corpus/templates/factory/changelog/2026-08-29-create-factory-automations.md +6 -0
  490. package/corpus/templates/factory/changelog/2026-08-29-dispatch-reaction-argument.md +6 -0
  491. package/corpus/templates/factory/changelog/2026-08-29-factory-action-names-match-behavior.md +6 -0
  492. package/corpus/templates/factory/public/manifest.json +1 -1
  493. package/corpus/templates/factory/server/connectors/slack.ts +8 -6
  494. package/corpus/templates/factory/server/db/schema.ts +23 -0
  495. package/corpus/templates/factory/server/lib/audit-cursor.ts +44 -0
  496. package/corpus/templates/factory/server/lib/factory-action-names.ts +15 -0
  497. package/corpus/templates/factory/server/lib/factory-audit-report.ts +29 -9
  498. package/corpus/templates/factory/server/lib/factory-automation-caller.ts +38 -0
  499. package/corpus/templates/factory/server/lib/factory-automation-config.ts +543 -0
  500. package/corpus/templates/factory/server/lib/factory-automation-plan.ts +0 -48
  501. package/corpus/templates/factory/server/lib/factory-automation-repair.ts +2 -18
  502. package/corpus/templates/factory/server/lib/factory-poll-cursors.ts +98 -0
  503. package/corpus/templates/factory/server/lib/factory-scope.ts +8 -0
  504. package/corpus/templates/factory/server/lib/github-repository.ts +104 -0
  505. package/corpus/templates/factory/server/lib/inbox-cursor.ts +34 -0
  506. package/corpus/templates/factory/server/lib/pr-babysit-prompt.ts +33 -0
  507. package/corpus/templates/factory/server/lib/require-factory-automation.ts +58 -17
  508. package/corpus/templates/factory/server/lib/safe-http-url.ts +8 -0
  509. package/corpus/templates/factory/server/lib/slack-feedback-prompt.ts +19 -10
  510. package/corpus/templates/factory/server/lib/source-reaction.ts +37 -0
  511. package/corpus/templates/factory/server/plugins/agent-chat.ts +18 -22
  512. package/corpus/templates/factory/server/plugins/auth.ts +1 -0
  513. package/corpus/templates/factory/server/plugins/factory-migrations.ts +26 -0
  514. package/corpus/templates/factory/server/plugins/factory-scheduler-job.ts +277 -164
  515. package/corpus/templates/factory/server/plugins/integrations.ts +5 -7
  516. package/corpus/templates/factory/server/triage/github-client.ts +274 -3
  517. package/corpus/templates/factory/server/triage/github-ingestion.ts +3 -1
  518. package/corpus/templates/factory/server/triage/metadata.ts +12 -0
  519. package/corpus/templates/factory/server/triage/pr-babysit.ts +22 -21
  520. package/corpus/templates/factory/server/triage/review-skill-alignment.ts +11 -11
  521. package/corpus/templates/factory/server/triage/review-state.ts +39 -0
  522. package/corpus/templates/factory/server/triage/slack-client.ts +14 -6
  523. package/corpus/templates/factory/server/triage/slack-poller.ts +34 -65
  524. package/corpus/templates/factory/server/triage/slack-user-labels.ts +126 -0
  525. package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +4 -0
  526. package/corpus/templates/forms/.agents/skills/secrets/SKILL.md +47 -0
  527. package/corpus/templates/forms/AGENTS.md +4 -3
  528. package/corpus/templates/forms/actions/response-insights.ts +4 -4
  529. package/corpus/templates/forms/actions/retry-response-deliveries.ts +26 -0
  530. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +8 -33
  531. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +1 -1
  532. package/corpus/templates/forms/app/lib/route-prewarm.ts +1 -1
  533. package/corpus/templates/forms/app/root.tsx +3 -2
  534. package/corpus/templates/forms/app/routes/_app.home.tsx +47 -0
  535. package/corpus/templates/forms/app/routes/_app.tsx +2 -1
  536. package/corpus/templates/forms/app/routes/_index.tsx +10 -23
  537. package/corpus/templates/forms/public/manifest.json +1 -1
  538. package/corpus/templates/forms/server/db/schema.ts +64 -17
  539. package/corpus/templates/forms/server/handlers/submissions.ts +1022 -94
  540. package/corpus/templates/forms/server/lib/integrations.ts +100 -33
  541. package/corpus/templates/forms/server/middleware/00-public-cors.ts +1 -1
  542. package/corpus/templates/forms/server/plugins/auth.ts +1 -0
  543. package/corpus/templates/forms/server/plugins/core-routes.ts +1 -0
  544. package/corpus/templates/forms/server/plugins/db.ts +40 -0
  545. package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +4 -0
  546. package/corpus/templates/macros/.agents/skills/secrets/SKILL.md +47 -0
  547. package/corpus/templates/macros/actions/view-screen.ts +1 -1
  548. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +9 -21
  549. package/corpus/templates/macros/app/components/layout/Header.tsx +1 -1
  550. package/corpus/templates/macros/app/root.tsx +22 -8
  551. package/corpus/templates/macros/app/routes/_index.tsx +16 -291
  552. package/corpus/templates/macros/app/routes/home.tsx +312 -0
  553. package/corpus/templates/macros/server/plugins/auth.ts +9 -7
  554. package/corpus/templates/macros/server/plugins/core-routes.ts +1 -0
  555. package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +4 -0
  556. package/corpus/templates/mail/.agents/skills/inbox-automations/SKILL.md +13 -2
  557. package/corpus/templates/mail/.agents/skills/inbox-reads-and-triage/SKILL.md +1 -1
  558. package/corpus/templates/mail/.agents/skills/secrets/SKILL.md +47 -0
  559. package/corpus/templates/mail/AGENTS.md +5 -2
  560. package/corpus/templates/mail/actions/apply-ai-filter.ts +294 -0
  561. package/corpus/templates/mail/actions/create-automation.ts +1 -0
  562. package/corpus/templates/mail/actions/get-ai-filter.ts +19 -0
  563. package/corpus/templates/mail/actions/manage-automations.ts +162 -157
  564. package/corpus/templates/mail/actions/manage-email-rules.ts +3 -0
  565. package/corpus/templates/mail/actions/navigate.ts +1 -1
  566. package/corpus/templates/mail/actions/update-automation.ts +1 -0
  567. package/corpus/templates/mail/actions/update-mail-preferences.ts +1 -0
  568. package/corpus/templates/mail/app/components/email/AiFilterDialog.tsx +127 -0
  569. package/corpus/templates/mail/app/components/email/EmailList.tsx +63 -0
  570. package/corpus/templates/mail/app/components/email/EmailThread.tsx +95 -0
  571. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +35 -3
  572. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +17 -22
  573. package/corpus/templates/mail/app/components/settings/AiFilterSection.tsx +401 -0
  574. package/corpus/templates/mail/app/hooks/use-ai-filter.ts +48 -0
  575. package/corpus/templates/mail/app/hooks/use-automations.ts +1 -0
  576. package/corpus/templates/mail/app/hooks/use-emails.ts +11 -3
  577. package/corpus/templates/mail/app/i18n/en-US.ts +55 -0
  578. package/corpus/templates/mail/app/lib/automation-visibility.ts +17 -0
  579. package/corpus/templates/mail/app/pages/InboxPage.tsx +5 -2
  580. package/corpus/templates/mail/app/pages/SettingsPage.tsx +16 -8
  581. package/corpus/templates/mail/app/pages/inbox-zero.ts +1 -2
  582. package/corpus/templates/mail/app/root.tsx +20 -8
  583. package/corpus/templates/mail/app/routes/_index.tsx +16 -55
  584. package/corpus/templates/mail/app/routes/home.tsx +71 -0
  585. package/corpus/templates/mail/changelog/2026-08-28-mail-settings-show-chat-created-automations.md +6 -0
  586. package/corpus/templates/mail/public/manifest.json +1 -1
  587. package/corpus/templates/mail/server/db/schema.ts +3 -0
  588. package/corpus/templates/mail/server/handlers/emails.ts +34 -11
  589. package/corpus/templates/mail/server/handlers/google-auth.ts +1 -1
  590. package/corpus/templates/mail/server/lib/ai-filter.ts +103 -0
  591. package/corpus/templates/mail/server/lib/automation-actions.ts +14 -9
  592. package/corpus/templates/mail/server/lib/automation-engine.ts +142 -18
  593. package/corpus/templates/mail/server/lib/automations.ts +9 -0
  594. package/corpus/templates/mail/server/lib/email-state.ts +7 -2
  595. package/corpus/templates/mail/server/lib/gmail-query.ts +10 -0
  596. package/corpus/templates/mail/server/lib/google-auth.ts +5 -8
  597. package/corpus/templates/mail/server/lib/jobs.ts +1 -5
  598. package/corpus/templates/mail/server/onboarding.ts +2 -2
  599. package/corpus/templates/mail/server/plugins/agent-chat.ts +5 -2
  600. package/corpus/templates/mail/server/plugins/auth.ts +1 -0
  601. package/corpus/templates/mail/server/plugins/core-routes.ts +4 -1
  602. package/corpus/templates/mail/server/plugins/db.ts +6 -0
  603. package/corpus/templates/mail/server/routes/api/attachments.get.ts +1 -5
  604. package/corpus/templates/mail/shared/ai-filter.ts +74 -0
  605. package/corpus/templates/mail/shared/types.ts +2 -0
  606. package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +4 -0
  607. package/corpus/templates/plan/.agents/skills/secrets/SKILL.md +47 -0
  608. package/corpus/templates/plan/actions/list-plan-versions.ts +20 -5
  609. package/corpus/templates/plan/agent-native.json +1 -4
  610. package/corpus/templates/plan/app/components/editor/PlanDocumentEditor.tsx +5 -2
  611. package/corpus/templates/plan/app/components/layout/Layout.tsx +41 -1
  612. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +4 -16
  613. package/corpus/templates/plan/app/components/plan/PlanMarkdownEditor.tsx +7 -4
  614. package/corpus/templates/plan/app/components/plan/wireframe/Wireframe.tsx +1 -1
  615. package/corpus/templates/plan/app/components/plan/wireframe/html-artboard.css +15 -0
  616. package/corpus/templates/plan/app/components/plan/wireframe/kit/plan-wireframe-tokens.css +0 -15
  617. package/corpus/templates/plan/app/components/plan/wireframe/kit/primitives.tsx +2 -2
  618. package/corpus/templates/plan/app/hooks/use-plan-presence.ts +20 -10
  619. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  620. package/corpus/templates/plan/app/root.tsx +13 -7
  621. package/corpus/templates/plan/app/routes/_index.tsx +31 -6
  622. package/corpus/templates/plan/app/routes/chat.tsx +3 -6
  623. package/corpus/templates/plan/app/routes/home.tsx +11 -0
  624. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +2 -6
  625. package/corpus/templates/plan/app/routes/plans.$id.tsx +3 -6
  626. package/corpus/templates/plan/app/routes/plans.tsx +3 -6
  627. package/corpus/templates/plan/app/routes/recaps.$id.tsx +3 -6
  628. package/corpus/templates/plan/app/routes/recaps.tsx +3 -6
  629. package/corpus/templates/plan/changelog/2026-08-28-plan-loading-skeletons-use-a-softer-whole-surface.md +6 -0
  630. package/corpus/templates/plan/changelog/2026-08-29-plan-loading-shine-is-more-subtle.md +6 -0
  631. package/corpus/templates/plan/public/manifest.json +1 -1
  632. package/corpus/templates/plan/server/db/schema.ts +1 -0
  633. package/corpus/templates/plan/server/lib/plan-versions.ts +57 -0
  634. package/corpus/templates/plan/server/plugins/agent-chat.ts +83 -0
  635. package/corpus/templates/plan/server/plugins/core-routes.ts +1 -0
  636. package/corpus/templates/plan/server/plugins/db.ts +10 -0
  637. package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +4 -0
  638. package/corpus/templates/slides/.agents/skills/secrets/SKILL.md +47 -0
  639. package/corpus/templates/slides/CHANGELOG.md +9 -0
  640. package/corpus/templates/slides/actions/_deck-write.ts +65 -0
  641. package/corpus/templates/slides/actions/add-slide.ts +44 -24
  642. package/corpus/templates/slides/actions/clone-context-slide.ts +22 -12
  643. package/corpus/templates/slides/actions/create-deck.ts +36 -21
  644. package/corpus/templates/slides/actions/delete-design-system.ts +10 -3
  645. package/corpus/templates/slides/actions/import-file.ts +9 -3
  646. package/corpus/templates/slides/actions/import-pptx.ts +11 -4
  647. package/corpus/templates/slides/actions/list-deck-versions.ts +20 -8
  648. package/corpus/templates/slides/actions/patch-deck.ts +29 -3
  649. package/corpus/templates/slides/actions/restore-deck-version.ts +37 -22
  650. package/corpus/templates/slides/actions/save-deck.ts +35 -22
  651. package/corpus/templates/slides/actions/update-deck-aspect-ratio.ts +31 -16
  652. package/corpus/templates/slides/actions/update-slide.ts +250 -37
  653. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +10 -4
  654. package/corpus/templates/slides/app/components/editor/EditorActionCluster.tsx +2 -2
  655. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +7 -8
  656. package/corpus/templates/slides/app/components/editor/ImageOverlay.tsx +78 -12
  657. package/corpus/templates/slides/app/components/editor/SlideContextToolbar.tsx +42 -4
  658. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +381 -53
  659. package/corpus/templates/slides/app/components/editor/SlidesLayersPanel.tsx +20 -34
  660. package/corpus/templates/slides/app/components/editor/slide-style.ts +5 -0
  661. package/corpus/templates/slides/app/components/editor/style-clipboard.ts +2 -0
  662. package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +18 -2
  663. package/corpus/templates/slides/app/components/layout/Header.tsx +1 -1
  664. package/corpus/templates/slides/app/components/layout/Layout.tsx +39 -10
  665. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +7 -20
  666. package/corpus/templates/slides/app/components/presentation/PresenterView.tsx +35 -15
  667. package/corpus/templates/slides/app/components/presentation/present-channel.ts +12 -0
  668. package/corpus/templates/slides/app/global.css +45 -13
  669. package/corpus/templates/slides/app/hooks/use-navigation-state.ts +1 -1
  670. package/corpus/templates/slides/app/i18n/en-US.ts +11 -0
  671. package/corpus/templates/slides/app/lib/sanitize-slide-html.ts +133 -5
  672. package/corpus/templates/slides/app/lib/slide-image-replacement.ts +741 -17
  673. package/corpus/templates/slides/app/lib/validate-native-slide-html.ts +1 -0
  674. package/corpus/templates/slides/app/pages/DeckEditor.tsx +288 -95
  675. package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
  676. package/corpus/templates/slides/app/pages/Index.tsx +7 -7
  677. package/corpus/templates/slides/app/pages/NotFound.tsx +1 -1
  678. package/corpus/templates/slides/app/pages/SharedPresentation.tsx +1 -1
  679. package/corpus/templates/slides/app/root.tsx +4 -23
  680. package/corpus/templates/slides/app/routes/_index.tsx +18 -7
  681. package/corpus/templates/slides/app/routes/home.tsx +26 -0
  682. package/corpus/templates/slides/changelog/2026-08-27-image-fit-controls-apply-cover-crops-and-position.md +6 -0
  683. package/corpus/templates/slides/changelog/2026-08-28-image-edits-persist-while-dropped-images-finish-uploading.md +6 -0
  684. package/corpus/templates/slides/changelog/2026-08-28-shared-slides-with-a-style-block-render-again.md +6 -0
  685. package/corpus/templates/slides/changelog/2026-08-28-slides-loading-skeletons-use-a-softer-whole-surface.md +6 -0
  686. package/corpus/templates/slides/changelog/2026-08-28-standard-empty-home-layout.md +6 -0
  687. package/corpus/templates/slides/changelog/2026-08-29-chat-imports-attached-decks-on-request.md +6 -0
  688. package/corpus/templates/slides/changelog/2026-08-29-slides-loading-shine-is-more-subtle.md +6 -0
  689. package/corpus/templates/slides/package.json +3 -0
  690. package/corpus/templates/slides/public/manifest.json +1 -1
  691. package/corpus/templates/slides/server/db/schema.ts +1 -0
  692. package/corpus/templates/slides/server/handlers/google-docs-auth.ts +1 -1
  693. package/corpus/templates/slides/server/lib/chat-attachments.ts +102 -7
  694. package/corpus/templates/slides/server/lib/deck-versions.ts +77 -2
  695. package/corpus/templates/slides/server/plugins/agent-chat.ts +95 -1
  696. package/corpus/templates/slides/server/plugins/auth.ts +1 -0
  697. package/corpus/templates/slides/server/plugins/core-routes.ts +8 -1
  698. package/corpus/templates/slides/server/plugins/db.ts +5 -0
  699. package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +4 -0
  700. package/corpus/templates/tasks/.agents/skills/secrets/SKILL.md +47 -0
  701. package/corpus/templates/tasks/AGENTS.md +2 -1
  702. package/corpus/templates/tasks/README.md +3 -1
  703. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +5 -18
  704. package/corpus/templates/tasks/app/root.tsx +19 -3
  705. package/corpus/templates/tasks/app/routes/_index.tsx +28 -14
  706. package/corpus/templates/tasks/app/routes/home.tsx +24 -0
  707. package/corpus/templates/tasks/public/manifest.json +1 -1
  708. package/corpus/templates/tasks/server/plugins/auth.ts +1 -0
  709. package/dist/a2a/client.d.ts +4 -0
  710. package/dist/a2a/client.js +15 -2
  711. package/dist/action.d.ts +3 -1
  712. package/dist/agent/engine/ai-sdk-engine.js +13 -9
  713. package/dist/agent/engine/anthropic-engine.js +2 -1
  714. package/dist/agent/engine/builder-engine.js +23 -5
  715. package/dist/agent/engine/limit-provider-tools.d.ts +3 -0
  716. package/dist/agent/engine/limit-provider-tools.js +23 -0
  717. package/dist/agent/engine/openai-compatible-endpoint.d.ts +2 -0
  718. package/dist/agent/engine/openai-compatible-endpoint.js +4 -0
  719. package/dist/agent/engine/output-tokens.d.ts +12 -6
  720. package/dist/agent/engine/output-tokens.js +42 -16
  721. package/dist/agent/engine/registry.d.ts +1 -1
  722. package/dist/agent/engine/registry.js +69 -16
  723. package/dist/agent/production-agent.js +107 -13
  724. package/dist/agent/run-manager.d.ts +9 -0
  725. package/dist/agent/run-manager.js +35 -6
  726. package/dist/agent/thread-data-builder.d.ts +6 -1
  727. package/dist/agent/thread-data-builder.js +74 -17
  728. package/dist/agent/types.d.ts +2 -0
  729. package/dist/app-config/agent.d.ts +4 -0
  730. package/dist/app-config/agent.js +44 -0
  731. package/dist/app-config/integrations.d.ts +1 -0
  732. package/dist/app-config/integrations.js +8 -0
  733. package/dist/app-config/migration.d.ts +1 -0
  734. package/dist/app-config/migration.js +4 -0
  735. package/dist/app-config/observability.d.ts +4 -1
  736. package/dist/app-config/observability.js +25 -1
  737. package/dist/app-config/schema.d.ts +9 -0
  738. package/dist/app-config/store.js +1 -0
  739. package/dist/client/AgentAskPopover.d.ts +2 -1
  740. package/dist/client/AgentAskPopover.js +2 -2
  741. package/dist/client/AgentPanel.d.ts +35 -10
  742. package/dist/client/AgentPanel.js +136 -119
  743. package/dist/client/AssistantChat.d.ts +9 -2
  744. package/dist/client/AssistantChat.js +166 -41
  745. package/dist/client/ConnectBuilderCard.js +3 -1
  746. package/dist/client/DefaultSpinner.d.ts +13 -1
  747. package/dist/client/DefaultSpinner.js +52 -46
  748. package/dist/client/FeedbackButton.d.ts +12 -0
  749. package/dist/client/FeedbackButton.js +62 -28
  750. package/dist/client/MultiTabAssistantChat.js +30 -11
  751. package/dist/client/NewWorkspaceAppFlow.js +5 -3
  752. package/dist/client/agent-chat/index.d.ts +1 -0
  753. package/dist/client/agent-chat/index.js +1 -0
  754. package/dist/client/agent-chat-adapter.js +16 -1
  755. package/dist/client/agent-chat.d.ts +9 -0
  756. package/dist/client/agent-chat.js +6 -3
  757. package/dist/client/agent-page/AgentJobsTab.d.ts +2 -1
  758. package/dist/client/agent-page/AgentJobsTab.js +8 -5
  759. package/dist/client/agent-page/AgentTabsPage.js +2 -2
  760. package/dist/client/analytics.d.ts +2 -0
  761. package/dist/client/analytics.js +86 -15
  762. package/dist/client/app-providers.js +13 -1
  763. package/dist/client/auth/AuthPage.d.ts +87 -0
  764. package/dist/client/auth/AuthPage.js +1847 -0
  765. package/dist/client/auth/ResetPasswordPage.d.ts +9 -0
  766. package/dist/client/auth/ResetPasswordPage.js +119 -0
  767. package/dist/client/auth/entry.d.ts +1 -0
  768. package/dist/client/auth/entry.js +15 -0
  769. package/dist/client/chat/message-components.d.ts +53 -0
  770. package/dist/client/chat/message-components.js +181 -11
  771. package/dist/client/chat/run-recovery.d.ts +4 -1
  772. package/dist/client/chat/run-recovery.js +30 -12
  773. package/dist/client/chat/tool-call-display.d.ts +4 -2
  774. package/dist/client/chat/tool-call-display.js +16 -11
  775. package/dist/client/chat-first.js +8 -2
  776. package/dist/client/chat-model-groups.js +11 -1
  777. package/dist/client/collab/index.d.ts +1 -1
  778. package/dist/client/components/CodeRequiredDialog.js +22 -35
  779. package/dist/client/components/icons/AgentNativeIcon.d.ts +3 -3
  780. package/dist/client/components/icons/AgentNativeIcon.js +4 -4
  781. package/dist/client/components/ui/message-scroller.js +1 -1
  782. package/dist/client/composer/runtime-adapters.js +2 -0
  783. package/dist/client/feedback-context.d.ts +1 -0
  784. package/dist/client/feedback-context.js +3 -2
  785. package/dist/client/host-bridge.d.ts +1 -0
  786. package/dist/client/index.d.ts +2 -2
  787. package/dist/client/index.js +1 -1
  788. package/dist/client/integrations/IntegrationsPanel.d.ts +2 -1
  789. package/dist/client/integrations/IntegrationsPanel.js +3 -3
  790. package/dist/client/observability/ThumbsFeedback.js +73 -10
  791. package/dist/client/onboarding/FirstRunOnboarding.js +24 -15
  792. package/dist/client/onboarding/OnboardingPanel.js +5 -3
  793. package/dist/client/onboarding/first-run-startup-gate.js +7 -1
  794. package/dist/client/resources/McpIntegrationDialog.d.ts +2 -1
  795. package/dist/client/resources/McpIntegrationDialog.js +10 -2
  796. package/dist/client/session-replay.js +10 -0
  797. package/dist/client/settings/BuilderConnectPopover.d.ts +25 -0
  798. package/dist/client/settings/BuilderConnectPopover.js +55 -0
  799. package/dist/client/settings/SettingsPanel.js +21 -7
  800. package/dist/client/settings/SettingsTabsPage.d.ts +1 -1
  801. package/dist/client/settings/SettingsTabsPage.js +42 -25
  802. package/dist/client/settings/VoiceTranscriptionSection.js +16 -22
  803. package/dist/client/settings/index.d.ts +1 -0
  804. package/dist/client/settings/index.js +1 -0
  805. package/dist/client/settings/useBuilderStatus.d.ts +7 -0
  806. package/dist/client/settings/useBuilderStatus.js +77 -21
  807. package/dist/client/setup-connections/BuilderConnectCard.js +2 -1
  808. package/dist/client/setup-connections/useBuilderConnectCardController.d.ts +3 -1
  809. package/dist/client/setup-connections/useBuilderConnectCardController.js +4 -2
  810. package/dist/client/sse-event-processor.js +8 -0
  811. package/dist/client/terminal/AgentTerminal.js +6 -7
  812. package/dist/client/transcription/BuilderTranscriptionCta.js +17 -69
  813. package/dist/client/ui/index.d.ts +1 -0
  814. package/dist/client/ui/index.js +1 -0
  815. package/dist/client/use-chat-models.js +5 -4
  816. package/dist/client/webmcp.d.ts +4 -0
  817. package/dist/client/webmcp.js +51 -4
  818. package/dist/collab/client.d.ts +13 -0
  819. package/dist/collab/client.js +96 -21
  820. package/dist/collab/struct-routes.d.ts +1 -1
  821. package/dist/dashboard-storage/index.d.ts +1 -1
  822. package/dist/dashboard-storage/schema.d.ts +19 -0
  823. package/dist/dashboard-storage/schema.js +1 -0
  824. package/dist/dashboard-storage/store.d.ts +9 -0
  825. package/dist/dashboard-storage/store.js +93 -3
  826. package/dist/deploy/build.d.ts +19 -3
  827. package/dist/deploy/build.js +262 -10
  828. package/dist/index.browser.d.ts +1 -1
  829. package/dist/index.browser.js +1 -1
  830. package/dist/index.d.ts +1 -1
  831. package/dist/index.js +1 -1
  832. package/dist/ingestion/media.js +7 -2
  833. package/dist/integrations/config-store.js +2 -4
  834. package/dist/integrations/google-docs-poller.d.ts +1 -1
  835. package/dist/integrations/google-docs-poller.js +100 -24
  836. package/dist/integrations/plugin.js +45 -15
  837. package/dist/integrations/webhook-handler.js +2 -1
  838. package/dist/jobs/background-automation-runner.js +17 -1
  839. package/dist/localization/core-messages/ar-SA.js +19 -0
  840. package/dist/localization/core-messages/de-DE.js +19 -0
  841. package/dist/localization/core-messages/en-US.d.ts +19 -0
  842. package/dist/localization/core-messages/en-US.js +19 -0
  843. package/dist/localization/core-messages/es-ES.js +19 -0
  844. package/dist/localization/core-messages/fr-FR.js +19 -0
  845. package/dist/localization/core-messages/hi-IN.js +19 -0
  846. package/dist/localization/core-messages/ja-JP.js +19 -0
  847. package/dist/localization/core-messages/ko-KR.js +19 -0
  848. package/dist/localization/core-messages/pt-BR.js +19 -0
  849. package/dist/localization/core-messages/zh-CN.js +19 -0
  850. package/dist/localization/core-messages/zh-TW.js +19 -0
  851. package/dist/localization/core-messages.d.ts +19 -0
  852. package/dist/localization/default-messages.d.ts +11 -0
  853. package/dist/localization/default-messages.js +11 -0
  854. package/dist/mcp/analytics.d.ts +103 -0
  855. package/dist/mcp/analytics.js +204 -0
  856. package/dist/mcp/build-server.d.ts +7 -0
  857. package/dist/mcp/build-server.js +132 -35
  858. package/dist/mcp/screen-memory-stdio.d.ts +7 -7
  859. package/dist/mcp/server.js +37 -8
  860. package/dist/mcp/stdio.js +1 -0
  861. package/dist/mcp-client/errors.js +30 -10
  862. package/dist/mcp-client/oauth-routes.d.ts +7 -2
  863. package/dist/mcp-client/oauth-routes.js +12 -3
  864. package/dist/mcp-client/routes.js +2 -1
  865. package/dist/notifications/routes.d.ts +1 -1
  866. package/dist/oauth-tokens/store.js +6 -3
  867. package/dist/observability/routes.d.ts +3 -3
  868. package/dist/observability/routes.js +8 -2
  869. package/dist/observability/store.d.ts +1 -1
  870. package/dist/observability/store.js +18 -3
  871. package/dist/observability/types.d.ts +1 -0
  872. package/dist/onboarding/plugin.js +16 -4
  873. package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
  874. package/dist/provider-api/actions/provider-api.d.ts +12 -12
  875. package/dist/resources/handlers.d.ts +2 -2
  876. package/dist/secrets/routes.d.ts +9 -9
  877. package/dist/server/action-routes.d.ts +1 -6
  878. package/dist/server/action-routes.js +61 -18
  879. package/dist/server/agent-chat/plugin-options.d.ts +8 -1
  880. package/dist/server/agent-chat-plugin.d.ts +3 -0
  881. package/dist/server/agent-chat-plugin.js +49 -4
  882. package/dist/server/agent-run-context.d.ts +1 -0
  883. package/dist/server/agent-run-context.js +6 -0
  884. package/dist/server/analytics.d.ts +3 -2
  885. package/dist/server/analytics.js +18 -7
  886. package/dist/server/app-url.d.ts +5 -2
  887. package/dist/server/app-url.js +4 -3
  888. package/dist/server/auth.d.ts +25 -0
  889. package/dist/server/auth.js +168 -21
  890. package/dist/server/better-auth-instance.js +29 -4
  891. package/dist/server/better-auth-migrations.d.ts +14 -0
  892. package/dist/server/better-auth-migrations.js +5 -1
  893. package/dist/server/builder-api-auth.js +30 -6
  894. package/dist/server/builder-browser.d.ts +10 -0
  895. package/dist/server/builder-browser.js +22 -5
  896. package/dist/server/builder-design-systems.d.ts +11 -0
  897. package/dist/server/builder-design-systems.js +52 -3
  898. package/dist/server/builder-oauth.d.ts +13 -6
  899. package/dist/server/builder-oauth.js +121 -63
  900. package/dist/server/capture-error.js +3 -0
  901. package/dist/server/cookie-namespace.d.ts +1 -0
  902. package/dist/server/cookie-namespace.js +3 -0
  903. package/dist/server/core-routes-plugin.d.ts +25 -9
  904. package/dist/server/core-routes-plugin.js +180 -76
  905. package/dist/server/credential-provider.js +22 -12
  906. package/dist/server/email.d.ts +4 -0
  907. package/dist/server/email.js +13 -5
  908. package/dist/server/framework-request-handler.js +6 -3
  909. package/dist/server/google-credential-check.d.ts +7 -3
  910. package/dist/server/google-credential-check.js +71 -0
  911. package/dist/server/google-oauth-credentials.d.ts +4 -3
  912. package/dist/server/google-oauth-credentials.js +7 -8
  913. package/dist/server/google-oauth.d.ts +9 -4
  914. package/dist/server/google-oauth.js +14 -93
  915. package/dist/server/index.d.ts +1 -1
  916. package/dist/server/index.js +1 -1
  917. package/dist/server/jwks-secret-rotation.d.ts +29 -0
  918. package/dist/server/jwks-secret-rotation.js +150 -0
  919. package/dist/server/onboarding-html.d.ts +2 -14
  920. package/dist/server/onboarding-html.js +254 -2519
  921. package/dist/server/origin-allowlist.d.ts +15 -0
  922. package/dist/server/origin-allowlist.js +93 -0
  923. package/dist/server/realtime-token.d.ts +1 -1
  924. package/dist/server/release-migrations.js +48 -0
  925. package/dist/server/request-context.d.ts +2 -0
  926. package/dist/server/request-context.js +7 -2
  927. package/dist/server/self-dispatch.js +5 -0
  928. package/dist/server/sentry.js +5 -0
  929. package/dist/server/ssr-handler.js +5 -0
  930. package/dist/server/workspace-provider-oauth.d.ts +9 -0
  931. package/dist/server/workspace-provider-oauth.js +96 -31
  932. package/dist/shared/index.d.ts +2 -0
  933. package/dist/shared/index.js +2 -0
  934. package/dist/shared/loading-labels.d.ts +1 -0
  935. package/dist/shared/loading-labels.js +55 -0
  936. package/dist/shared/qa-test-email.d.ts +1 -0
  937. package/dist/shared/qa-test-email.js +42 -0
  938. package/dist/shared/route-warmup-config.js +2 -2
  939. package/dist/shared/sign-in-journey.js +1 -1
  940. package/dist/shared/ssr-auth-redirect.d.ts +8 -0
  941. package/dist/shared/ssr-auth-redirect.js +56 -0
  942. package/dist/shared/test-traffic.d.ts +8 -0
  943. package/dist/shared/test-traffic.js +11 -0
  944. package/dist/styles/agent-native.css +50 -14
  945. package/dist/styles/blocks.css +0 -6
  946. package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -0
  947. package/dist/templates/chat/.agents/skills/secrets/SKILL.md +47 -0
  948. package/dist/templates/chat/AGENTS.md +5 -4
  949. package/dist/templates/chat/app/components/layout/Header.tsx +1 -1
  950. package/dist/templates/chat/app/components/layout/Layout.tsx +5 -4
  951. package/dist/templates/chat/app/components/layout/Sidebar.tsx +16 -25
  952. package/dist/templates/chat/app/hooks/use-navigation-state.ts +5 -5
  953. package/dist/templates/chat/app/root.tsx +16 -3
  954. package/dist/templates/chat/app/routes/_index.tsx +17 -74
  955. package/dist/templates/chat/app/routes/chat.$threadId.tsx +1 -1
  956. package/dist/templates/chat/app/routes/home.tsx +94 -0
  957. package/dist/templates/chat/netlify.toml +2 -1
  958. package/dist/templates/chat/public/manifest.json +1 -1
  959. package/dist/templates/chat/server/plugins/auth.ts +1 -0
  960. package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +4 -0
  961. package/dist/templates/default/.agents/skills/secrets/SKILL.md +47 -0
  962. package/dist/templates/default/AGENTS.md +10 -6
  963. package/dist/templates/default/DEVELOPING.md +8 -1
  964. package/dist/templates/default/app/hooks/use-navigation-state.ts +1 -1
  965. package/dist/templates/default/app/root.tsx +10 -3
  966. package/dist/templates/default/app/routes/_index.tsx +10 -86
  967. package/dist/templates/default/app/routes/home.tsx +94 -0
  968. package/dist/templates/default/app/routes/settings.tsx +1 -1
  969. package/dist/templates/default/public/manifest.json +1 -1
  970. package/dist/templates/default/server/plugins/auth.ts +5 -0
  971. package/dist/templates/headless/.agents/skills/secrets/SKILL.md +47 -0
  972. package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -0
  973. package/dist/templates/workspace-core/.agents/skills/secrets/SKILL.md +47 -0
  974. package/dist/templates/workspace-root/.env.example +3 -2
  975. package/dist/terminal/pty-server.d.ts +2 -0
  976. package/dist/terminal/pty-server.js +22 -5
  977. package/dist/tracking/registry.d.ts +1 -0
  978. package/dist/tracking/registry.js +12 -0
  979. package/dist/usage/store.d.ts +1 -0
  980. package/dist/usage/store.js +16 -7
  981. package/dist/vite/client.d.ts +1 -1
  982. package/dist/vite/client.js +59 -0
  983. package/dist/workspace-connections/index.d.ts +1 -1
  984. package/dist/workspace-connections/index.js +1 -1
  985. package/dist/workspace-connections/store.d.ts +1 -0
  986. package/dist/workspace-connections/store.js +4 -0
  987. package/docs/content/aws-amplify.mdx +179 -0
  988. package/docs/content/client-agent-chat.mdx +1 -1
  989. package/docs/content/deploy-an-app.mdx +2 -1
  990. package/docs/content/deployment.mdx +14 -3
  991. package/docs/content/environment-variables.mdx +1 -0
  992. package/docs/content/template-forms-agent.mdx +65 -0
  993. package/docs/content/template-forms-developers.mdx +220 -65
  994. package/docs/content/template-forms-features.mdx +154 -0
  995. package/docs/content/template-forms-integrations.mdx +40 -0
  996. package/docs/content/template-forms.mdx +49 -36
  997. package/docs/content/template-mail-developers.mdx +3 -3
  998. package/docs/content/toolkit-settings.mdx +3 -3
  999. package/docs/content/webmcp.mdx +31 -12
  1000. package/package.json +3 -3
  1001. package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +4 -0
  1002. package/src/templates/chat/.agents/skills/secrets/SKILL.md +47 -0
  1003. package/src/templates/chat/AGENTS.md +5 -4
  1004. package/src/templates/chat/app/components/layout/Header.tsx +1 -1
  1005. package/src/templates/chat/app/components/layout/Layout.tsx +5 -4
  1006. package/src/templates/chat/app/components/layout/Sidebar.tsx +16 -25
  1007. package/src/templates/chat/app/hooks/use-navigation-state.ts +5 -5
  1008. package/src/templates/chat/app/root.tsx +16 -3
  1009. package/src/templates/chat/app/routes/_index.tsx +17 -74
  1010. package/src/templates/chat/app/routes/chat.$threadId.tsx +1 -1
  1011. package/src/templates/chat/app/routes/home.tsx +94 -0
  1012. package/src/templates/chat/netlify.toml +2 -1
  1013. package/src/templates/chat/public/manifest.json +1 -1
  1014. package/src/templates/chat/server/plugins/auth.ts +1 -0
  1015. package/src/templates/default/.agents/skills/frontend-design/SKILL.md +4 -0
  1016. package/src/templates/default/.agents/skills/secrets/SKILL.md +47 -0
  1017. package/src/templates/default/AGENTS.md +10 -6
  1018. package/src/templates/default/DEVELOPING.md +8 -1
  1019. package/src/templates/default/app/hooks/use-navigation-state.ts +1 -1
  1020. package/src/templates/default/app/root.tsx +10 -3
  1021. package/src/templates/default/app/routes/_index.tsx +10 -86
  1022. package/src/templates/default/app/routes/home.tsx +94 -0
  1023. package/src/templates/default/app/routes/settings.tsx +1 -1
  1024. package/src/templates/default/public/manifest.json +1 -1
  1025. package/src/templates/default/server/plugins/auth.ts +5 -0
  1026. package/src/templates/headless/.agents/skills/secrets/SKILL.md +47 -0
  1027. package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +4 -0
  1028. package/src/templates/workspace-core/.agents/skills/secrets/SKILL.md +47 -0
  1029. package/src/templates/workspace-root/.env.example +3 -2
  1030. package/corpus/templates/factory/actions/approve-factory-item.ts +0 -244
  1031. package/corpus/templates/factory/app/components/factory/FactorySourceSettingsGroup.tsx +0 -33
  1032. package/corpus/templates/factory/server/routes/_agent-native/factory/builder-callback.post.ts +0 -116
  1033. package/corpus/templates/factory/server/triage/ai-services-git.ts +0 -205
  1034. package/corpus/templates/factory/server/triage/builder-executor.ts +0 -123
  1035. package/docs/content/template-forms-building-publishing.mdx +0 -135
  1036. package/docs/content/template-forms-responses.mdx +0 -120
  1037. /package/corpus/templates/clips/{server/lib → shared}/upload-interruption.ts +0 -0
@@ -69,7 +69,6 @@ import {
69
69
  EmptyTitle,
70
70
  } from "@/components/ui/empty";
71
71
  import { Input } from "@/components/ui/input";
72
- import { Skeleton } from "@/components/ui/skeleton";
73
72
  import { Spinner } from "@/components/ui/spinner";
74
73
  import { Switch as UiSwitch } from "@/components/ui/switch";
75
74
  import { Textarea } from "@/components/ui/textarea";
@@ -730,21 +729,6 @@ function openPrivacySettings(pane: MacosPrivacyPane): void {
730
729
  }
731
730
  }
732
731
 
733
- // Same explicit-drag pattern the toolbar/bubble overlays use —
734
- // `data-tauri-drag-region` has been unreliable, so we call `startDragging()`
735
- // directly on mousedown. Clicks on buttons/inputs still reach their handlers
736
- // since we only start a drag when the mousedown target isn't inside one.
737
- function handlePopoverHeaderMouseDown(event: React.MouseEvent) {
738
- if (event.button !== 0) return;
739
- const target = event.target as HTMLElement;
740
- if (target.closest("button, a, input, select, textarea")) return;
741
- getCurrentWindow()
742
- .startDragging()
743
- .catch((err) => {
744
- console.warn("[clips-popover] startDragging failed:", err);
745
- });
746
- }
747
-
748
732
  function nativeVoiceProvider(): VoiceProvider {
749
733
  return isMacPlatform() ? "macos-native" : "browser";
750
734
  }
@@ -2679,13 +2663,6 @@ export function App({
2679
2663
  };
2680
2664
  }, []);
2681
2665
 
2682
- // Warm the multi-second SCShareableContent lookup while the popover is
2683
- // open so a recording start within the cache TTL skips it. Fire-and-forget.
2684
- useEffect(() => {
2685
- if (!popoverVisible) return;
2686
- invoke("native_fullscreen_prefetch_capture_content").catch(() => {});
2687
- }, [popoverVisible]);
2688
-
2689
2666
  const speechPermissionChecked = useRef(false);
2690
2667
  useEffect(() => {
2691
2668
  if (!popoverVisible || !micOn || speechPermissionChecked.current) return;
@@ -2775,9 +2752,8 @@ export function App({
2775
2752
  });
2776
2753
 
2777
2754
  bubbleActiveRef.current = bubbleActive;
2778
- // The toolbar is recording chrome, not pre-record chrome. Showing it while
2779
- // the popover is merely open leaves a disabled 0:00 Stop/Pause pill on the
2780
- // desktop, which reads as a stuck recorder and can trap accessibility clicks.
2755
+ // The toolbar is recording chrome. It is created once the recording flow
2756
+ // starts, then stays visible but disabled until capture is live.
2781
2757
  const toolbarActive = isRecording || recordingFlowActive;
2782
2758
 
2783
2759
  useEffect(() => {
@@ -2795,6 +2771,9 @@ export function App({
2795
2771
  // otherwise arrive after the recorder's enabled event and strand the
2796
2772
  // toolbar at 0:00.
2797
2773
  emit("clips:toolbar-enabled", false).catch(() => {});
2774
+ // Tell a reused pill to reappear in its disabled state for the next
2775
+ // preparation/countdown after a restart.
2776
+ emit("clips:toolbar-preparing").catch(() => {});
2798
2777
  return () => {
2799
2778
  cancelled = true;
2800
2779
  // In screen-only mode the bubble effect never runs, so its
@@ -3399,6 +3378,15 @@ export function App({
3399
3378
  /** Live capture inherited from the take a restart is replacing. */
3400
3379
  resumeCapture?: RestartHandoff;
3401
3380
  }): Promise<RecorderHandle | null> {
3381
+ if (recordingStopFinalizingRef.current) {
3382
+ console.warn(
3383
+ "[clips-popover] handleStartRecording ignored — previous recording still finalizing",
3384
+ );
3385
+ setRecError(
3386
+ "Still finishing the last recording. Wait a moment, then try again.",
3387
+ );
3388
+ return null;
3389
+ }
3402
3390
  if (
3403
3391
  (recorder || recordingFlowGateRef.current) &&
3404
3392
  !options?.ignoreActiveRecorder
@@ -3411,6 +3399,9 @@ export function App({
3411
3399
  );
3412
3400
  return null;
3413
3401
  }
3402
+ if (localRecordingMode === "off" && authStatus !== "authed") {
3403
+ return null;
3404
+ }
3414
3405
  const bubbleTracks = bubbleStreamRef.current?.getTracks() ?? [];
3415
3406
  const bubbleStreamDead =
3416
3407
  bubbleTracks.length > 0 &&
@@ -3508,8 +3499,7 @@ export function App({
3508
3499
  // Tell Rust we're entering the recording flow NOW, not after the
3509
3500
  // handle arrives. The macOS screen-picker dialog steals focus from
3510
3501
  // the popover, which would otherwise trigger the blur-auto-hide
3511
- // mid-setup — so the countdown and toolbar render behind a hidden
3512
- // popover and the user sees nothing happen.
3502
+ // mid-setup — so the countdown and toolbar can render during setup.
3513
3503
  invoke("set_recording_state", { active: true }).catch(() => {});
3514
3504
 
3515
3505
  // Hand the live camera stream to the recorder so it doesn't
@@ -3764,10 +3754,23 @@ export function App({
3764
3754
  emit("clips:countdown-cancel").catch(() => {});
3765
3755
  return;
3766
3756
  }
3757
+ if (recordingStopFinalizingRef.current) {
3758
+ // The shortcut's start call below passes `ignoreActiveRecorder: true`
3759
+ // (it intentionally bypasses the recorder/gate check so a restart can
3760
+ // reuse it), which would otherwise let it start a new native capture
3761
+ // while the previous one is still finalizing.
3762
+ setRecError(
3763
+ "Still finishing the last recording. Wait a moment, then try again.",
3764
+ );
3765
+ invoke("show_popover").catch(() => {});
3766
+ return;
3767
+ }
3767
3768
 
3768
3769
  setPopoverView("recorder");
3769
- if (authStatus === "anon" && localRecordingMode === "off") {
3770
- setRecError("Sign in to Clips before using the recording shortcut.");
3770
+ if (authStatus !== "authed" && localRecordingMode === "off") {
3771
+ if (authStatus === "anon") {
3772
+ setRecError("Sign in to Clips before using the recording shortcut.");
3773
+ }
3771
3774
  invoke("show_popover").catch(() => {});
3772
3775
  return;
3773
3776
  }
@@ -4045,6 +4048,9 @@ export function App({
4045
4048
 
4046
4049
  const showCameraRow = mode !== "screen"; // screen-only has no camera
4047
4050
  const showSourceRow = mode !== "camera"; // camera-only has no screen source
4051
+ const recordingReadinessPending =
4052
+ localRecordingMode === "off" &&
4053
+ (authStatus !== "authed" || videoStorageStatus === "checking");
4048
4054
 
4049
4055
  const pendingUploadBanner =
4050
4056
  authStatus === "authed" ? (
@@ -4361,35 +4367,6 @@ export function App({
4361
4367
  );
4362
4368
  }
4363
4369
 
4364
- // The session check has not answered yet. "unknown" must not fall through
4365
- // to the recorder: that shows a signed-out user the full recording UI for
4366
- // as long as /auth/session takes — indefinitely, if it hangs. Render the
4367
- // popover's shape instead until the check resolves either way.
4368
- if (authStatus === "unknown") {
4369
- return (
4370
- <div className="app" ref={appRef}>
4371
- <div
4372
- className="header header-centered"
4373
- onMouseDown={handlePopoverHeaderMouseDown}
4374
- >
4375
- <button
4376
- className="icon-button header-close"
4377
- onClick={hidePopover}
4378
- aria-label="Close"
4379
- title="Close"
4380
- >
4381
- <CloseIcon />
4382
- </button>
4383
- </div>
4384
- <div data-tw-surface className="grid gap-2.5 px-4 pb-4 pt-1">
4385
- <Skeleton className="h-14 w-full rounded-xl" />
4386
- <Skeleton className="h-14 w-full rounded-xl" />
4387
- <Skeleton className="mt-2 h-12 w-full rounded-full" />
4388
- </div>
4389
- </div>
4390
- );
4391
- }
4392
-
4393
4370
  // When unauthenticated, render the sign-in form INLINE in the popover
4394
4371
  // (not a separate Tauri window). This avoids Tauri 2's separate-WebKit-
4395
4372
  // data-store-per-WebviewWindow cookie-jar issue — the cookie is set in
@@ -4403,10 +4380,7 @@ export function App({
4403
4380
  modes, Feedback, and Settings all act on an account that does not
4404
4381
  exist yet, so they appear after auth rather than competing with it.
4405
4382
  Only the window's own close control stays. */}
4406
- <div
4407
- className="header header-centered"
4408
- onMouseDown={handlePopoverHeaderMouseDown}
4409
- >
4383
+ <div className="header header-centered">
4410
4384
  <button
4411
4385
  className="icon-button header-close"
4412
4386
  onClick={hidePopover}
@@ -4601,16 +4575,29 @@ export function App({
4601
4575
  {!isRecording ? (
4602
4576
  <button
4603
4577
  className="primary start"
4604
- disabled={
4605
- localRecordingMode === "off" && videoStorageStatus === "checking"
4578
+ disabled={recordingReadinessPending || recordingStopFinalizing}
4579
+ aria-busy={recordingReadinessPending || recordingStopFinalizing}
4580
+ aria-label={
4581
+ recordingStopFinalizing
4582
+ ? "Finishing last recording..."
4583
+ : recordingReadinessPending
4584
+ ? "Start recording"
4585
+ : undefined
4606
4586
  }
4607
4587
  onClick={() => beginRecording()}
4608
4588
  >
4609
- {localRecordingMode === "off" && videoStorageStatus === "checking"
4610
- ? "Checking storage..."
4611
- : localRecordingMode === "off"
4612
- ? "Start recording"
4613
- : "Start local recording"}
4589
+ {recordingStopFinalizing ? (
4590
+ "Finishing last recording..."
4591
+ ) : recordingReadinessPending ? (
4592
+ <span
4593
+ aria-hidden="true"
4594
+ className="skeleton-shimmer inline-block h-4 w-32 rounded bg-muted"
4595
+ />
4596
+ ) : localRecordingMode === "off" ? (
4597
+ "Start recording"
4598
+ ) : (
4599
+ "Start local recording"
4600
+ )}
4614
4601
  </button>
4615
4602
  ) : null}
4616
4603
 
@@ -5169,10 +5156,7 @@ function Header({
5169
5156
  // close button lives top-right as an absolute-positioned sibling, so the
5170
5157
  // tabs aren't offset by the close button's width.
5171
5158
  return (
5172
- <div
5173
- className="header header-centered"
5174
- onMouseDown={handlePopoverHeaderMouseDown}
5175
- >
5159
+ <div className="header header-centered">
5176
5160
  <FeedbackButton submitterEmail={submitterEmail} />
5177
5161
  <div
5178
5162
  className="mode-toggle"
@@ -5571,10 +5555,7 @@ function PopoverSubViewHeader({
5571
5555
  action?: ReactNode;
5572
5556
  }) {
5573
5557
  return (
5574
- <div
5575
- className="setup-header popover-view-header"
5576
- onMouseDown={handlePopoverHeaderMouseDown}
5577
- >
5558
+ <div className="setup-header popover-view-header">
5578
5559
  <button
5579
5560
  type="button"
5580
5561
  className="setup-back"
@@ -6034,8 +6015,6 @@ function Setup({
6034
6015
  featureConfig?.screenMemory ?? DEFAULT_SCREEN_MEMORY_CONFIG;
6035
6016
  const [screenMemory, setScreenMemory] = useState(observedScreenMemory);
6036
6017
  const [rewindConsentOpen, setRewindConsentOpen] = useState(false);
6037
- const [rewindManageOpen, setRewindManageOpen] = useState(false);
6038
- const [rewindShowAdvanced, setRewindShowAdvanced] = useState(false);
6039
6018
  const screenMemoryRef = useRef(observedScreenMemory);
6040
6019
  const screenMemoryMutationRef = useRef(0);
6041
6020
  const screenMemoryMutationVersionRef = useRef(0);
@@ -7160,6 +7139,19 @@ function Setup({
7160
7139
  return (
7161
7140
  <div className="mx-auto grid w-full max-w-[620px] gap-7 pb-4">
7162
7141
  <SettingsGroup>
7142
+ {/* A confirmation, so a dialog rather than a takeover: the user is
7143
+ answering one question about the screen behind it, not moving to
7144
+ a new place. What it remembers is chosen afterwards, in the row
7145
+ below — asking before they have agreed puts the options in front
7146
+ of the decision.
7147
+
7148
+ The copy names what is captured and what can leave, and nothing
7149
+ else. Two claims are tempting and both are false: this buffer
7150
+ holds screen *video* (hence the GB disk limit below), not app
7151
+ and window notes; and it cannot promise "never leaves this Mac"
7152
+ because the agent-handoff path uploads an approved range. A
7153
+ consent screen is the one place a comforting simplification is
7154
+ indistinguishable from a lie. */}
7163
7155
  <UiAlertDialog
7164
7156
  open={rewindConsentOpen}
7165
7157
  onOpenChange={setRewindConsentOpen}
@@ -7204,397 +7196,24 @@ function Setup({
7204
7196
  label="Rewind"
7205
7197
  description="Keeps a rolling record of your recent screen on this device"
7206
7198
  control={
7207
- <div className="flex items-center gap-2">
7208
- <SettingsPopover
7209
- title="Rewind settings"
7210
- open={rewindManageOpen}
7211
- onOpenChange={setRewindManageOpen}
7212
- className="w-[480px] max-w-[calc(100vw-24px)]"
7213
- trigger={
7214
- <SettingsActionButton
7215
- aria-expanded={rewindManageOpen}
7216
- aria-haspopup="dialog"
7217
- >
7218
- Manage
7219
- </SettingsActionButton>
7199
+ <SettingsSwitch
7200
+ checked={rewindOn}
7201
+ onCheckedChange={(next) => {
7202
+ // Turning it on starts continuously capturing the screen, so
7203
+ // it routes through consent rather than flipping silently.
7204
+ // Turning it off needs no confirmation — stopping is safe.
7205
+ if (next) {
7206
+ setRewindConsentOpen(true);
7207
+ return;
7220
7208
  }
7221
- >
7222
- <div className="grid max-h-[min(620px,calc(100vh-80px))] gap-3 overflow-y-auto pr-1">
7223
- {rewindOn ? (
7224
- <>
7225
- <SettingsGroup label="Capture">
7226
- <SettingsRow
7227
- label="Remember"
7228
- description="Choose what Rewind captures"
7229
- control={
7230
- <SettingsSelect
7231
- ariaLabel="What Rewind remembers"
7232
- value={screenMemory.captureMode ?? "visuals"}
7233
- onValueChange={(value) => {
7234
- void setScreenMemoryConfig({
7235
- captureMode: value as RewindCaptureMode,
7236
- });
7237
- }}
7238
- disabled={
7239
- screenMemoryConfigBusy ||
7240
- captureControlsLocked
7241
- }
7242
- options={[
7243
- { value: "visuals", label: "Screen only" },
7244
- {
7245
- value: "visuals-audio",
7246
- label: "Screen + audio",
7247
- },
7248
- ]}
7249
- />
7250
- }
7251
- />
7252
- <SettingsRow
7253
- label="Time limit"
7254
- description="Choose how long Rewind keeps your screen history"
7255
- control={
7256
- <SettingsSelect
7257
- ariaLabel="Rewind time limit"
7258
- placeholder={`${screenMemory.retentionHours} hours`}
7259
- value={String(screenMemory.retentionHours)}
7260
- onValueChange={(value) => {
7261
- void setScreenMemoryConfig({
7262
- retentionHours: Number(value),
7263
- });
7264
- }}
7265
- disabled={screenMemoryConfigBusy}
7266
- options={[
7267
- { value: "8", label: "8 hours" },
7268
- { value: "24", label: "24 hours" },
7269
- ]}
7270
- />
7271
- }
7272
- />
7273
- <SettingsRow
7274
- label="Storage limit"
7275
- description="Choose how much space Rewind can use on this device"
7276
- control={
7277
- <SettingsSelect
7278
- ariaLabel="Rewind storage limit"
7279
- placeholder={formatStorageBytes(
7280
- screenMemory.maxBytes,
7281
- )}
7282
- value={String(screenMemory.maxBytes)}
7283
- onValueChange={(value) => {
7284
- void setScreenMemoryConfig({
7285
- maxBytes: Number(value),
7286
- });
7287
- }}
7288
- disabled={screenMemoryConfigBusy}
7289
- options={[
7290
- {
7291
- value: String(5 * 1024 * 1024 * 1024),
7292
- label: "5 GB",
7293
- },
7294
- {
7295
- value: String(20 * 1024 * 1024 * 1024),
7296
- label: "20 GB",
7297
- },
7298
- {
7299
- value: String(50 * 1024 * 1024 * 1024),
7300
- label: "50 GB",
7301
- },
7302
- ]}
7303
- />
7304
- }
7305
- />
7306
- </SettingsGroup>
7307
- <SettingsActionButton
7308
- emphasis="quiet"
7309
- className="justify-self-start"
7310
- aria-expanded={rewindShowAdvanced}
7311
- onClick={() =>
7312
- setRewindShowAdvanced((current) => !current)
7313
- }
7314
- >
7315
- {rewindShowAdvanced
7316
- ? "Hide advanced"
7317
- : "Show advanced"}
7318
- </SettingsActionButton>
7319
- {rewindShowAdvanced ? (
7320
- <>
7321
- <SettingsGroup label="Privacy">
7322
- <SettingsRow
7323
- label="Excluded apps"
7324
- description="Apps Rewind never captures"
7325
- control={
7326
- <SettingsActionButton
7327
- onClick={() =>
7328
- void chooseExcludedApplications()
7329
- }
7330
- disabled={excludedAppsBusy}
7331
- >
7332
- Choose apps
7333
- </SettingsActionButton>
7334
- }
7335
- >
7336
- {excludedAppGroups.length > 0 ? (
7337
- <div className="grid gap-1">
7338
- {excludedAppGroups.map((app) => (
7339
- <div
7340
- key={app.bundleIds.join(",")}
7341
- className="flex items-center justify-between gap-2"
7342
- >
7343
- <span className="truncate">
7344
- {app.name}
7345
- </span>
7346
- <SettingsActionButton
7347
- emphasis="quiet"
7348
- onClick={() =>
7349
- removeExcludedApplications(
7350
- app.bundleIds,
7351
- )
7352
- }
7353
- >
7354
- Remove
7355
- </SettingsActionButton>
7356
- </div>
7357
- ))}
7358
- </div>
7359
- ) : null}
7360
- </SettingsRow>
7361
- <SettingsRow
7362
- label="Review before sending"
7363
- description="Approve each visual or audio range before an agent receives it"
7364
- control={
7365
- <SettingsSwitch
7366
- checked={
7367
- screenMemory.reviewBeforeSending !== false
7368
- }
7369
- onCheckedChange={(next) => {
7370
- void setScreenMemoryConfig({
7371
- reviewBeforeSending: next,
7372
- });
7373
- }}
7374
- disabled={screenMemoryConfigBusy}
7375
- label="Review before sending"
7376
- />
7377
- }
7378
- />
7379
- <SettingsRow
7380
- label="Preview before sending"
7381
- description="Open the range locally so you see exactly what is sent"
7382
- control={
7383
- <SettingsSwitch
7384
- checked={
7385
- screenMemory.autoPreviewBeforeSending ===
7386
- true
7387
- }
7388
- onCheckedChange={(next) => {
7389
- void setScreenMemoryConfig({
7390
- autoPreviewBeforeSending: next,
7391
- });
7392
- }}
7393
- disabled={screenMemoryConfigBusy}
7394
- label="Preview before sending"
7395
- />
7396
- }
7397
- />
7398
- <SettingsRow
7399
- label="Keep agent Clips"
7400
- description="Choose how long Clips made for agents stay in your library"
7401
- control={
7402
- <SettingsSelect
7403
- ariaLabel="How long agent-created Clips are kept"
7404
- value={screenMemory.agentClipRetention}
7405
- onValueChange={(value) => {
7406
- void setScreenMemoryConfig({
7407
- agentClipRetention:
7408
- value as ScreenMemoryStatus["config"]["agentClipRetention"],
7409
- });
7410
- }}
7411
- disabled={screenMemoryConfigBusy}
7412
- options={[
7413
- {
7414
- value: "forever",
7415
- label: "Forever",
7416
- },
7417
- {
7418
- value: "24-hours",
7419
- label: "24 hours",
7420
- },
7421
- {
7422
- value: "7-days",
7423
- label: "7 days",
7424
- },
7425
- {
7426
- value: "30-days",
7427
- label: "30 days",
7428
- },
7429
- ]}
7430
- />
7431
- }
7432
- />
7433
- <SettingsRow
7434
- label="Agent activity"
7435
- description="Each time an agent searched this device's memory, newest first"
7436
- >
7437
- {rewindEgressEvents.length === 0 ? (
7438
- <p>No agent has searched it yet.</p>
7439
- ) : (
7440
- <div className="grid gap-1">
7441
- {rewindEgressEvents
7442
- .slice(0, 10)
7443
- .map((event) => (
7444
- <div
7445
- key={`${event.requestId}-${event.state}`}
7446
- className="flex items-center justify-between gap-2"
7447
- >
7448
- <span className="truncate">
7449
- {new Date(
7450
- event.occurredAt,
7451
- ).toLocaleString()}
7452
- </span>
7453
- <span className="shrink-0">
7454
- {event.state} ·{" "}
7455
- {`${event.evidenceCount} item${event.evidenceCount === 1 ? "" : "s"}`}
7456
- </span>
7457
- </div>
7458
- ))}
7459
- </div>
7460
- )}
7461
- </SettingsRow>
7462
- </SettingsGroup>
7463
-
7464
- <SettingsGroup label="Agents">
7465
- <SettingsRow
7466
- label="Setup prompt"
7467
- description="Paste it into an agent once to install Rewind's instructions"
7468
- control={
7469
- <>
7470
- <SettingsActionButton
7471
- emphasis="quiet"
7472
- onClick={onOpenRewindDocs}
7473
- >
7474
- Learn more
7475
- </SettingsActionButton>
7476
- <SettingsActionButton
7477
- onClick={onCopyRewindAgentPrompt}
7478
- >
7479
- {rewindAgentPromptCopied
7480
- ? "Copied"
7481
- : "Copy"}
7482
- </SettingsActionButton>
7483
- </>
7484
- }
7485
- />
7486
- <SettingsRow
7487
- label="Connect an agent"
7488
- description="Gives a local agent access to this device's Rewind memory"
7489
- control={
7490
- <>
7491
- <SettingsActionButton
7492
- onClick={() =>
7493
- void installRewindAgentConnection(
7494
- "codex",
7495
- )
7496
- }
7497
- disabled={agentConnectionBusy !== null}
7498
- >
7499
- Codex
7500
- </SettingsActionButton>
7501
- <SettingsActionButton
7502
- onClick={() =>
7503
- void installRewindAgentConnection(
7504
- "claude-code",
7505
- )
7506
- }
7507
- disabled={agentConnectionBusy !== null}
7508
- >
7509
- Claude Code
7510
- </SettingsActionButton>
7511
- </>
7512
- }
7513
- >
7514
- {agentConnectionMessage ? (
7515
- <p
7516
- className={
7517
- agentConnectionMessage.kind === "ok"
7518
- ? "text-xs text-success"
7519
- : "text-xs text-destructive"
7520
- }
7521
- >
7522
- {agentConnectionMessage.text}
7523
- </p>
7524
- ) : null}
7525
- </SettingsRow>
7526
- </SettingsGroup>
7527
-
7528
- <SettingsGroup label="Storage">
7529
- <SettingsRow
7530
- label="Search memory"
7531
- description="Find and replay a recent moment yourself"
7532
- control={
7533
- <SettingsActionButton onClick={onOpenMemory}>
7534
- Search
7535
- </SettingsActionButton>
7536
- }
7537
- />
7538
- <SettingsRow
7539
- label="Save last 5 minutes"
7540
- description="Exports recent memory as video files on this device. Nothing is uploaded."
7541
- control={
7542
- <SettingsActionButton
7543
- onClick={() =>
7544
- void exportScreenMemoryRecent()
7545
- }
7546
- disabled={screenMemoryBusy}
7547
- >
7548
- Save
7549
- </SettingsActionButton>
7550
- }
7551
- />
7552
- <SettingsRow
7553
- label="On this device"
7554
- description={`${screenMemorySegments.length} ${screenMemorySegments.length === 1 ? "segment" : "segments"} · ${formatStorageBytes(screenMemoryTotalBytes)}`}
7555
- control={
7556
- <>
7557
- <SettingsActionButton
7558
- onClick={openScreenMemoryFolder}
7559
- >
7560
- Open folder
7561
- </SettingsActionButton>
7562
- <SettingsActionButton
7563
- emphasis="destructive"
7564
- onClick={() => void clearScreenMemory()}
7565
- disabled={screenMemoryBusy}
7566
- >
7567
- Delete all
7568
- </SettingsActionButton>
7569
- </>
7570
- }
7571
- />
7572
- </SettingsGroup>
7573
- </>
7574
- ) : null}
7575
- </>
7576
- ) : (
7577
- <SettingsGroup>
7578
- <div className="p-3 text-sm text-muted-foreground">
7579
- Turn on Rewind to manage what it remembers.
7580
- </div>
7581
- </SettingsGroup>
7582
- )}
7583
- </div>
7584
- </SettingsPopover>
7585
- <SettingsSwitch
7586
- checked={rewindOn}
7587
- onCheckedChange={(next) => {
7588
- if (next) {
7589
- setRewindConsentOpen(true);
7590
- return;
7591
- }
7592
- void setScreenMemoryConfig({ enabled: false });
7593
- }}
7594
- disabled={screenMemoryConfigBusy || captureControlsLocked}
7595
- label="Rewind"
7596
- />
7597
- </div>
7209
+ void setScreenMemoryConfig({ enabled: false });
7210
+ }}
7211
+ /* Rust rejects Rewind capture changes mid-Clip
7212
+ (config.rs `set_feature_config` guard); disabling here
7213
+ turns that hard error into a visible lock. */
7214
+ disabled={screenMemoryConfigBusy || captureControlsLocked}
7215
+ label="Rewind"
7216
+ />
7598
7217
  }
7599
7218
  >
7600
7219
  {screenMemoryMessage ? (
@@ -7613,7 +7232,294 @@ function Setup({
7613
7232
  </p>
7614
7233
  ) : null}
7615
7234
  </SettingsRow>
7235
+ {rewindOn ? (
7236
+ <>
7237
+ <SettingsRow
7238
+ label="Remember"
7239
+ description="Choose what Rewind captures"
7240
+ control={
7241
+ <SettingsSelect
7242
+ ariaLabel="What Rewind remembers"
7243
+ value={screenMemory.captureMode ?? "visuals"}
7244
+ onValueChange={(value) => {
7245
+ void setScreenMemoryConfig({
7246
+ captureMode: value as RewindCaptureMode,
7247
+ });
7248
+ }}
7249
+ disabled={screenMemoryConfigBusy || captureControlsLocked}
7250
+ options={[
7251
+ { value: "visuals", label: "Screen only" },
7252
+ { value: "visuals-audio", label: "Screen + audio" },
7253
+ ]}
7254
+ />
7255
+ }
7256
+ />
7257
+ <SettingsRow
7258
+ label="Time limit"
7259
+ description="Choose how long Rewind keeps your screen history"
7260
+ control={
7261
+ <SettingsSelect
7262
+ ariaLabel="Rewind time limit"
7263
+ placeholder={`${screenMemory.retentionHours} hours`}
7264
+ value={String(screenMemory.retentionHours)}
7265
+ onValueChange={(value) => {
7266
+ void setScreenMemoryConfig({
7267
+ retentionHours: Number(value),
7268
+ });
7269
+ }}
7270
+ disabled={screenMemoryConfigBusy}
7271
+ options={[
7272
+ { value: "8", label: "8 hours" },
7273
+ { value: "24", label: "24 hours" },
7274
+ ]}
7275
+ />
7276
+ }
7277
+ />
7278
+ <SettingsRow
7279
+ label="Storage limit"
7280
+ description="Choose how much space Rewind can use on this device"
7281
+ control={
7282
+ <SettingsSelect
7283
+ ariaLabel="Rewind storage limit"
7284
+ placeholder={formatStorageBytes(screenMemory.maxBytes)}
7285
+ value={String(screenMemory.maxBytes)}
7286
+ onValueChange={(value) => {
7287
+ void setScreenMemoryConfig({ maxBytes: Number(value) });
7288
+ }}
7289
+ disabled={screenMemoryConfigBusy}
7290
+ options={[
7291
+ { value: String(5 * 1024 * 1024 * 1024), label: "5 GB" },
7292
+ {
7293
+ value: String(20 * 1024 * 1024 * 1024),
7294
+ label: "20 GB",
7295
+ },
7296
+ {
7297
+ value: String(50 * 1024 * 1024 * 1024),
7298
+ label: "50 GB",
7299
+ },
7300
+ ]}
7301
+ />
7302
+ }
7303
+ />
7304
+ </>
7305
+ ) : null}
7616
7306
  </SettingsGroup>
7307
+
7308
+ {rewindOn ? (
7309
+ <>
7310
+ <SettingsGroup label="Privacy">
7311
+ <SettingsRow
7312
+ label="Excluded apps"
7313
+ description={"Apps Rewind never captures"}
7314
+ control={
7315
+ <SettingsActionButton
7316
+ onClick={() => void chooseExcludedApplications()}
7317
+ disabled={excludedAppsBusy}
7318
+ >
7319
+ Choose apps
7320
+ </SettingsActionButton>
7321
+ }
7322
+ >
7323
+ {excludedAppGroups.length > 0 ? (
7324
+ <div className="grid gap-1">
7325
+ {excludedAppGroups.map((app) => (
7326
+ <div
7327
+ key={app.bundleIds.join(",")}
7328
+ className="flex items-center justify-between gap-2"
7329
+ >
7330
+ <span className="truncate">{app.name}</span>
7331
+ <SettingsActionButton
7332
+ emphasis="quiet"
7333
+ onClick={() =>
7334
+ removeExcludedApplications(app.bundleIds)
7335
+ }
7336
+ >
7337
+ Remove
7338
+ </SettingsActionButton>
7339
+ </div>
7340
+ ))}
7341
+ </div>
7342
+ ) : null}
7343
+ </SettingsRow>
7344
+ <SettingsRow
7345
+ label="Review before sending"
7346
+ description="Approve each visual or audio range before an agent receives it"
7347
+ control={
7348
+ <SettingsSwitch
7349
+ checked={screenMemory.reviewBeforeSending !== false}
7350
+ onCheckedChange={(next) => {
7351
+ void setScreenMemoryConfig({
7352
+ reviewBeforeSending: next,
7353
+ });
7354
+ }}
7355
+ disabled={screenMemoryConfigBusy}
7356
+ label="Review before sending"
7357
+ />
7358
+ }
7359
+ />
7360
+ <SettingsRow
7361
+ label="Preview before sending"
7362
+ description="Open the range locally so you see exactly what is sent"
7363
+ control={
7364
+ <SettingsSwitch
7365
+ checked={screenMemory.autoPreviewBeforeSending === true}
7366
+ onCheckedChange={(next) => {
7367
+ void setScreenMemoryConfig({
7368
+ autoPreviewBeforeSending: next,
7369
+ });
7370
+ }}
7371
+ disabled={screenMemoryConfigBusy}
7372
+ label="Preview before sending"
7373
+ />
7374
+ }
7375
+ />
7376
+ <SettingsRow
7377
+ label="Keep agent Clips"
7378
+ description="Choose how long Clips made for agents stay in your library"
7379
+ control={
7380
+ <SettingsSelect
7381
+ ariaLabel="How long agent-created Clips are kept"
7382
+ value={screenMemory.agentClipRetention}
7383
+ onValueChange={(value) => {
7384
+ void setScreenMemoryConfig({
7385
+ agentClipRetention:
7386
+ value as ScreenMemoryStatus["config"]["agentClipRetention"],
7387
+ });
7388
+ }}
7389
+ disabled={screenMemoryConfigBusy}
7390
+ options={[
7391
+ { value: "forever", label: "Forever" },
7392
+ { value: "24-hours", label: "24 hours" },
7393
+ { value: "7-days", label: "7 days" },
7394
+ { value: "30-days", label: "30 days" },
7395
+ ]}
7396
+ />
7397
+ }
7398
+ />
7399
+ <SettingsRow
7400
+ label="Agent activity"
7401
+ description="Each time an agent searched this device's memory, newest first"
7402
+ >
7403
+ {rewindEgressEvents.length === 0 ? (
7404
+ <p>No agent has searched it yet.</p>
7405
+ ) : (
7406
+ <div className="grid gap-1">
7407
+ {rewindEgressEvents.slice(0, 10).map((event) => (
7408
+ <div
7409
+ key={`${event.requestId}-${event.state}`}
7410
+ className="flex items-center justify-between gap-2"
7411
+ >
7412
+ <span className="truncate">
7413
+ {new Date(event.occurredAt).toLocaleString()}
7414
+ </span>
7415
+ <span className="shrink-0">
7416
+ {event.state} ·{" "}
7417
+ {`${event.evidenceCount} item${event.evidenceCount === 1 ? "" : "s"}`}
7418
+ </span>
7419
+ </div>
7420
+ ))}
7421
+ </div>
7422
+ )}
7423
+ </SettingsRow>
7424
+ </SettingsGroup>
7425
+
7426
+ <SettingsGroup label="Agents">
7427
+ <SettingsRow
7428
+ label="Setup prompt"
7429
+ description="Paste it into an agent once to install Rewind's instructions"
7430
+ control={
7431
+ <>
7432
+ <SettingsActionButton
7433
+ emphasis="quiet"
7434
+ onClick={onOpenRewindDocs}
7435
+ >
7436
+ Learn more
7437
+ </SettingsActionButton>
7438
+ <SettingsActionButton onClick={onCopyRewindAgentPrompt}>
7439
+ {rewindAgentPromptCopied ? "Copied" : "Copy"}
7440
+ </SettingsActionButton>
7441
+ </>
7442
+ }
7443
+ />
7444
+ <SettingsRow
7445
+ label="Connect an agent"
7446
+ description="Gives a local agent access to this device's Rewind memory"
7447
+ control={
7448
+ <>
7449
+ <SettingsActionButton
7450
+ onClick={() => void installRewindAgentConnection("codex")}
7451
+ disabled={agentConnectionBusy !== null}
7452
+ >
7453
+ Codex
7454
+ </SettingsActionButton>
7455
+ <SettingsActionButton
7456
+ onClick={() =>
7457
+ void installRewindAgentConnection("claude-code")
7458
+ }
7459
+ disabled={agentConnectionBusy !== null}
7460
+ >
7461
+ Claude Code
7462
+ </SettingsActionButton>
7463
+ </>
7464
+ }
7465
+ >
7466
+ {agentConnectionMessage ? (
7467
+ <p
7468
+ className={
7469
+ agentConnectionMessage.kind === "ok"
7470
+ ? "text-xs text-success"
7471
+ : "text-xs text-destructive"
7472
+ }
7473
+ >
7474
+ {agentConnectionMessage.text}
7475
+ </p>
7476
+ ) : null}
7477
+ </SettingsRow>
7478
+ </SettingsGroup>
7479
+
7480
+ <SettingsGroup label="Storage">
7481
+ <SettingsRow
7482
+ label="Search memory"
7483
+ description="Find and replay a recent moment yourself"
7484
+ control={
7485
+ <SettingsActionButton onClick={onOpenMemory}>
7486
+ Search
7487
+ </SettingsActionButton>
7488
+ }
7489
+ />
7490
+ <SettingsRow
7491
+ label="Save last 5 minutes"
7492
+ description="Exports recent memory as video files on this device. Nothing is uploaded."
7493
+ control={
7494
+ <SettingsActionButton
7495
+ onClick={() => void exportScreenMemoryRecent()}
7496
+ disabled={screenMemoryBusy}
7497
+ >
7498
+ Save
7499
+ </SettingsActionButton>
7500
+ }
7501
+ />
7502
+ <SettingsRow
7503
+ label="On this device"
7504
+ description={`${screenMemorySegments.length} ${screenMemorySegments.length === 1 ? "segment" : "segments"} · ${formatStorageBytes(screenMemoryTotalBytes)}`}
7505
+ control={
7506
+ <>
7507
+ <SettingsActionButton onClick={openScreenMemoryFolder}>
7508
+ Open folder
7509
+ </SettingsActionButton>
7510
+ <SettingsActionButton
7511
+ emphasis="destructive"
7512
+ onClick={() => void clearScreenMemory()}
7513
+ disabled={screenMemoryBusy}
7514
+ >
7515
+ Delete all
7516
+ </SettingsActionButton>
7517
+ </>
7518
+ }
7519
+ />
7520
+ </SettingsGroup>
7521
+ </>
7522
+ ) : null}
7617
7523
  </div>
7618
7524
  );
7619
7525
  }
@@ -8239,12 +8145,7 @@ function Setup({
8239
8145
  className="flex min-w-0 flex-col gap-0.5 overflow-y-auto border-r border-border bg-muted/50 p-2.5 pt-3"
8240
8146
  aria-label="Settings sections"
8241
8147
  >
8242
- {/* The tray window is chromeless, so this header is its only drag
8243
- handle — without it the window cannot be moved. */}
8244
- <div
8245
- className="flex items-center pb-2"
8246
- onMouseDown={handlePopoverHeaderMouseDown}
8247
- >
8148
+ <div className="flex items-center pb-2">
8248
8149
  {onCancel ? (
8249
8150
  <button
8250
8151
  type="button"