@agent-native/core 0.86.1 → 0.87.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1180) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +12 -0
  3. package/corpus/core/docs/content/components.mdx +13 -0
  4. package/corpus/core/docs/content/creating-templates.mdx +7 -0
  5. package/corpus/core/docs/content/locales/ar-SA/components.mdx +9 -0
  6. package/corpus/core/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  7. package/corpus/core/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  8. package/corpus/core/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  9. package/corpus/core/docs/content/locales/ar-SA/tracking.mdx +6 -0
  10. package/corpus/core/docs/content/locales/de-DE/components.mdx +9 -0
  11. package/corpus/core/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  12. package/corpus/core/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  13. package/corpus/core/docs/content/locales/de-DE/template-clips.mdx +7 -0
  14. package/corpus/core/docs/content/locales/de-DE/tracking.mdx +6 -0
  15. package/corpus/core/docs/content/locales/es-ES/components.mdx +9 -0
  16. package/corpus/core/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  17. package/corpus/core/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  18. package/corpus/core/docs/content/locales/es-ES/template-clips.mdx +7 -0
  19. package/corpus/core/docs/content/locales/es-ES/tracking.mdx +6 -0
  20. package/corpus/core/docs/content/locales/fr-FR/components.mdx +9 -0
  21. package/corpus/core/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  22. package/corpus/core/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  23. package/corpus/core/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  24. package/corpus/core/docs/content/locales/fr-FR/tracking.mdx +6 -0
  25. package/corpus/core/docs/content/locales/hi-IN/components.mdx +9 -0
  26. package/corpus/core/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  27. package/corpus/core/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  28. package/corpus/core/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  29. package/corpus/core/docs/content/locales/hi-IN/tracking.mdx +6 -0
  30. package/corpus/core/docs/content/locales/ja-JP/components.mdx +9 -0
  31. package/corpus/core/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  32. package/corpus/core/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  33. package/corpus/core/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  34. package/corpus/core/docs/content/locales/ja-JP/tracking.mdx +6 -0
  35. package/corpus/core/docs/content/locales/ko-KR/components.mdx +9 -0
  36. package/corpus/core/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  37. package/corpus/core/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  38. package/corpus/core/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  39. package/corpus/core/docs/content/locales/ko-KR/tracking.mdx +6 -0
  40. package/corpus/core/docs/content/locales/pt-BR/components.mdx +9 -0
  41. package/corpus/core/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  42. package/corpus/core/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  43. package/corpus/core/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  44. package/corpus/core/docs/content/locales/pt-BR/tracking.mdx +6 -0
  45. package/corpus/core/docs/content/locales/zh-CN/components.mdx +9 -0
  46. package/corpus/core/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  47. package/corpus/core/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  48. package/corpus/core/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  49. package/corpus/core/docs/content/locales/zh-CN/tracking.mdx +6 -0
  50. package/corpus/core/docs/content/locales/zh-TW/components.mdx +9 -0
  51. package/corpus/core/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  52. package/corpus/core/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  53. package/corpus/core/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  54. package/corpus/core/docs/content/locales/zh-TW/tracking.mdx +6 -0
  55. package/corpus/core/docs/content/template-analytics.mdx +6 -0
  56. package/corpus/core/docs/content/template-clips.mdx +7 -0
  57. package/corpus/core/docs/content/tracking.mdx +6 -0
  58. package/corpus/core/package.json +8 -1
  59. package/corpus/core/src/application-state/emitter.ts +37 -5
  60. package/corpus/core/src/cli/create.ts +55 -3
  61. package/corpus/core/src/cli/workspacify.ts +10 -4
  62. package/corpus/core/src/client/components/ui/dialog.tsx +1 -91
  63. package/corpus/core/src/client/components/ui/dropdown-menu.tsx +1 -191
  64. package/corpus/core/src/client/components/ui/hover-card.tsx +1 -29
  65. package/corpus/core/src/client/components/ui/popover.tsx +1 -31
  66. package/corpus/core/src/client/components/ui/sheet.tsx +1 -96
  67. package/corpus/core/src/client/components/ui/tooltip.tsx +1 -53
  68. package/corpus/core/src/secrets/crypto.ts +47 -9
  69. package/corpus/core/src/server/agent-access.ts +72 -0
  70. package/corpus/core/src/server/h3-helpers.ts +14 -2
  71. package/corpus/core/src/server/index.ts +19 -0
  72. package/corpus/core/src/server/request-context.ts +64 -7
  73. package/corpus/core/src/shared/agent-access.ts +112 -0
  74. package/corpus/core/src/shared/index.ts +14 -0
  75. package/corpus/templates/analytics/AGENTS.md +4 -0
  76. package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
  77. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +7 -2
  78. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +16 -11
  79. package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -1
  80. package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +7 -2
  81. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +6 -3
  82. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +6 -1
  83. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +7 -2
  84. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +15 -11
  85. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +7 -1
  86. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +7 -2
  87. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
  88. package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +1 -2
  89. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +5 -2
  90. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
  91. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +3 -4
  92. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +12 -9
  93. package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
  94. package/corpus/templates/analytics/app/pages/Agents.tsx +19 -19
  95. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
  96. package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -28
  97. package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -2
  98. package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -2
  99. package/corpus/templates/analytics/app/pages/Settings.tsx +16 -16
  100. package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +2 -3
  101. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +13 -8
  102. package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +2 -1
  103. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +4 -2
  104. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +2 -1
  105. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
  106. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +1 -2
  107. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -2
  108. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +8 -3
  109. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +4 -5
  110. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +1 -2
  111. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
  112. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
  113. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
  114. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
  115. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +21 -16
  116. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
  117. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
  118. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +13 -14
  119. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +21 -13
  120. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +28 -23
  121. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +12 -12
  122. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
  123. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -29
  124. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +7 -8
  125. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
  126. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +15 -11
  127. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +42 -23
  128. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +12 -7
  129. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
  130. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
  131. package/corpus/templates/analytics/app/root.tsx +2 -2
  132. package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
  133. package/corpus/templates/analytics/package.json +1 -0
  134. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +59 -59
  135. package/corpus/templates/analytics/shared/session-replay-agent-access.ts +14 -3
  136. package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +2 -3
  137. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -9
  138. package/corpus/templates/assets/app/components/layout/Header.tsx +4 -2
  139. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  140. package/corpus/templates/assets/app/components/layout/PageShell.tsx +5 -6
  141. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  142. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
  143. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
  144. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
  145. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +2 -3
  146. package/corpus/templates/assets/app/root.tsx +1 -1
  147. package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
  148. package/corpus/templates/assets/app/routes/audit.tsx +14 -15
  149. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +54 -49
  150. package/corpus/templates/assets/app/routes/library.tsx +31 -31
  151. package/corpus/templates/assets/app/routes/settings.tsx +18 -18
  152. package/corpus/templates/assets/package.json +1 -0
  153. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +5 -6
  154. package/corpus/templates/brain/app/components/brain/Surface.tsx +8 -3
  155. package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
  156. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
  157. package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
  158. package/corpus/templates/brain/app/routes/ops.tsx +18 -18
  159. package/corpus/templates/brain/app/routes/review.tsx +27 -22
  160. package/corpus/templates/brain/app/routes/search.tsx +20 -20
  161. package/corpus/templates/brain/app/routes/settings.tsx +22 -22
  162. package/corpus/templates/brain/app/routes/sources.tsx +23 -23
  163. package/corpus/templates/brain/package.json +1 -0
  164. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
  165. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
  166. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +1 -2
  167. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +8 -9
  168. package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
  169. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +2 -3
  170. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +15 -10
  171. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
  172. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
  173. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +12 -9
  174. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +13 -10
  175. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
  176. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
  177. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
  178. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
  179. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
  180. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  181. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  182. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
  183. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +10 -8
  184. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
  185. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
  186. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +1 -1
  187. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
  188. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -6
  189. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -2
  190. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -16
  191. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
  192. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +50 -45
  193. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
  194. package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
  195. package/corpus/templates/calendar/app/pages/CalendarView.tsx +17 -17
  196. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
  197. package/corpus/templates/calendar/app/pages/Settings.tsx +12 -12
  198. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  199. package/corpus/templates/calendar/package.json +1 -0
  200. package/corpus/templates/chat/app/components/layout/Header.tsx +4 -2
  201. package/corpus/templates/chat/app/components/layout/Layout.tsx +7 -7
  202. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
  203. package/corpus/templates/chat/app/routes/database.tsx +1 -2
  204. package/corpus/templates/chat/app/routes/observability.tsx +1 -1
  205. package/corpus/templates/chat/app/routes/settings.tsx +5 -5
  206. package/corpus/templates/chat/package.json +1 -0
  207. package/corpus/templates/clips/AGENTS.md +5 -0
  208. package/corpus/templates/clips/actions/create-recording-agent-link.ts +15 -20
  209. package/corpus/templates/clips/actions/delete-recording-permanent.ts +74 -34
  210. package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
  211. package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
  212. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
  213. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +165 -3
  214. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +101 -57
  215. package/corpus/templates/clips/app/components/editor/split-button.tsx +4 -5
  216. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
  217. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +16 -11
  218. package/corpus/templates/clips/app/components/editor/timeline.tsx +4 -6
  219. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
  220. package/corpus/templates/clips/app/components/editor/trim-handles.tsx +4 -7
  221. package/corpus/templates/clips/app/components/editor/waveform.tsx +13 -4
  222. package/corpus/templates/clips/app/components/layout/Header.tsx +4 -2
  223. package/corpus/templates/clips/app/components/layout/Layout.tsx +2 -3
  224. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
  225. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
  226. package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -2
  227. package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
  228. package/corpus/templates/clips/app/components/library/library-grid.tsx +7 -7
  229. package/corpus/templates/clips/app/components/library/library-layout.tsx +16 -16
  230. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
  231. package/corpus/templates/clips/app/components/library/recording-card.tsx +16 -12
  232. package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
  233. package/corpus/templates/clips/app/components/library/sort-menu.tsx +3 -4
  234. package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
  235. package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +6 -2
  236. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
  237. package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
  238. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
  239. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
  240. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +9 -9
  241. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -6
  242. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +4 -4
  243. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +2 -3
  244. package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
  245. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +6 -7
  246. package/corpus/templates/clips/app/components/player/insights-panel.tsx +1 -2
  247. package/corpus/templates/clips/app/components/player/player-controls.tsx +15 -15
  248. package/corpus/templates/clips/app/components/player/reactions-tray.tsx +3 -3
  249. package/corpus/templates/clips/app/components/player/settings-panel.tsx +12 -13
  250. package/corpus/templates/clips/app/components/player/share-dialog.tsx +20 -11
  251. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +2 -3
  252. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
  253. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
  254. package/corpus/templates/clips/app/components/player/video-player.tsx +9 -9
  255. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
  256. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  257. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +21 -21
  258. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +5 -6
  259. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +6 -7
  260. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
  261. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +9 -5
  262. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +19 -9
  263. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +9 -10
  264. package/corpus/templates/clips/app/components/workspace/members-list.tsx +10 -11
  265. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +1 -2
  266. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +2 -3
  267. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -3
  268. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +1 -2
  269. package/corpus/templates/clips/app/root.tsx +10 -10
  270. package/corpus/templates/clips/app/routes/_app.dictate.tsx +13 -13
  271. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +35 -26
  272. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
  273. package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
  274. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +31 -31
  275. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +13 -8
  276. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
  277. package/corpus/templates/clips/app/routes/_app.trash.tsx +10 -10
  278. package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
  279. package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
  280. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  281. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +1 -1
  282. package/corpus/templates/clips/app/routes/invite.$token.tsx +13 -8
  283. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +28 -23
  284. package/corpus/templates/clips/app/routes/record.tsx +3 -3
  285. package/corpus/templates/clips/app/routes/share.$shareId.tsx +41 -20
  286. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -2
  287. package/corpus/templates/clips/changelog/2026-07-05-desktop-full-screen-recordings-with-system-audio-now-finaliz.md +6 -0
  288. package/corpus/templates/clips/changelog/2026-07-05-desktop-recording-shortcut-start-stop.md +6 -0
  289. package/corpus/templates/clips/changelog/2026-07-05-desktop-recordings-no-longer-fail-when-saved-capture-constra.md +6 -0
  290. package/corpus/templates/clips/changelog/2026-07-05-permanently-deleted-clips-now-clean-up-s3-media-objects.md +6 -0
  291. package/corpus/templates/clips/changelog/2026-07-05-timeline-zoom-controls-are-now-visible-in-the-clip-editor-an.md +6 -0
  292. package/corpus/templates/clips/desktop/src/app.tsx +98 -1
  293. package/corpus/templates/clips/desktop/src/components/MediaDeviceRow.tsx +3 -2
  294. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +121 -0
  295. package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -84
  296. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +77 -39
  297. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +60 -8
  298. package/corpus/templates/clips/package.json +1 -0
  299. package/corpus/templates/clips/server/lib/public-agent-context.ts +17 -12
  300. package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +110 -0
  301. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +126 -0
  302. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +47 -11
  303. package/corpus/templates/clips/shared/agent-context.ts +23 -21
  304. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
  305. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  306. package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
  307. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  308. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
  309. package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
  310. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +36 -36
  311. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +3 -3
  312. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
  313. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +23 -23
  314. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +4 -5
  315. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +4 -5
  316. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  317. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
  318. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
  319. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
  320. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
  321. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  322. package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
  323. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +8 -9
  324. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +18 -19
  325. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +20 -21
  326. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
  327. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +18 -19
  328. package/corpus/templates/content/app/components/layout/Header.tsx +4 -2
  329. package/corpus/templates/content/app/components/layout/Layout.tsx +3 -3
  330. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +22 -22
  331. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
  332. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
  333. package/corpus/templates/content/app/root.tsx +4 -5
  334. package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
  335. package/corpus/templates/content/app/routes/_app.local-files.tsx +11 -11
  336. package/corpus/templates/content/app/routes/_app.settings.tsx +3 -3
  337. package/corpus/templates/content/package.json +1 -0
  338. package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
  339. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
  340. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
  341. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +21 -16
  342. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +3 -3
  343. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
  344. package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
  345. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +8 -9
  346. package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
  347. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +5 -6
  348. package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
  349. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
  350. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
  351. package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
  352. package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
  353. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
  354. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
  355. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +3 -3
  356. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +6 -6
  357. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +1 -2
  358. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +17 -17
  359. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
  360. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
  361. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
  362. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
  363. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
  364. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
  365. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
  366. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
  367. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
  368. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
  369. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
  370. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
  371. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +2 -3
  372. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +18 -15
  373. package/corpus/templates/design/app/components/layout/Header.tsx +4 -2
  374. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  375. package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
  376. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
  377. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
  378. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
  379. package/corpus/templates/design/app/pages/DesignEditor.tsx +51 -47
  380. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +8 -8
  381. package/corpus/templates/design/app/pages/DesignSystems.tsx +32 -32
  382. package/corpus/templates/design/app/pages/Index.tsx +28 -28
  383. package/corpus/templates/design/app/pages/NotFound.tsx +1 -2
  384. package/corpus/templates/design/app/pages/Present.tsx +1 -2
  385. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -2
  386. package/corpus/templates/design/app/root.tsx +1 -1
  387. package/corpus/templates/design/app/routes/settings.tsx +3 -3
  388. package/corpus/templates/design/package.json +1 -0
  389. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
  390. package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
  391. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +10 -11
  392. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +13 -10
  393. package/corpus/templates/forms/app/components/layout/Header.tsx +4 -2
  394. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  395. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +15 -15
  396. package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
  397. package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
  398. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -24
  399. package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
  400. package/corpus/templates/forms/app/pages/FormsListPage.tsx +25 -25
  401. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
  402. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
  403. package/corpus/templates/forms/app/routes/_app.settings.tsx +5 -5
  404. package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
  405. package/corpus/templates/forms/package.json +1 -0
  406. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
  407. package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
  408. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
  409. package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
  410. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -2
  411. package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
  412. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  413. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +11 -7
  414. package/corpus/templates/macros/app/components/layout/Header.tsx +4 -2
  415. package/corpus/templates/macros/app/root.tsx +1 -1
  416. package/corpus/templates/macros/app/routes/_index.tsx +1 -1
  417. package/corpus/templates/macros/app/routes/analytics.tsx +9 -9
  418. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  419. package/corpus/templates/macros/package.json +1 -0
  420. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
  421. package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
  422. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
  423. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +3 -4
  424. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
  425. package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -9
  426. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +18 -18
  427. package/corpus/templates/mail/app/components/email/EmailList.tsx +17 -17
  428. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
  429. package/corpus/templates/mail/app/components/email/EmailThread.tsx +6 -6
  430. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +11 -11
  431. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
  432. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
  433. package/corpus/templates/mail/app/components/email/RecipientInput.tsx +13 -13
  434. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +4 -5
  435. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
  436. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
  437. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +12 -12
  438. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +5 -5
  439. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
  440. package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
  441. package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
  442. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
  443. package/corpus/templates/mail/app/pages/NotFound.tsx +1 -2
  444. package/corpus/templates/mail/app/pages/SettingsPage.tsx +25 -25
  445. package/corpus/templates/mail/app/root.tsx +1 -1
  446. package/corpus/templates/mail/app/routes/_index.tsx +1 -2
  447. package/corpus/templates/mail/app/routes/email.tsx +2 -2
  448. package/corpus/templates/mail/package.json +1 -0
  449. package/corpus/templates/plan/app/components/layout/Header.tsx +4 -2
  450. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -6
  451. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
  452. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +2 -3
  453. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
  454. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +1 -2
  455. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
  456. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  457. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +83 -82
  458. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
  459. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
  460. package/corpus/templates/plan/app/pages/PlansPage.tsx +84 -77
  461. package/corpus/templates/plan/app/root.tsx +1 -1
  462. package/corpus/templates/plan/app/routes/_index.tsx +2 -1
  463. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
  464. package/corpus/templates/plan/app/routes/plans.$id.tsx +2 -1
  465. package/corpus/templates/plan/app/routes/plans.tsx +2 -1
  466. package/corpus/templates/plan/app/routes/recaps.$id.tsx +2 -1
  467. package/corpus/templates/plan/app/routes/recaps.tsx +2 -1
  468. package/corpus/templates/plan/app/routes/settings.tsx +5 -5
  469. package/corpus/templates/plan/changelog/2026-07-05-images-in-plan-documents-open-reliably-in-the-full-size-prev.md +6 -0
  470. package/corpus/templates/plan/package.json +1 -0
  471. package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
  472. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
  473. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
  474. package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +1 -2
  475. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
  476. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -3
  477. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +13 -14
  478. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
  479. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
  480. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -6
  481. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +13 -13
  482. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +9 -10
  483. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +5 -6
  484. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
  485. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -4
  486. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +4 -5
  487. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -4
  488. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +1 -2
  489. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
  490. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
  491. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +6 -6
  492. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +1 -2
  493. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
  494. package/corpus/templates/slides/app/components/layout/Header.tsx +4 -2
  495. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  496. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  497. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
  498. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
  499. package/corpus/templates/slides/app/pages/DeckEditor.tsx +3 -3
  500. package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
  501. package/corpus/templates/slides/app/pages/Index.tsx +18 -15
  502. package/corpus/templates/slides/app/root.tsx +3 -3
  503. package/corpus/templates/slides/app/routes/settings.tsx +5 -5
  504. package/corpus/templates/slides/package.json +1 -0
  505. package/dist/application-state/emitter.d.ts +9 -2
  506. package/dist/application-state/emitter.d.ts.map +1 -1
  507. package/dist/application-state/emitter.js +25 -3
  508. package/dist/application-state/emitter.js.map +1 -1
  509. package/dist/cli/create.d.ts +2 -1
  510. package/dist/cli/create.d.ts.map +1 -1
  511. package/dist/cli/create.js +52 -4
  512. package/dist/cli/create.js.map +1 -1
  513. package/dist/cli/workspacify.d.ts +2 -0
  514. package/dist/cli/workspacify.d.ts.map +1 -1
  515. package/dist/cli/workspacify.js +8 -4
  516. package/dist/cli/workspacify.js.map +1 -1
  517. package/dist/client/components/ui/dialog.d.ts +1 -13
  518. package/dist/client/components/ui/dialog.d.ts.map +1 -1
  519. package/dist/client/components/ui/dialog.js +1 -20
  520. package/dist/client/components/ui/dialog.js.map +1 -1
  521. package/dist/client/components/ui/dropdown-menu.d.ts +1 -27
  522. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -1
  523. package/dist/client/components/ui/dropdown-menu.js +1 -33
  524. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  525. package/dist/client/components/ui/hover-card.d.ts +1 -6
  526. package/dist/client/components/ui/hover-card.d.ts.map +1 -1
  527. package/dist/client/components/ui/hover-card.js +1 -9
  528. package/dist/client/components/ui/hover-card.js.map +1 -1
  529. package/dist/client/components/ui/popover.d.ts +1 -7
  530. package/dist/client/components/ui/popover.d.ts.map +1 -1
  531. package/dist/client/components/ui/popover.js +1 -10
  532. package/dist/client/components/ui/popover.js.map +1 -1
  533. package/dist/client/components/ui/sheet.d.ts +1 -15
  534. package/dist/client/components/ui/sheet.d.ts.map +1 -1
  535. package/dist/client/components/ui/sheet.js +1 -22
  536. package/dist/client/components/ui/sheet.js.map +1 -1
  537. package/dist/client/components/ui/tooltip.d.ts +1 -8
  538. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  539. package/dist/client/components/ui/tooltip.js +1 -17
  540. package/dist/client/components/ui/tooltip.js.map +1 -1
  541. package/dist/notifications/routes.d.ts +1 -1
  542. package/dist/resources/handlers.d.ts +1 -1
  543. package/dist/secrets/crypto.d.ts.map +1 -1
  544. package/dist/secrets/crypto.js +37 -4
  545. package/dist/secrets/crypto.js.map +1 -1
  546. package/dist/server/agent-access.d.ts +16 -0
  547. package/dist/server/agent-access.d.ts.map +1 -0
  548. package/dist/server/agent-access.js +25 -0
  549. package/dist/server/agent-access.js.map +1 -0
  550. package/dist/server/h3-helpers.d.ts.map +1 -1
  551. package/dist/server/h3-helpers.js +12 -2
  552. package/dist/server/h3-helpers.js.map +1 -1
  553. package/dist/server/index.d.ts +1 -0
  554. package/dist/server/index.d.ts.map +1 -1
  555. package/dist/server/index.js +1 -0
  556. package/dist/server/index.js.map +1 -1
  557. package/dist/server/request-context.d.ts +17 -0
  558. package/dist/server/request-context.d.ts.map +1 -1
  559. package/dist/server/request-context.js +46 -6
  560. package/dist/server/request-context.js.map +1 -1
  561. package/dist/server/transcribe-voice.d.ts +1 -1
  562. package/dist/shared/agent-access.d.ts +29 -0
  563. package/dist/shared/agent-access.d.ts.map +1 -0
  564. package/dist/shared/agent-access.js +57 -0
  565. package/dist/shared/agent-access.js.map +1 -0
  566. package/dist/shared/index.d.ts +1 -0
  567. package/dist/shared/index.d.ts.map +1 -1
  568. package/dist/shared/index.js +1 -0
  569. package/dist/shared/index.js.map +1 -1
  570. package/docs/content/components.mdx +13 -0
  571. package/docs/content/creating-templates.mdx +7 -0
  572. package/docs/content/locales/ar-SA/components.mdx +9 -0
  573. package/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  574. package/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  575. package/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  576. package/docs/content/locales/ar-SA/tracking.mdx +6 -0
  577. package/docs/content/locales/de-DE/components.mdx +9 -0
  578. package/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  579. package/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  580. package/docs/content/locales/de-DE/template-clips.mdx +7 -0
  581. package/docs/content/locales/de-DE/tracking.mdx +6 -0
  582. package/docs/content/locales/es-ES/components.mdx +9 -0
  583. package/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  584. package/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  585. package/docs/content/locales/es-ES/template-clips.mdx +7 -0
  586. package/docs/content/locales/es-ES/tracking.mdx +6 -0
  587. package/docs/content/locales/fr-FR/components.mdx +9 -0
  588. package/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  589. package/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  590. package/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  591. package/docs/content/locales/fr-FR/tracking.mdx +6 -0
  592. package/docs/content/locales/hi-IN/components.mdx +9 -0
  593. package/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  594. package/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  595. package/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  596. package/docs/content/locales/hi-IN/tracking.mdx +6 -0
  597. package/docs/content/locales/ja-JP/components.mdx +9 -0
  598. package/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  599. package/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  600. package/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  601. package/docs/content/locales/ja-JP/tracking.mdx +6 -0
  602. package/docs/content/locales/ko-KR/components.mdx +9 -0
  603. package/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  604. package/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  605. package/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  606. package/docs/content/locales/ko-KR/tracking.mdx +6 -0
  607. package/docs/content/locales/pt-BR/components.mdx +9 -0
  608. package/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  609. package/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  610. package/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  611. package/docs/content/locales/pt-BR/tracking.mdx +6 -0
  612. package/docs/content/locales/zh-CN/components.mdx +9 -0
  613. package/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  614. package/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  615. package/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  616. package/docs/content/locales/zh-CN/tracking.mdx +6 -0
  617. package/docs/content/locales/zh-TW/components.mdx +9 -0
  618. package/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  619. package/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  620. package/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  621. package/docs/content/locales/zh-TW/tracking.mdx +6 -0
  622. package/docs/content/template-analytics.mdx +6 -0
  623. package/docs/content/template-clips.mdx +7 -0
  624. package/docs/content/tracking.mdx +6 -0
  625. package/package.json +9 -2
  626. package/corpus/templates/analytics/app/components/ui/accordion.tsx +0 -56
  627. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +0 -139
  628. package/corpus/templates/analytics/app/components/ui/alert.tsx +0 -59
  629. package/corpus/templates/analytics/app/components/ui/aspect-ratio.tsx +0 -5
  630. package/corpus/templates/analytics/app/components/ui/avatar.tsx +0 -48
  631. package/corpus/templates/analytics/app/components/ui/badge.tsx +0 -37
  632. package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +0 -115
  633. package/corpus/templates/analytics/app/components/ui/button.tsx +0 -57
  634. package/corpus/templates/analytics/app/components/ui/card.tsx +0 -86
  635. package/corpus/templates/analytics/app/components/ui/carousel.tsx +0 -260
  636. package/corpus/templates/analytics/app/components/ui/checkbox.tsx +0 -28
  637. package/corpus/templates/analytics/app/components/ui/collapsible.tsx +0 -9
  638. package/corpus/templates/analytics/app/components/ui/command.tsx +0 -154
  639. package/corpus/templates/analytics/app/components/ui/context-menu.tsx +0 -202
  640. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +0 -68
  641. package/corpus/templates/analytics/app/components/ui/dialog.tsx +0 -130
  642. package/corpus/templates/analytics/app/components/ui/drawer.tsx +0 -116
  643. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +0 -212
  644. package/corpus/templates/analytics/app/components/ui/form.tsx +0 -177
  645. package/corpus/templates/analytics/app/components/ui/hover-card.tsx +0 -27
  646. package/corpus/templates/analytics/app/components/ui/input-otp.tsx +0 -69
  647. package/corpus/templates/analytics/app/components/ui/input.tsx +0 -22
  648. package/corpus/templates/analytics/app/components/ui/label.tsx +0 -24
  649. package/corpus/templates/analytics/app/components/ui/menubar.tsx +0 -234
  650. package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +0 -128
  651. package/corpus/templates/analytics/app/components/ui/pagination.tsx +0 -121
  652. package/corpus/templates/analytics/app/components/ui/popover.tsx +0 -44
  653. package/corpus/templates/analytics/app/components/ui/progress.tsx +0 -26
  654. package/corpus/templates/analytics/app/components/ui/radio-group.tsx +0 -42
  655. package/corpus/templates/analytics/app/components/ui/resizable.tsx +0 -43
  656. package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +0 -46
  657. package/corpus/templates/analytics/app/components/ui/select.tsx +0 -158
  658. package/corpus/templates/analytics/app/components/ui/separator.tsx +0 -29
  659. package/corpus/templates/analytics/app/components/ui/sheet.tsx +0 -160
  660. package/corpus/templates/analytics/app/components/ui/sidebar.tsx +0 -782
  661. package/corpus/templates/analytics/app/components/ui/skeleton.tsx +0 -15
  662. package/corpus/templates/analytics/app/components/ui/slider.tsx +0 -26
  663. package/corpus/templates/analytics/app/components/ui/sonner.tsx +0 -58
  664. package/corpus/templates/analytics/app/components/ui/spinner.tsx +0 -17
  665. package/corpus/templates/analytics/app/components/ui/switch.tsx +0 -27
  666. package/corpus/templates/analytics/app/components/ui/table.tsx +0 -117
  667. package/corpus/templates/analytics/app/components/ui/tabs.tsx +0 -53
  668. package/corpus/templates/analytics/app/components/ui/textarea.tsx +0 -23
  669. package/corpus/templates/analytics/app/components/ui/toast.tsx +0 -127
  670. package/corpus/templates/analytics/app/components/ui/toaster.tsx +0 -33
  671. package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +0 -59
  672. package/corpus/templates/analytics/app/components/ui/toggle.tsx +0 -43
  673. package/corpus/templates/analytics/app/components/ui/tooltip.tsx +0 -30
  674. package/corpus/templates/analytics/app/components/ui/use-toast.ts +0 -3
  675. package/corpus/templates/analytics/app/hooks/use-mobile.tsx +0 -21
  676. package/corpus/templates/analytics/app/hooks/use-toast.ts +0 -188
  677. package/corpus/templates/assets/app/components/layout/HeaderActions.tsx +0 -84
  678. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +0 -139
  679. package/corpus/templates/assets/app/components/ui/alert.tsx +0 -59
  680. package/corpus/templates/assets/app/components/ui/avatar.tsx +0 -48
  681. package/corpus/templates/assets/app/components/ui/badge.tsx +0 -37
  682. package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +0 -115
  683. package/corpus/templates/assets/app/components/ui/button.tsx +0 -57
  684. package/corpus/templates/assets/app/components/ui/card.tsx +0 -86
  685. package/corpus/templates/assets/app/components/ui/checkbox.tsx +0 -28
  686. package/corpus/templates/assets/app/components/ui/dialog.tsx +0 -130
  687. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +0 -212
  688. package/corpus/templates/assets/app/components/ui/hover-card.tsx +0 -27
  689. package/corpus/templates/assets/app/components/ui/input.tsx +0 -22
  690. package/corpus/templates/assets/app/components/ui/label.tsx +0 -24
  691. package/corpus/templates/assets/app/components/ui/pagination.tsx +0 -121
  692. package/corpus/templates/assets/app/components/ui/popover.tsx +0 -44
  693. package/corpus/templates/assets/app/components/ui/progress.tsx +0 -26
  694. package/corpus/templates/assets/app/components/ui/scroll-area.tsx +0 -46
  695. package/corpus/templates/assets/app/components/ui/select.tsx +0 -158
  696. package/corpus/templates/assets/app/components/ui/separator.tsx +0 -29
  697. package/corpus/templates/assets/app/components/ui/sheet.tsx +0 -160
  698. package/corpus/templates/assets/app/components/ui/skeleton.tsx +0 -15
  699. package/corpus/templates/assets/app/components/ui/slider.tsx +0 -26
  700. package/corpus/templates/assets/app/components/ui/sonner.tsx +0 -58
  701. package/corpus/templates/assets/app/components/ui/spinner.tsx +0 -17
  702. package/corpus/templates/assets/app/components/ui/table.tsx +0 -117
  703. package/corpus/templates/assets/app/components/ui/tabs.tsx +0 -53
  704. package/corpus/templates/assets/app/components/ui/tooltip.tsx +0 -30
  705. package/corpus/templates/brain/app/components/ui/badge.tsx +0 -37
  706. package/corpus/templates/brain/app/components/ui/button.tsx +0 -57
  707. package/corpus/templates/brain/app/components/ui/card.tsx +0 -86
  708. package/corpus/templates/brain/app/components/ui/input.tsx +0 -22
  709. package/corpus/templates/brain/app/components/ui/label.tsx +0 -24
  710. package/corpus/templates/brain/app/components/ui/progress.tsx +0 -26
  711. package/corpus/templates/brain/app/components/ui/select.tsx +0 -158
  712. package/corpus/templates/brain/app/components/ui/separator.tsx +0 -29
  713. package/corpus/templates/brain/app/components/ui/sheet.tsx +0 -160
  714. package/corpus/templates/brain/app/components/ui/skeleton.tsx +0 -15
  715. package/corpus/templates/brain/app/components/ui/sonner.tsx +0 -58
  716. package/corpus/templates/brain/app/components/ui/switch.tsx +0 -27
  717. package/corpus/templates/brain/app/components/ui/table.tsx +0 -117
  718. package/corpus/templates/brain/app/components/ui/textarea.tsx +0 -23
  719. package/corpus/templates/brain/app/components/ui/tooltip.tsx +0 -30
  720. package/corpus/templates/calendar/app/components/ui/accordion.tsx +0 -56
  721. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +0 -139
  722. package/corpus/templates/calendar/app/components/ui/alert.tsx +0 -59
  723. package/corpus/templates/calendar/app/components/ui/aspect-ratio.tsx +0 -5
  724. package/corpus/templates/calendar/app/components/ui/avatar.tsx +0 -48
  725. package/corpus/templates/calendar/app/components/ui/badge.tsx +0 -37
  726. package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +0 -115
  727. package/corpus/templates/calendar/app/components/ui/button.tsx +0 -57
  728. package/corpus/templates/calendar/app/components/ui/calendar.tsx +0 -68
  729. package/corpus/templates/calendar/app/components/ui/card.tsx +0 -86
  730. package/corpus/templates/calendar/app/components/ui/carousel.tsx +0 -260
  731. package/corpus/templates/calendar/app/components/ui/chart.tsx +0 -375
  732. package/corpus/templates/calendar/app/components/ui/checkbox.tsx +0 -28
  733. package/corpus/templates/calendar/app/components/ui/collapsible.tsx +0 -9
  734. package/corpus/templates/calendar/app/components/ui/command.tsx +0 -154
  735. package/corpus/templates/calendar/app/components/ui/context-menu.tsx +0 -202
  736. package/corpus/templates/calendar/app/components/ui/dialog.tsx +0 -130
  737. package/corpus/templates/calendar/app/components/ui/drawer.tsx +0 -116
  738. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +0 -212
  739. package/corpus/templates/calendar/app/components/ui/form.tsx +0 -177
  740. package/corpus/templates/calendar/app/components/ui/hover-card.tsx +0 -27
  741. package/corpus/templates/calendar/app/components/ui/input-otp.tsx +0 -69
  742. package/corpus/templates/calendar/app/components/ui/input.tsx +0 -22
  743. package/corpus/templates/calendar/app/components/ui/label.tsx +0 -24
  744. package/corpus/templates/calendar/app/components/ui/menubar.tsx +0 -234
  745. package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +0 -128
  746. package/corpus/templates/calendar/app/components/ui/pagination.tsx +0 -121
  747. package/corpus/templates/calendar/app/components/ui/popover.tsx +0 -44
  748. package/corpus/templates/calendar/app/components/ui/progress.tsx +0 -26
  749. package/corpus/templates/calendar/app/components/ui/radio-group.tsx +0 -42
  750. package/corpus/templates/calendar/app/components/ui/resizable.tsx +0 -43
  751. package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +0 -46
  752. package/corpus/templates/calendar/app/components/ui/select.tsx +0 -158
  753. package/corpus/templates/calendar/app/components/ui/separator.tsx +0 -29
  754. package/corpus/templates/calendar/app/components/ui/sheet.tsx +0 -160
  755. package/corpus/templates/calendar/app/components/ui/sidebar.tsx +0 -782
  756. package/corpus/templates/calendar/app/components/ui/skeleton.tsx +0 -15
  757. package/corpus/templates/calendar/app/components/ui/slider.tsx +0 -26
  758. package/corpus/templates/calendar/app/components/ui/spinner.tsx +0 -17
  759. package/corpus/templates/calendar/app/components/ui/switch.tsx +0 -27
  760. package/corpus/templates/calendar/app/components/ui/table.tsx +0 -117
  761. package/corpus/templates/calendar/app/components/ui/tabs.tsx +0 -53
  762. package/corpus/templates/calendar/app/components/ui/textarea.tsx +0 -23
  763. package/corpus/templates/calendar/app/components/ui/toast.tsx +0 -127
  764. package/corpus/templates/calendar/app/components/ui/toaster.tsx +0 -33
  765. package/corpus/templates/calendar/app/components/ui/toggle-group.tsx +0 -59
  766. package/corpus/templates/calendar/app/components/ui/toggle.tsx +0 -43
  767. package/corpus/templates/calendar/app/components/ui/tooltip.tsx +0 -30
  768. package/corpus/templates/calendar/app/components/ui/use-toast.ts +0 -3
  769. package/corpus/templates/calendar/app/hooks/use-mobile.tsx +0 -21
  770. package/corpus/templates/calendar/app/hooks/use-toast.ts +0 -188
  771. package/corpus/templates/chat/app/components/layout/HeaderActions.tsx +0 -84
  772. package/corpus/templates/chat/app/components/ui/accordion.tsx +0 -56
  773. package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +0 -139
  774. package/corpus/templates/chat/app/components/ui/alert.tsx +0 -59
  775. package/corpus/templates/chat/app/components/ui/aspect-ratio.tsx +0 -5
  776. package/corpus/templates/chat/app/components/ui/avatar.tsx +0 -48
  777. package/corpus/templates/chat/app/components/ui/badge.tsx +0 -37
  778. package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +0 -115
  779. package/corpus/templates/chat/app/components/ui/button.tsx +0 -57
  780. package/corpus/templates/chat/app/components/ui/calendar.tsx +0 -68
  781. package/corpus/templates/chat/app/components/ui/card.tsx +0 -86
  782. package/corpus/templates/chat/app/components/ui/carousel.tsx +0 -260
  783. package/corpus/templates/chat/app/components/ui/chart.tsx +0 -375
  784. package/corpus/templates/chat/app/components/ui/checkbox.tsx +0 -28
  785. package/corpus/templates/chat/app/components/ui/collapsible.tsx +0 -9
  786. package/corpus/templates/chat/app/components/ui/command.tsx +0 -154
  787. package/corpus/templates/chat/app/components/ui/context-menu.tsx +0 -202
  788. package/corpus/templates/chat/app/components/ui/dialog.tsx +0 -130
  789. package/corpus/templates/chat/app/components/ui/drawer.tsx +0 -116
  790. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +0 -212
  791. package/corpus/templates/chat/app/components/ui/form.tsx +0 -177
  792. package/corpus/templates/chat/app/components/ui/hover-card.tsx +0 -27
  793. package/corpus/templates/chat/app/components/ui/input-otp.tsx +0 -69
  794. package/corpus/templates/chat/app/components/ui/input.tsx +0 -22
  795. package/corpus/templates/chat/app/components/ui/label.tsx +0 -24
  796. package/corpus/templates/chat/app/components/ui/menubar.tsx +0 -234
  797. package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +0 -128
  798. package/corpus/templates/chat/app/components/ui/pagination.tsx +0 -121
  799. package/corpus/templates/chat/app/components/ui/popover.tsx +0 -44
  800. package/corpus/templates/chat/app/components/ui/progress.tsx +0 -26
  801. package/corpus/templates/chat/app/components/ui/radio-group.tsx +0 -42
  802. package/corpus/templates/chat/app/components/ui/resizable.tsx +0 -43
  803. package/corpus/templates/chat/app/components/ui/scroll-area.tsx +0 -46
  804. package/corpus/templates/chat/app/components/ui/select.tsx +0 -158
  805. package/corpus/templates/chat/app/components/ui/separator.tsx +0 -29
  806. package/corpus/templates/chat/app/components/ui/sheet.tsx +0 -160
  807. package/corpus/templates/chat/app/components/ui/sidebar.tsx +0 -782
  808. package/corpus/templates/chat/app/components/ui/skeleton.tsx +0 -15
  809. package/corpus/templates/chat/app/components/ui/slider.tsx +0 -26
  810. package/corpus/templates/chat/app/components/ui/sonner.tsx +0 -58
  811. package/corpus/templates/chat/app/components/ui/spinner.tsx +0 -17
  812. package/corpus/templates/chat/app/components/ui/switch.tsx +0 -27
  813. package/corpus/templates/chat/app/components/ui/table.tsx +0 -117
  814. package/corpus/templates/chat/app/components/ui/tabs.tsx +0 -53
  815. package/corpus/templates/chat/app/components/ui/textarea.tsx +0 -23
  816. package/corpus/templates/chat/app/components/ui/toast.tsx +0 -127
  817. package/corpus/templates/chat/app/components/ui/toaster.tsx +0 -33
  818. package/corpus/templates/chat/app/components/ui/toggle-group.tsx +0 -59
  819. package/corpus/templates/chat/app/components/ui/toggle.tsx +0 -43
  820. package/corpus/templates/chat/app/components/ui/tooltip.tsx +0 -30
  821. package/corpus/templates/chat/app/components/ui/use-toast.ts +0 -3
  822. package/corpus/templates/chat/app/hooks/use-mobile.tsx +0 -21
  823. package/corpus/templates/chat/app/hooks/use-toast.ts +0 -188
  824. package/corpus/templates/clips/app/components/layout/HeaderActions.tsx +0 -84
  825. package/corpus/templates/clips/app/components/ui/accordion.tsx +0 -56
  826. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +0 -139
  827. package/corpus/templates/clips/app/components/ui/alert.tsx +0 -59
  828. package/corpus/templates/clips/app/components/ui/aspect-ratio.tsx +0 -5
  829. package/corpus/templates/clips/app/components/ui/avatar.tsx +0 -48
  830. package/corpus/templates/clips/app/components/ui/badge.tsx +0 -37
  831. package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +0 -115
  832. package/corpus/templates/clips/app/components/ui/button.tsx +0 -57
  833. package/corpus/templates/clips/app/components/ui/calendar.tsx +0 -68
  834. package/corpus/templates/clips/app/components/ui/card.tsx +0 -86
  835. package/corpus/templates/clips/app/components/ui/carousel.tsx +0 -260
  836. package/corpus/templates/clips/app/components/ui/chart.tsx +0 -375
  837. package/corpus/templates/clips/app/components/ui/checkbox.tsx +0 -28
  838. package/corpus/templates/clips/app/components/ui/collapsible.tsx +0 -9
  839. package/corpus/templates/clips/app/components/ui/command.tsx +0 -154
  840. package/corpus/templates/clips/app/components/ui/context-menu.tsx +0 -202
  841. package/corpus/templates/clips/app/components/ui/dialog.tsx +0 -130
  842. package/corpus/templates/clips/app/components/ui/drawer.tsx +0 -116
  843. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +0 -212
  844. package/corpus/templates/clips/app/components/ui/form.tsx +0 -177
  845. package/corpus/templates/clips/app/components/ui/hover-card.tsx +0 -27
  846. package/corpus/templates/clips/app/components/ui/input-otp.tsx +0 -69
  847. package/corpus/templates/clips/app/components/ui/input.tsx +0 -22
  848. package/corpus/templates/clips/app/components/ui/label.tsx +0 -24
  849. package/corpus/templates/clips/app/components/ui/menubar.tsx +0 -234
  850. package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +0 -128
  851. package/corpus/templates/clips/app/components/ui/pagination.tsx +0 -121
  852. package/corpus/templates/clips/app/components/ui/popover.tsx +0 -44
  853. package/corpus/templates/clips/app/components/ui/progress.tsx +0 -26
  854. package/corpus/templates/clips/app/components/ui/radio-group.tsx +0 -42
  855. package/corpus/templates/clips/app/components/ui/resizable.tsx +0 -43
  856. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +0 -46
  857. package/corpus/templates/clips/app/components/ui/select.tsx +0 -158
  858. package/corpus/templates/clips/app/components/ui/separator.tsx +0 -29
  859. package/corpus/templates/clips/app/components/ui/sheet.tsx +0 -160
  860. package/corpus/templates/clips/app/components/ui/sidebar.tsx +0 -782
  861. package/corpus/templates/clips/app/components/ui/skeleton.tsx +0 -15
  862. package/corpus/templates/clips/app/components/ui/slider.tsx +0 -26
  863. package/corpus/templates/clips/app/components/ui/sonner.tsx +0 -58
  864. package/corpus/templates/clips/app/components/ui/spinner.tsx +0 -17
  865. package/corpus/templates/clips/app/components/ui/switch.tsx +0 -27
  866. package/corpus/templates/clips/app/components/ui/table.tsx +0 -117
  867. package/corpus/templates/clips/app/components/ui/tabs.tsx +0 -53
  868. package/corpus/templates/clips/app/components/ui/textarea.tsx +0 -23
  869. package/corpus/templates/clips/app/components/ui/toast.tsx +0 -127
  870. package/corpus/templates/clips/app/components/ui/toaster.tsx +0 -33
  871. package/corpus/templates/clips/app/components/ui/toggle-group.tsx +0 -59
  872. package/corpus/templates/clips/app/components/ui/toggle.tsx +0 -43
  873. package/corpus/templates/clips/app/components/ui/tooltip.tsx +0 -30
  874. package/corpus/templates/clips/app/components/ui/use-toast.ts +0 -3
  875. package/corpus/templates/clips/app/hooks/use-mobile.tsx +0 -21
  876. package/corpus/templates/clips/app/hooks/use-toast.ts +0 -188
  877. package/corpus/templates/content/app/components/layout/HeaderActions.tsx +0 -84
  878. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +0 -139
  879. package/corpus/templates/content/app/components/ui/button.tsx +0 -57
  880. package/corpus/templates/content/app/components/ui/dialog.tsx +0 -130
  881. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +0 -212
  882. package/corpus/templates/content/app/components/ui/input.tsx +0 -22
  883. package/corpus/templates/content/app/components/ui/label.tsx +0 -24
  884. package/corpus/templates/content/app/components/ui/popover.tsx +0 -44
  885. package/corpus/templates/content/app/components/ui/separator.tsx +0 -29
  886. package/corpus/templates/content/app/components/ui/sheet.tsx +0 -160
  887. package/corpus/templates/content/app/components/ui/skeleton.tsx +0 -15
  888. package/corpus/templates/content/app/components/ui/sonner.tsx +0 -58
  889. package/corpus/templates/content/app/components/ui/spinner.tsx +0 -17
  890. package/corpus/templates/content/app/components/ui/table.tsx +0 -117
  891. package/corpus/templates/content/app/components/ui/toast.tsx +0 -127
  892. package/corpus/templates/content/app/components/ui/toaster.tsx +0 -33
  893. package/corpus/templates/content/app/components/ui/toggle.tsx +0 -43
  894. package/corpus/templates/content/app/components/ui/tooltip.tsx +0 -30
  895. package/corpus/templates/content/app/components/ui/use-toast.ts +0 -3
  896. package/corpus/templates/content/app/hooks/use-mobile.tsx +0 -21
  897. package/corpus/templates/content/app/hooks/use-toast.ts +0 -188
  898. package/corpus/templates/design/app/components/layout/HeaderActions.tsx +0 -84
  899. package/corpus/templates/design/app/components/ui/accordion.tsx +0 -56
  900. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +0 -139
  901. package/corpus/templates/design/app/components/ui/alert.tsx +0 -59
  902. package/corpus/templates/design/app/components/ui/aspect-ratio.tsx +0 -5
  903. package/corpus/templates/design/app/components/ui/avatar.tsx +0 -48
  904. package/corpus/templates/design/app/components/ui/badge.tsx +0 -37
  905. package/corpus/templates/design/app/components/ui/breadcrumb.tsx +0 -115
  906. package/corpus/templates/design/app/components/ui/button.tsx +0 -57
  907. package/corpus/templates/design/app/components/ui/calendar.tsx +0 -68
  908. package/corpus/templates/design/app/components/ui/card.tsx +0 -86
  909. package/corpus/templates/design/app/components/ui/carousel.tsx +0 -260
  910. package/corpus/templates/design/app/components/ui/chart.tsx +0 -375
  911. package/corpus/templates/design/app/components/ui/checkbox.tsx +0 -28
  912. package/corpus/templates/design/app/components/ui/collapsible.tsx +0 -9
  913. package/corpus/templates/design/app/components/ui/command.tsx +0 -154
  914. package/corpus/templates/design/app/components/ui/context-menu.tsx +0 -202
  915. package/corpus/templates/design/app/components/ui/dialog.tsx +0 -130
  916. package/corpus/templates/design/app/components/ui/drawer.tsx +0 -116
  917. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +0 -212
  918. package/corpus/templates/design/app/components/ui/form.tsx +0 -177
  919. package/corpus/templates/design/app/components/ui/hover-card.tsx +0 -27
  920. package/corpus/templates/design/app/components/ui/input-otp.tsx +0 -69
  921. package/corpus/templates/design/app/components/ui/input.tsx +0 -22
  922. package/corpus/templates/design/app/components/ui/label.tsx +0 -24
  923. package/corpus/templates/design/app/components/ui/menubar.tsx +0 -234
  924. package/corpus/templates/design/app/components/ui/navigation-menu.tsx +0 -128
  925. package/corpus/templates/design/app/components/ui/pagination.tsx +0 -121
  926. package/corpus/templates/design/app/components/ui/popover.tsx +0 -44
  927. package/corpus/templates/design/app/components/ui/progress.tsx +0 -26
  928. package/corpus/templates/design/app/components/ui/radio-group.tsx +0 -42
  929. package/corpus/templates/design/app/components/ui/resizable.tsx +0 -43
  930. package/corpus/templates/design/app/components/ui/scroll-area.tsx +0 -46
  931. package/corpus/templates/design/app/components/ui/select.tsx +0 -158
  932. package/corpus/templates/design/app/components/ui/separator.tsx +0 -29
  933. package/corpus/templates/design/app/components/ui/sheet.tsx +0 -160
  934. package/corpus/templates/design/app/components/ui/sidebar.tsx +0 -782
  935. package/corpus/templates/design/app/components/ui/skeleton.tsx +0 -15
  936. package/corpus/templates/design/app/components/ui/slider.tsx +0 -26
  937. package/corpus/templates/design/app/components/ui/sonner.tsx +0 -58
  938. package/corpus/templates/design/app/components/ui/spinner.tsx +0 -17
  939. package/corpus/templates/design/app/components/ui/switch.tsx +0 -27
  940. package/corpus/templates/design/app/components/ui/table.tsx +0 -117
  941. package/corpus/templates/design/app/components/ui/tabs.tsx +0 -53
  942. package/corpus/templates/design/app/components/ui/textarea.tsx +0 -23
  943. package/corpus/templates/design/app/components/ui/toast.tsx +0 -127
  944. package/corpus/templates/design/app/components/ui/toaster.tsx +0 -33
  945. package/corpus/templates/design/app/components/ui/toggle-group.tsx +0 -59
  946. package/corpus/templates/design/app/components/ui/toggle.tsx +0 -43
  947. package/corpus/templates/design/app/components/ui/tooltip.tsx +0 -30
  948. package/corpus/templates/design/app/components/ui/use-toast.ts +0 -3
  949. package/corpus/templates/design/app/hooks/use-mobile.tsx +0 -21
  950. package/corpus/templates/design/app/hooks/use-toast.ts +0 -188
  951. package/corpus/templates/forms/app/components/layout/HeaderActions.tsx +0 -84
  952. package/corpus/templates/forms/app/components/ui/accordion.tsx +0 -56
  953. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +0 -139
  954. package/corpus/templates/forms/app/components/ui/alert.tsx +0 -59
  955. package/corpus/templates/forms/app/components/ui/aspect-ratio.tsx +0 -5
  956. package/corpus/templates/forms/app/components/ui/avatar.tsx +0 -48
  957. package/corpus/templates/forms/app/components/ui/badge.tsx +0 -37
  958. package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +0 -115
  959. package/corpus/templates/forms/app/components/ui/button.tsx +0 -57
  960. package/corpus/templates/forms/app/components/ui/card.tsx +0 -86
  961. package/corpus/templates/forms/app/components/ui/carousel.tsx +0 -260
  962. package/corpus/templates/forms/app/components/ui/checkbox.tsx +0 -28
  963. package/corpus/templates/forms/app/components/ui/collapsible.tsx +0 -9
  964. package/corpus/templates/forms/app/components/ui/dialog.tsx +0 -130
  965. package/corpus/templates/forms/app/components/ui/drawer.tsx +0 -116
  966. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +0 -212
  967. package/corpus/templates/forms/app/components/ui/form.tsx +0 -177
  968. package/corpus/templates/forms/app/components/ui/hover-card.tsx +0 -27
  969. package/corpus/templates/forms/app/components/ui/input-otp.tsx +0 -69
  970. package/corpus/templates/forms/app/components/ui/input.tsx +0 -22
  971. package/corpus/templates/forms/app/components/ui/label.tsx +0 -24
  972. package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +0 -128
  973. package/corpus/templates/forms/app/components/ui/pagination.tsx +0 -121
  974. package/corpus/templates/forms/app/components/ui/popover.tsx +0 -44
  975. package/corpus/templates/forms/app/components/ui/progress.tsx +0 -26
  976. package/corpus/templates/forms/app/components/ui/radio-group.tsx +0 -42
  977. package/corpus/templates/forms/app/components/ui/resizable.tsx +0 -43
  978. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +0 -46
  979. package/corpus/templates/forms/app/components/ui/select.tsx +0 -158
  980. package/corpus/templates/forms/app/components/ui/separator.tsx +0 -29
  981. package/corpus/templates/forms/app/components/ui/sheet.tsx +0 -160
  982. package/corpus/templates/forms/app/components/ui/sidebar.tsx +0 -782
  983. package/corpus/templates/forms/app/components/ui/skeleton.tsx +0 -15
  984. package/corpus/templates/forms/app/components/ui/slider.tsx +0 -26
  985. package/corpus/templates/forms/app/components/ui/sonner.tsx +0 -58
  986. package/corpus/templates/forms/app/components/ui/spinner.tsx +0 -17
  987. package/corpus/templates/forms/app/components/ui/switch.tsx +0 -27
  988. package/corpus/templates/forms/app/components/ui/table.tsx +0 -117
  989. package/corpus/templates/forms/app/components/ui/tabs.tsx +0 -53
  990. package/corpus/templates/forms/app/components/ui/textarea.tsx +0 -23
  991. package/corpus/templates/forms/app/components/ui/toast.tsx +0 -127
  992. package/corpus/templates/forms/app/components/ui/toaster.tsx +0 -33
  993. package/corpus/templates/forms/app/components/ui/toggle-group.tsx +0 -59
  994. package/corpus/templates/forms/app/components/ui/toggle.tsx +0 -43
  995. package/corpus/templates/forms/app/components/ui/tooltip.tsx +0 -30
  996. package/corpus/templates/forms/app/hooks/use-mobile.tsx +0 -21
  997. package/corpus/templates/forms/app/hooks/use-toast.ts +0 -188
  998. package/corpus/templates/macros/app/components/layout/HeaderActions.tsx +0 -84
  999. package/corpus/templates/macros/app/components/ui/accordion.tsx +0 -56
  1000. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +0 -139
  1001. package/corpus/templates/macros/app/components/ui/alert.tsx +0 -59
  1002. package/corpus/templates/macros/app/components/ui/aspect-ratio.tsx +0 -5
  1003. package/corpus/templates/macros/app/components/ui/avatar.tsx +0 -48
  1004. package/corpus/templates/macros/app/components/ui/badge.tsx +0 -37
  1005. package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +0 -115
  1006. package/corpus/templates/macros/app/components/ui/chart.tsx +0 -375
  1007. package/corpus/templates/macros/app/components/ui/checkbox.tsx +0 -28
  1008. package/corpus/templates/macros/app/components/ui/collapsible.tsx +0 -9
  1009. package/corpus/templates/macros/app/components/ui/command.tsx +0 -154
  1010. package/corpus/templates/macros/app/components/ui/context-menu.tsx +0 -202
  1011. package/corpus/templates/macros/app/components/ui/drawer.tsx +0 -116
  1012. package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +0 -212
  1013. package/corpus/templates/macros/app/components/ui/form.tsx +0 -177
  1014. package/corpus/templates/macros/app/components/ui/hover-card.tsx +0 -27
  1015. package/corpus/templates/macros/app/components/ui/label.tsx +0 -24
  1016. package/corpus/templates/macros/app/components/ui/logo.tsx +0 -36
  1017. package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +0 -128
  1018. package/corpus/templates/macros/app/components/ui/pagination.tsx +0 -121
  1019. package/corpus/templates/macros/app/components/ui/popover.tsx +0 -44
  1020. package/corpus/templates/macros/app/components/ui/radio-group.tsx +0 -42
  1021. package/corpus/templates/macros/app/components/ui/scroll-area.tsx +0 -46
  1022. package/corpus/templates/macros/app/components/ui/select.tsx +0 -158
  1023. package/corpus/templates/macros/app/components/ui/separator.tsx +0 -29
  1024. package/corpus/templates/macros/app/components/ui/sheet.tsx +0 -160
  1025. package/corpus/templates/macros/app/components/ui/skeleton.tsx +0 -15
  1026. package/corpus/templates/macros/app/components/ui/slider.tsx +0 -26
  1027. package/corpus/templates/macros/app/components/ui/sonner.tsx +0 -58
  1028. package/corpus/templates/macros/app/components/ui/switch.tsx +0 -27
  1029. package/corpus/templates/macros/app/components/ui/table.tsx +0 -117
  1030. package/corpus/templates/macros/app/components/ui/toast.tsx +0 -127
  1031. package/corpus/templates/macros/app/components/ui/toggle-group.tsx +0 -59
  1032. package/corpus/templates/macros/app/components/ui/toggle.tsx +0 -43
  1033. package/corpus/templates/macros/app/components/ui/tooltip.tsx +0 -30
  1034. package/corpus/templates/mail/app/components/ui/accordion.tsx +0 -56
  1035. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +0 -139
  1036. package/corpus/templates/mail/app/components/ui/alert.tsx +0 -59
  1037. package/corpus/templates/mail/app/components/ui/aspect-ratio.tsx +0 -5
  1038. package/corpus/templates/mail/app/components/ui/avatar.tsx +0 -48
  1039. package/corpus/templates/mail/app/components/ui/badge.tsx +0 -37
  1040. package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +0 -115
  1041. package/corpus/templates/mail/app/components/ui/button.tsx +0 -57
  1042. package/corpus/templates/mail/app/components/ui/card.tsx +0 -86
  1043. package/corpus/templates/mail/app/components/ui/carousel.tsx +0 -260
  1044. package/corpus/templates/mail/app/components/ui/checkbox.tsx +0 -28
  1045. package/corpus/templates/mail/app/components/ui/collapsible.tsx +0 -9
  1046. package/corpus/templates/mail/app/components/ui/dialog.tsx +0 -130
  1047. package/corpus/templates/mail/app/components/ui/drawer.tsx +0 -116
  1048. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +0 -212
  1049. package/corpus/templates/mail/app/components/ui/form.tsx +0 -177
  1050. package/corpus/templates/mail/app/components/ui/hover-card.tsx +0 -27
  1051. package/corpus/templates/mail/app/components/ui/input-otp.tsx +0 -69
  1052. package/corpus/templates/mail/app/components/ui/label.tsx +0 -24
  1053. package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +0 -128
  1054. package/corpus/templates/mail/app/components/ui/pagination.tsx +0 -121
  1055. package/corpus/templates/mail/app/components/ui/popover.tsx +0 -44
  1056. package/corpus/templates/mail/app/components/ui/progress.tsx +0 -26
  1057. package/corpus/templates/mail/app/components/ui/radio-group.tsx +0 -42
  1058. package/corpus/templates/mail/app/components/ui/resizable.tsx +0 -43
  1059. package/corpus/templates/mail/app/components/ui/scroll-area.tsx +0 -46
  1060. package/corpus/templates/mail/app/components/ui/select.tsx +0 -158
  1061. package/corpus/templates/mail/app/components/ui/separator.tsx +0 -29
  1062. package/corpus/templates/mail/app/components/ui/sheet.tsx +0 -160
  1063. package/corpus/templates/mail/app/components/ui/sidebar.tsx +0 -782
  1064. package/corpus/templates/mail/app/components/ui/skeleton.tsx +0 -15
  1065. package/corpus/templates/mail/app/components/ui/slider.tsx +0 -26
  1066. package/corpus/templates/mail/app/components/ui/spinner.tsx +0 -17
  1067. package/corpus/templates/mail/app/components/ui/switch.tsx +0 -27
  1068. package/corpus/templates/mail/app/components/ui/table.tsx +0 -117
  1069. package/corpus/templates/mail/app/components/ui/tabs.tsx +0 -53
  1070. package/corpus/templates/mail/app/components/ui/toast.tsx +0 -127
  1071. package/corpus/templates/mail/app/components/ui/toaster.tsx +0 -33
  1072. package/corpus/templates/mail/app/components/ui/toggle-group.tsx +0 -59
  1073. package/corpus/templates/mail/app/components/ui/toggle.tsx +0 -43
  1074. package/corpus/templates/mail/app/components/ui/tooltip.tsx +0 -30
  1075. package/corpus/templates/mail/app/hooks/use-toast.ts +0 -188
  1076. package/corpus/templates/plan/app/components/layout/HeaderActions.tsx +0 -84
  1077. package/corpus/templates/plan/app/components/ui/accordion.tsx +0 -56
  1078. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +0 -139
  1079. package/corpus/templates/plan/app/components/ui/alert.tsx +0 -59
  1080. package/corpus/templates/plan/app/components/ui/aspect-ratio.tsx +0 -5
  1081. package/corpus/templates/plan/app/components/ui/avatar.tsx +0 -48
  1082. package/corpus/templates/plan/app/components/ui/badge.tsx +0 -37
  1083. package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +0 -115
  1084. package/corpus/templates/plan/app/components/ui/button.tsx +0 -57
  1085. package/corpus/templates/plan/app/components/ui/calendar.tsx +0 -68
  1086. package/corpus/templates/plan/app/components/ui/card.tsx +0 -86
  1087. package/corpus/templates/plan/app/components/ui/carousel.tsx +0 -260
  1088. package/corpus/templates/plan/app/components/ui/chart.tsx +0 -375
  1089. package/corpus/templates/plan/app/components/ui/checkbox.tsx +0 -28
  1090. package/corpus/templates/plan/app/components/ui/collapsible.tsx +0 -9
  1091. package/corpus/templates/plan/app/components/ui/command.tsx +0 -154
  1092. package/corpus/templates/plan/app/components/ui/context-menu.tsx +0 -202
  1093. package/corpus/templates/plan/app/components/ui/dialog.tsx +0 -130
  1094. package/corpus/templates/plan/app/components/ui/drawer.tsx +0 -116
  1095. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +0 -212
  1096. package/corpus/templates/plan/app/components/ui/form.tsx +0 -177
  1097. package/corpus/templates/plan/app/components/ui/hover-card.tsx +0 -27
  1098. package/corpus/templates/plan/app/components/ui/input-otp.tsx +0 -69
  1099. package/corpus/templates/plan/app/components/ui/input.tsx +0 -22
  1100. package/corpus/templates/plan/app/components/ui/label.tsx +0 -24
  1101. package/corpus/templates/plan/app/components/ui/menubar.tsx +0 -234
  1102. package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +0 -128
  1103. package/corpus/templates/plan/app/components/ui/pagination.tsx +0 -121
  1104. package/corpus/templates/plan/app/components/ui/popover.tsx +0 -44
  1105. package/corpus/templates/plan/app/components/ui/progress.tsx +0 -26
  1106. package/corpus/templates/plan/app/components/ui/radio-group.tsx +0 -42
  1107. package/corpus/templates/plan/app/components/ui/resizable.tsx +0 -43
  1108. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +0 -46
  1109. package/corpus/templates/plan/app/components/ui/select.tsx +0 -158
  1110. package/corpus/templates/plan/app/components/ui/separator.tsx +0 -29
  1111. package/corpus/templates/plan/app/components/ui/sheet.tsx +0 -160
  1112. package/corpus/templates/plan/app/components/ui/sidebar.tsx +0 -782
  1113. package/corpus/templates/plan/app/components/ui/skeleton.tsx +0 -15
  1114. package/corpus/templates/plan/app/components/ui/slider.tsx +0 -26
  1115. package/corpus/templates/plan/app/components/ui/sonner.tsx +0 -58
  1116. package/corpus/templates/plan/app/components/ui/spinner.tsx +0 -17
  1117. package/corpus/templates/plan/app/components/ui/switch.tsx +0 -27
  1118. package/corpus/templates/plan/app/components/ui/table.tsx +0 -117
  1119. package/corpus/templates/plan/app/components/ui/textarea.tsx +0 -23
  1120. package/corpus/templates/plan/app/components/ui/toast.tsx +0 -127
  1121. package/corpus/templates/plan/app/components/ui/toaster.tsx +0 -33
  1122. package/corpus/templates/plan/app/components/ui/toggle-group.tsx +0 -59
  1123. package/corpus/templates/plan/app/components/ui/toggle.tsx +0 -43
  1124. package/corpus/templates/plan/app/components/ui/tooltip.tsx +0 -30
  1125. package/corpus/templates/plan/app/components/ui/use-toast.ts +0 -3
  1126. package/corpus/templates/plan/app/hooks/use-mobile.tsx +0 -21
  1127. package/corpus/templates/plan/app/hooks/use-toast.ts +0 -188
  1128. package/corpus/templates/slides/app/components/layout/HeaderActions.tsx +0 -84
  1129. package/corpus/templates/slides/app/components/ui/accordion.tsx +0 -56
  1130. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +0 -139
  1131. package/corpus/templates/slides/app/components/ui/alert.tsx +0 -59
  1132. package/corpus/templates/slides/app/components/ui/aspect-ratio.tsx +0 -5
  1133. package/corpus/templates/slides/app/components/ui/avatar.tsx +0 -48
  1134. package/corpus/templates/slides/app/components/ui/badge.tsx +0 -37
  1135. package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +0 -115
  1136. package/corpus/templates/slides/app/components/ui/button.tsx +0 -57
  1137. package/corpus/templates/slides/app/components/ui/calendar.tsx +0 -68
  1138. package/corpus/templates/slides/app/components/ui/card.tsx +0 -86
  1139. package/corpus/templates/slides/app/components/ui/carousel.tsx +0 -260
  1140. package/corpus/templates/slides/app/components/ui/chart.tsx +0 -375
  1141. package/corpus/templates/slides/app/components/ui/checkbox.tsx +0 -28
  1142. package/corpus/templates/slides/app/components/ui/collapsible.tsx +0 -9
  1143. package/corpus/templates/slides/app/components/ui/command.tsx +0 -154
  1144. package/corpus/templates/slides/app/components/ui/context-menu.tsx +0 -202
  1145. package/corpus/templates/slides/app/components/ui/dialog.tsx +0 -130
  1146. package/corpus/templates/slides/app/components/ui/drawer.tsx +0 -116
  1147. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +0 -212
  1148. package/corpus/templates/slides/app/components/ui/form.tsx +0 -177
  1149. package/corpus/templates/slides/app/components/ui/hover-card.tsx +0 -27
  1150. package/corpus/templates/slides/app/components/ui/input-otp.tsx +0 -69
  1151. package/corpus/templates/slides/app/components/ui/input.tsx +0 -22
  1152. package/corpus/templates/slides/app/components/ui/label.tsx +0 -24
  1153. package/corpus/templates/slides/app/components/ui/menubar.tsx +0 -234
  1154. package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +0 -128
  1155. package/corpus/templates/slides/app/components/ui/pagination.tsx +0 -121
  1156. package/corpus/templates/slides/app/components/ui/popover.tsx +0 -44
  1157. package/corpus/templates/slides/app/components/ui/progress.tsx +0 -26
  1158. package/corpus/templates/slides/app/components/ui/radio-group.tsx +0 -42
  1159. package/corpus/templates/slides/app/components/ui/resizable.tsx +0 -43
  1160. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +0 -46
  1161. package/corpus/templates/slides/app/components/ui/select.tsx +0 -158
  1162. package/corpus/templates/slides/app/components/ui/separator.tsx +0 -29
  1163. package/corpus/templates/slides/app/components/ui/sheet.tsx +0 -160
  1164. package/corpus/templates/slides/app/components/ui/sidebar.tsx +0 -782
  1165. package/corpus/templates/slides/app/components/ui/skeleton.tsx +0 -15
  1166. package/corpus/templates/slides/app/components/ui/slider.tsx +0 -26
  1167. package/corpus/templates/slides/app/components/ui/sonner.tsx +0 -58
  1168. package/corpus/templates/slides/app/components/ui/spinner.tsx +0 -17
  1169. package/corpus/templates/slides/app/components/ui/switch.tsx +0 -27
  1170. package/corpus/templates/slides/app/components/ui/table.tsx +0 -117
  1171. package/corpus/templates/slides/app/components/ui/tabs.tsx +0 -53
  1172. package/corpus/templates/slides/app/components/ui/textarea.tsx +0 -23
  1173. package/corpus/templates/slides/app/components/ui/toast.tsx +0 -127
  1174. package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -33
  1175. package/corpus/templates/slides/app/components/ui/toggle-group.tsx +0 -59
  1176. package/corpus/templates/slides/app/components/ui/toggle.tsx +0 -43
  1177. package/corpus/templates/slides/app/components/ui/tooltip.tsx +0 -30
  1178. package/corpus/templates/slides/app/components/ui/use-toast.ts +0 -3
  1179. package/corpus/templates/slides/app/hooks/use-mobile.tsx +0 -21
  1180. package/corpus/templates/slides/app/hooks/use-toast.ts +0 -188
@@ -158,6 +158,10 @@ struct RestartInfo {
158
158
  safe_id: String,
159
159
  include_audio: bool,
160
160
  capture_system_audio: bool,
161
+ /// True only when the final media file itself contains microphone audio.
162
+ /// ScreenCaptureKit microphone muxing is intentionally disabled on macOS
163
+ /// 15 because SCRecordingOutput can hang finalization and leave no moov.
164
+ mic_captured_in_file: bool,
161
165
  mic_device_id: Option<String>,
162
166
  mic_device_label: Option<String>,
163
167
  /// Monotonic counter feeding the per-segment filename suffix.
@@ -523,41 +527,66 @@ fn start_native_session_locked(
523
527
  || mic_device_label
524
528
  .as_deref()
525
529
  .is_some_and(|v| !v.trim().is_empty());
526
- let session = match start_screencapturekit_recording(
527
- app,
528
- &safe_id,
529
- include_audio,
530
- capture_system_audio,
531
- mic_device_id.as_deref(),
532
- mic_device_label.as_deref(),
533
- capture_region,
534
- defer_recording_output,
535
- ) {
536
- Ok(session) => session,
537
- Err(sck_err) => {
538
- if defer_recording_output {
539
- return Err(sck_err);
540
- }
541
- if include_audio && has_specific_mic {
542
- return Err(format!(
543
- "ScreenCaptureKit recording failed before it could use the selected microphone ({sck_err}). Clips did not fall back to macOS screencapture because that would ignore your selected input."
544
- ));
545
- }
530
+ let session = if include_audio && !capture_system_audio {
531
+ if defer_recording_output {
532
+ return Err(
533
+ "Skipping microphone-only ScreenCaptureKit warmup; begin will use screencapture."
534
+ .to_string(),
535
+ );
536
+ }
537
+ if has_specific_mic {
546
538
  eprintln!(
547
- "[clips-tray] ScreenCaptureKit recording unavailable; falling back to screencapture: {sck_err}"
539
+ "[clips-tray] using screencapture for microphone-only recording; selected mic cannot be pinned by this backend"
548
540
  );
549
- start_screencapture_recording(
550
- app,
551
- &safe_id,
552
- include_audio,
553
- capture_system_audio,
554
- capture_region,
555
- )
556
- .map_err(|fallback_err| {
557
- format!(
558
- "ScreenCaptureKit recording failed ({sck_err}); screencapture fallback failed ({fallback_err})"
541
+ } else {
542
+ eprintln!(
543
+ "[clips-tray] using screencapture for microphone-only recording to avoid ScreenCaptureKit microphone finalization failures"
544
+ );
545
+ }
546
+ start_screencapture_recording(
547
+ app,
548
+ &safe_id,
549
+ include_audio,
550
+ capture_system_audio,
551
+ capture_region,
552
+ )?
553
+ } else {
554
+ match start_screencapturekit_recording(
555
+ app,
556
+ &safe_id,
557
+ include_audio,
558
+ capture_system_audio,
559
+ mic_device_id.as_deref(),
560
+ mic_device_label.as_deref(),
561
+ capture_region,
562
+ defer_recording_output,
563
+ ) {
564
+ Ok(session) => session,
565
+ Err(sck_err) => {
566
+ if defer_recording_output {
567
+ return Err(sck_err);
568
+ }
569
+ if include_audio && !capture_system_audio && has_specific_mic {
570
+ return Err(format!(
571
+ "ScreenCaptureKit recording failed before it could use the selected microphone ({sck_err}). Clips did not fall back to macOS screencapture because that would ignore your selected input."
572
+ ));
573
+ }
574
+ eprintln!(
575
+ "[clips-tray] ScreenCaptureKit recording unavailable; falling back to screencapture: {sck_err}"
576
+ );
577
+ start_screencapture_recording(
578
+ app,
579
+ &safe_id,
580
+ include_audio,
581
+ capture_system_audio,
582
+ capture_region,
559
583
  )
560
- })?
584
+ .map_err(|fallback_err| {
585
+ format!(
586
+ "ScreenCaptureKit recording failed ({sck_err}); screencapture fallback failed ({fallback_err})"
587
+ )
588
+ })?
589
+ }
561
590
  }
562
591
  };
563
592
  let width = session.width;
@@ -1485,7 +1514,13 @@ pub(crate) fn start_screencapturekit_backend_at(
1485
1514
  } else {
1486
1515
  filter_builder.build()
1487
1516
  };
1488
- let selected_mic = if include_audio {
1517
+ let capture_microphone_in_recording = false;
1518
+ if include_audio {
1519
+ eprintln!(
1520
+ "[clips-tray] ScreenCaptureKit microphone recording disabled; microphone audio stays out of SCRecordingOutput to avoid macOS 15 finalize timeouts"
1521
+ );
1522
+ }
1523
+ let selected_mic = if capture_microphone_in_recording {
1489
1524
  resolve_microphone_capture_device(mic_device_id, mic_device_label)?
1490
1525
  } else {
1491
1526
  None
@@ -1498,9 +1533,10 @@ pub(crate) fn start_screencapturekit_backend_at(
1498
1533
  .with_queue_depth(8)
1499
1534
  .with_shows_cursor(true)
1500
1535
  // Mic and system audio are independent toggles. SCK delivers them as
1501
- // separate inputs; SCRecordingOutput muxes them into the file.
1536
+ // separate inputs. We intentionally do not hand microphone buffers to
1537
+ // SCRecordingOutput because macOS 15 can fail to finalize those MP4s.
1502
1538
  .with_captures_audio(capture_system_audio)
1503
- .with_captures_microphone(include_audio)
1539
+ .with_captures_microphone(capture_microphone_in_recording)
1504
1540
  .with_excludes_current_process_audio(true)
1505
1541
  .with_sample_rate(48000)
1506
1542
  .with_channel_count(2);
@@ -1533,7 +1569,7 @@ pub(crate) fn start_screencapturekit_backend_at(
1533
1569
  let mut stream = SCStream::new(&filter, &config);
1534
1570
  // Observe the microphone stream so `begin` can wait for the first sample
1535
1571
  // before attaching the recording output (avoids the silent-mic head).
1536
- let mic_ready = if include_audio {
1572
+ let mic_ready = if capture_microphone_in_recording {
1537
1573
  let flag = Arc::new(AtomicBool::new(false));
1538
1574
  let flag_cb = Arc::clone(&flag);
1539
1575
  stream.add_output_handler(
@@ -1559,7 +1595,7 @@ pub(crate) fn start_screencapturekit_backend_at(
1559
1595
  return Err(format!("capture start failed: {err:?}"));
1560
1596
  }
1561
1597
  eprintln!(
1562
- "[clips-tray] ScreenCaptureKit recording started: {width}x{height} @ {NATIVE_CAPTURE_FPS}fps from {capture_width}x{capture_height} (display {source_width}x{source_height}), mic={include_audio} system_audio={capture_system_audio} deferred_output={defer_recording_output}"
1598
+ "[clips-tray] ScreenCaptureKit recording started: {width}x{height} @ {NATIVE_CAPTURE_FPS}fps from {capture_width}x{capture_height} (display {source_width}x{source_height}), mic_requested={include_audio} mic_recorded={capture_microphone_in_recording} system_audio={capture_system_audio} deferred_output={defer_recording_output}"
1563
1599
  );
1564
1600
  Ok((
1565
1601
  NativeFullscreenBackend::ScreenCaptureKit {
@@ -2180,7 +2216,7 @@ fn saved_recording_from_session(
2180
2216
  height: session.height,
2181
2217
  bytes,
2182
2218
  has_audio,
2183
- mic_captured: session.restart.include_audio,
2219
+ mic_captured: session.restart.mic_captured_in_file,
2184
2220
  has_camera,
2185
2221
  saved_at: now_iso(),
2186
2222
  last_attempt_at: None,
@@ -2355,6 +2391,7 @@ fn start_screencapturekit_recording(
2355
2391
  safe_id: safe_id.to_string(),
2356
2392
  include_audio,
2357
2393
  capture_system_audio,
2394
+ mic_captured_in_file: false,
2358
2395
  mic_device_id: mic_device_id.map(str::to_string),
2359
2396
  mic_device_label: mic_device_label.map(str::to_string),
2360
2397
  segment_counter: 0,
@@ -2416,6 +2453,7 @@ fn start_screencapture_recording(
2416
2453
  // screencapture (fallback) can't capture system audio; tracked
2417
2454
  // for parity but only `-g` mic is honored by that backend.
2418
2455
  capture_system_audio,
2456
+ mic_captured_in_file: include_audio,
2419
2457
  mic_device_id: None,
2420
2458
  mic_device_label: None,
2421
2459
  segment_counter: 0,
@@ -2717,7 +2755,7 @@ async fn upload_recording_file(
2717
2755
  session.height,
2718
2756
  Some(duration_ms),
2719
2757
  has_audio,
2720
- session.restart.include_audio,
2758
+ session.restart.mic_captured_in_file,
2721
2759
  )?;
2722
2760
  let upload_result = upload_prepared_recording_file(
2723
2761
  app,
@@ -28,6 +28,7 @@ fn numpad_enter_shortcut() -> Shortcut {
28
28
 
29
29
  static CUSTOM_VOICE_SHORTCUT: OnceLock<Mutex<Option<Shortcut>>> = OnceLock::new();
30
30
  static CUSTOM_POPOVER_SHORTCUT: OnceLock<Mutex<Option<Shortcut>>> = OnceLock::new();
31
+ static CUSTOM_RECORD_SHORTCUT: OnceLock<Mutex<Option<Shortcut>>> = OnceLock::new();
31
32
  static FN_TAP_ENABLED: AtomicBool = AtomicBool::new(false);
32
33
  static FN_TAP_INSTALL_STARTED: AtomicBool = AtomicBool::new(false);
33
34
  static POPOVER_DISMISS_SHORTCUT_ACTIVE: AtomicBool = AtomicBool::new(false);
@@ -41,6 +42,10 @@ fn custom_popover_shortcut() -> &'static Mutex<Option<Shortcut>> {
41
42
  CUSTOM_POPOVER_SHORTCUT.get_or_init(|| Mutex::new(None))
42
43
  }
43
44
 
45
+ fn custom_record_shortcut() -> &'static Mutex<Option<Shortcut>> {
46
+ CUSTOM_RECORD_SHORTCUT.get_or_init(|| Mutex::new(None))
47
+ }
48
+
44
49
  fn current_custom_voice_shortcut() -> Option<Shortcut> {
45
50
  custom_voice_shortcut().lock().ok().and_then(|g| *g)
46
51
  }
@@ -49,6 +54,10 @@ fn current_custom_popover_shortcut() -> Option<Shortcut> {
49
54
  custom_popover_shortcut().lock().ok().and_then(|g| *g)
50
55
  }
51
56
 
57
+ fn current_custom_record_shortcut() -> Option<Shortcut> {
58
+ custom_record_shortcut().lock().ok().and_then(|g| *g)
59
+ }
60
+
52
61
  fn parse_optional_shortcut(value: Option<String>) -> Result<Option<Shortcut>, String> {
53
62
  let Some(value) = value else {
54
63
  return Ok(None);
@@ -109,21 +118,39 @@ pub async fn set_custom_shortcuts(
109
118
  app: AppHandle,
110
119
  voice: Option<String>,
111
120
  popover: Option<String>,
121
+ record: Option<String>,
112
122
  ) -> Result<(), String> {
113
123
  let voice = parse_optional_shortcut(voice)?;
114
124
  let popover = parse_optional_shortcut(popover)?;
115
- if voice.is_some() && voice == popover {
116
- return Err("Voice dictation and Open Clips need different shortcuts.".to_string());
125
+ let record = parse_optional_shortcut(record)?;
126
+ if (voice.is_some() && voice == popover)
127
+ || (voice.is_some() && voice == record)
128
+ || (popover.is_some() && popover == record)
129
+ {
130
+ return Err(
131
+ "Voice dictation, Open Clips, and Start/stop recording need different shortcuts."
132
+ .to_string(),
133
+ );
117
134
  }
118
135
  let gs = app.global_shortcut();
119
136
 
120
137
  let prev_voice = swap_custom_shortcut(gs, custom_voice_shortcut(), voice, "voice")?;
121
- if let Err(err) = swap_custom_shortcut(gs, custom_popover_shortcut(), popover, "Clips") {
122
- // Popover registration failed after voice already mutated — roll the
123
- // voice slot back to its previous value so callers see all-or-nothing
124
- // behaviour. If the rollback itself fails we surface only the
125
- // original popover error to the user; the local state always
126
- // reflects whatever actually got registered.
138
+ let prev_popover = match swap_custom_shortcut(gs, custom_popover_shortcut(), popover, "Clips") {
139
+ Ok(prev_popover) => prev_popover,
140
+ Err(err) => {
141
+ // Popover registration failed after voice already mutated roll
142
+ // the voice slot back to its previous value so callers see
143
+ // all-or-nothing behaviour. If the rollback itself fails we
144
+ // surface only the original popover error to the user; local
145
+ // state always reflects whatever actually got registered.
146
+ let _ = swap_custom_shortcut(gs, custom_voice_shortcut(), prev_voice, "voice");
147
+ return Err(err);
148
+ }
149
+ };
150
+ if let Err(err) = swap_custom_shortcut(gs, custom_record_shortcut(), record, "recording") {
151
+ // Recording registration failed after earlier slots already mutated —
152
+ // roll them back so callers see all-or-nothing behaviour.
153
+ let _ = swap_custom_shortcut(gs, custom_popover_shortcut(), prev_popover, "Clips");
127
154
  let _ = swap_custom_shortcut(gs, custom_voice_shortcut(), prev_voice, "voice");
128
155
  return Err(err);
129
156
  }
@@ -273,6 +300,9 @@ pub fn build_shortcut_plugin() -> tauri_plugin_global_shortcut::Builder<tauri::W
273
300
  let is_custom_popover = current_custom_popover_shortcut()
274
301
  .map(|custom| custom == *shortcut)
275
302
  .unwrap_or(false);
303
+ let is_custom_record = current_custom_record_shortcut()
304
+ .map(|custom| custom == *shortcut)
305
+ .unwrap_or(false);
276
306
  let is_escape = shortcut.matches(Modifiers::empty(), Code::Escape);
277
307
  let is_enter = shortcut.matches(Modifiers::empty(), Code::Enter);
278
308
  let is_numpad_enter = shortcut.matches(Modifiers::empty(), Code::NumpadEnter);
@@ -347,6 +377,15 @@ pub fn build_shortcut_plugin() -> tauri_plugin_global_shortcut::Builder<tauri::W
347
377
  if event.state() != tauri_plugin_global_shortcut::ShortcutState::Pressed {
348
378
  return;
349
379
  }
380
+ if is_custom_record {
381
+ wake_popover_for_recording_shortcut(app);
382
+ let app = app.clone();
383
+ thread::spawn(move || {
384
+ thread::sleep(Duration::from_millis(80));
385
+ let _ = app.emit("clips:record-shortcut", ());
386
+ });
387
+ return;
388
+ }
350
389
  if is_cmd || is_ctrl || is_custom_popover {
351
390
  // Loom-style: if a recording is already active, the
352
391
  // global shortcut stops it rather than re-opening the
@@ -361,6 +400,19 @@ pub fn build_shortcut_plugin() -> tauri_plugin_global_shortcut::Builder<tauri::W
361
400
  })
362
401
  }
363
402
 
403
+ fn wake_popover_for_recording_shortcut(app: &tauri::AppHandle) {
404
+ let Some(window) = app.get_webview_window("popover") else {
405
+ return;
406
+ };
407
+ if window.is_visible().unwrap_or(false) {
408
+ return;
409
+ }
410
+ let _ = window.set_position(PhysicalPosition::new(2_i32, 2_i32));
411
+ let _ = window.set_size(tauri::Size::Physical(PhysicalSize::new(2_u32, 2_u32)));
412
+ show_without_activation(&window);
413
+ let _ = app.emit("clips:popover-visible", false);
414
+ }
415
+
364
416
  fn emit_voice_shortcut(
365
417
  app: &tauri::AppHandle,
366
418
  event: &'static str,
@@ -20,6 +20,7 @@
20
20
  },
21
21
  "dependencies": {
22
22
  "@agent-native/core": "workspace:*",
23
+ "@agent-native/toolkit": "workspace:*",
23
24
  "@ffmpeg/ffmpeg": "^0.12.15",
24
25
  "@ffmpeg/util": "^0.12.2",
25
26
  "@fontsource-variable/inter": "^5.2.8",
@@ -2,16 +2,17 @@ import { appStateGet } from "@agent-native/core/application-state";
2
2
  import { ssrfSafeFetch } from "@agent-native/core/extensions/url-safety";
3
3
  import {
4
4
  getSession,
5
- signShortLivedToken,
6
- verifyShortLivedToken,
5
+ signScopedAgentAccessToken,
6
+ verifyScopedAgentAccessToken,
7
7
  } from "@agent-native/core/server";
8
8
  import { asc, eq } from "drizzle-orm";
9
9
  import { getRequestURL, setResponseHeader, type H3Event } from "h3";
10
10
 
11
11
  import {
12
- agentAccessTokenResourceId,
13
12
  buildAgentApiUrls,
14
13
  buildRecommendedFrames,
14
+ CLIP_AGENT_ACCESS_TOKEN_PREFIX,
15
+ CLIPS_AGENT_ACCESS_PARAM,
15
16
  CLIP_AGENT_CONTEXT_VERSION,
16
17
  toAgentTranscriptSegments,
17
18
  } from "../../shared/agent-context.js";
@@ -54,8 +55,8 @@ export type PublicAgentAccessResult =
54
55
  | { ok: false; failure: PublicAgentFailure };
55
56
 
56
57
  const DEFAULT_MAX_AGENT_FRAME_MEDIA_BYTES = 200 * 1024 * 1024;
57
- export const CLIPS_AGENT_ACCESS_PARAM = "agent_access";
58
58
  export const CLIPS_AGENT_ACCESS_TTL_SECONDS = 2 * 60 * 60;
59
+ export { CLIPS_AGENT_ACCESS_PARAM };
59
60
 
60
61
  function sameOwnerEmail(
61
62
  a: string | null | undefined,
@@ -212,10 +213,10 @@ export async function loadPublicAgentAccess(
212
213
  );
213
214
  const suppliedToken = options.token ?? "";
214
215
  const tokenAccess = suppliedToken
215
- ? verifyShortLivedToken(
216
- suppliedToken,
217
- agentAccessTokenResourceId(recording.id),
218
- )
216
+ ? verifyScopedAgentAccessToken(suppliedToken, {
217
+ resourceKind: CLIP_AGENT_ACCESS_TOKEN_PREFIX,
218
+ resourceId: recording.id,
219
+ })
219
220
  : null;
220
221
  const tokenAllowsAgentAccess = Boolean(tokenAccess?.ok);
221
222
 
@@ -252,8 +253,10 @@ export async function loadPublicAgentAccess(
252
253
  recording.visibility === "public" &&
253
254
  viewerIsOwner
254
255
  ) {
255
- apiToken = signShortLivedToken({
256
- resourceId: agentAccessTokenResourceId(recording.id),
256
+ apiToken = signScopedAgentAccessToken({
257
+ resourceKind: CLIP_AGENT_ACCESS_TOKEN_PREFIX,
258
+ resourceId: recording.id,
259
+ ttlSeconds: CLIPS_AGENT_ACCESS_TTL_SECONDS,
257
260
  });
258
261
  }
259
262
 
@@ -267,8 +270,10 @@ export async function loadPublicAgentAccess(
267
270
  verifySharePassword(suppliedPassword, recording.password)
268
271
  ) {
269
272
  allowed = true;
270
- apiToken = signShortLivedToken({
271
- resourceId: agentAccessTokenResourceId(recording.id),
273
+ apiToken = signScopedAgentAccessToken({
274
+ resourceKind: CLIP_AGENT_ACCESS_TOKEN_PREFIX,
275
+ resourceId: recording.id,
276
+ ttlSeconds: CLIPS_AGENT_ACCESS_TTL_SECONDS,
272
277
  });
273
278
  }
274
279
 
@@ -0,0 +1,110 @@
1
+ import { resolveBuilderCredentials } from "@agent-native/core/server";
2
+
3
+ import { deleteS3ObjectByUrl } from "./s3-upload-provider.js";
4
+
5
+ interface RecordingMediaUrls {
6
+ id?: string;
7
+ videoUrl?: string | null;
8
+ thumbnailUrl?: string | null;
9
+ animatedThumbnailUrl?: string | null;
10
+ }
11
+
12
+ export interface RecordingMediaCleanupResult {
13
+ attempted: number;
14
+ deleted: number;
15
+ skipped: number;
16
+ errors: Array<{ url: string; error: string }>;
17
+ }
18
+
19
+ interface RecordingMediaCleanupOptions {
20
+ protectedUrls?: Iterable<string>;
21
+ }
22
+
23
+ export function recordingMediaUrls(recording: RecordingMediaUrls): string[] {
24
+ const urls = [
25
+ recording.videoUrl,
26
+ recording.thumbnailUrl,
27
+ recording.animatedThumbnailUrl,
28
+ ];
29
+ return [...new Set(urls.filter((url): url is string => Boolean(url)))];
30
+ }
31
+
32
+ function builderAssetUrl(url: string): string | null {
33
+ try {
34
+ const parsed = new URL(url);
35
+ if (parsed.hostname !== "cdn.builder.io") return null;
36
+ parsed.search = "";
37
+ parsed.hash = "";
38
+ return parsed.toString();
39
+ } catch {
40
+ return null;
41
+ }
42
+ }
43
+
44
+ async function deleteBuilderAssetByUrl(url: string): Promise<boolean> {
45
+ const assetUrl = builderAssetUrl(url);
46
+ if (!assetUrl) return false;
47
+
48
+ const credentials = await resolveBuilderCredentials();
49
+ if (!credentials.privateKey || !credentials.publicKey) return false;
50
+
51
+ const deleteUrl = new URL("/api/v1/assets/by-url", "https://cdn.builder.io");
52
+ deleteUrl.searchParams.set("url", assetUrl);
53
+ deleteUrl.searchParams.set("apiKey", credentials.publicKey);
54
+
55
+ const res = await fetch(deleteUrl.toString(), {
56
+ method: "DELETE",
57
+ headers: {
58
+ Authorization: `Bearer ${credentials.privateKey}`,
59
+ },
60
+ });
61
+
62
+ if (res.ok) return true;
63
+ if (res.status === 404) return false;
64
+
65
+ const text = await res.text().catch(() => "");
66
+ throw new Error(
67
+ `Builder.io asset delete failed (${res.status}): ${text || res.statusText}`,
68
+ );
69
+ }
70
+
71
+ export async function deleteRecordingMediaObjects(
72
+ recording: RecordingMediaUrls,
73
+ options: RecordingMediaCleanupOptions = {},
74
+ ): Promise<RecordingMediaCleanupResult> {
75
+ const result: RecordingMediaCleanupResult = {
76
+ attempted: 0,
77
+ deleted: 0,
78
+ skipped: 0,
79
+ errors: [],
80
+ };
81
+ const protectedUrls = new Set(options.protectedUrls ?? []);
82
+
83
+ for (const url of recordingMediaUrls(recording)) {
84
+ result.attempted += 1;
85
+ if (protectedUrls.has(url)) {
86
+ result.skipped += 1;
87
+ continue;
88
+ }
89
+ try {
90
+ if (
91
+ (await deleteS3ObjectByUrl(url)) ||
92
+ (await deleteBuilderAssetByUrl(url))
93
+ ) {
94
+ result.deleted += 1;
95
+ } else {
96
+ result.skipped += 1;
97
+ }
98
+ } catch (err) {
99
+ const message = err instanceof Error ? err.message : String(err);
100
+ result.errors.push({ url, error: message });
101
+ console.warn("[clips] failed to delete recording media object", {
102
+ recordingId: recording.id,
103
+ url,
104
+ error: message,
105
+ });
106
+ }
107
+ }
108
+
109
+ return result;
110
+ }
@@ -227,6 +227,132 @@ async function putObject(
227
227
  : `${cfg.endpoint}/${cfg.bucket}/${key}`;
228
228
  }
229
229
 
230
+ function withTrailingSlash(value: string): string {
231
+ return value.endsWith("/") ? value : `${value}/`;
232
+ }
233
+
234
+ function decodeUrlPathSegment(value: string): string | null {
235
+ try {
236
+ return decodeURIComponent(value);
237
+ } catch {
238
+ return null;
239
+ }
240
+ }
241
+
242
+ function keyFromUrlPrefix(rawUrl: URL, rawBase: string): string | null {
243
+ const base = new URL(withTrailingSlash(rawBase));
244
+ if (rawUrl.origin !== base.origin) return null;
245
+ const basePath = withTrailingSlash(base.pathname);
246
+ if (!rawUrl.pathname.startsWith(basePath)) return null;
247
+ const encodedKey = rawUrl.pathname.slice(basePath.length);
248
+ if (!encodedKey) return null;
249
+ return decodeUrlPathSegment(encodedKey);
250
+ }
251
+
252
+ function objectKeyFromUrl(cfg: S3Config, rawUrl: string): string | null {
253
+ let url: URL;
254
+ try {
255
+ url = new URL(rawUrl);
256
+ } catch {
257
+ return null;
258
+ }
259
+ if (url.protocol !== "http:" && url.protocol !== "https:") return null;
260
+
261
+ if (cfg.publicBaseUrl) {
262
+ const key = keyFromUrlPrefix(url, cfg.publicBaseUrl);
263
+ if (key) return key;
264
+ }
265
+
266
+ const endpoint = new URL(withTrailingSlash(cfg.endpoint));
267
+ if (url.origin !== endpoint.origin) return null;
268
+ const endpointPath = withTrailingSlash(endpoint.pathname);
269
+ const bucketPath = `${endpointPath}${rfc3986(cfg.bucket)}/`;
270
+ if (!url.pathname.startsWith(bucketPath)) return null;
271
+ const encodedKey = url.pathname.slice(bucketPath.length);
272
+ if (!encodedKey) return null;
273
+ return decodeUrlPathSegment(encodedKey);
274
+ }
275
+
276
+ async function deleteObject(cfg: S3Config, key: string): Promise<void> {
277
+ const now = new Date();
278
+ const amzDate =
279
+ now
280
+ .toISOString()
281
+ .replace(/[:-]|\.\d{3}/g, "")
282
+ .slice(0, 15) + "Z";
283
+ const dateStamp = amzDate.slice(0, 8);
284
+ const credentialScope = `${dateStamp}/${cfg.region}/s3/aws4_request`;
285
+
286
+ const hostUrl = new URL(cfg.endpoint);
287
+ const host = hostUrl.host;
288
+ const canonicalUri = `/${cfg.bucket}/${key.split("/").map(rfc3986).join("/")}`;
289
+ const payloadHash = await sha256(new Uint8Array(0));
290
+
291
+ const headers: Record<string, string> = {
292
+ host,
293
+ "x-amz-content-sha256": payloadHash,
294
+ "x-amz-date": amzDate,
295
+ };
296
+
297
+ const signedHeaderKeys = Object.keys(headers).sort();
298
+ const signedHeaders = signedHeaderKeys.join(";");
299
+ const canonicalHeaders =
300
+ signedHeaderKeys.map((k) => `${k}:${headers[k]}`).join("\n") + "\n";
301
+
302
+ const canonicalRequest = [
303
+ "DELETE",
304
+ canonicalUri,
305
+ "",
306
+ canonicalHeaders,
307
+ signedHeaders,
308
+ payloadHash,
309
+ ].join("\n");
310
+
311
+ const crHash = await sha256(new TextEncoder().encode(canonicalRequest));
312
+ const stringToSign = [
313
+ "AWS4-HMAC-SHA256",
314
+ amzDate,
315
+ credentialScope,
316
+ crHash,
317
+ ].join("\n");
318
+
319
+ const signingKey = await deriveSigningKey(
320
+ cfg.secretAccessKey,
321
+ dateStamp,
322
+ cfg.region,
323
+ );
324
+ const signature = toHex(await hmac(signingKey, stringToSign));
325
+
326
+ const authorization =
327
+ `AWS4-HMAC-SHA256 Credential=${cfg.accessKeyId}/${credentialScope}, ` +
328
+ `SignedHeaders=${signedHeaders}, Signature=${signature}`;
329
+
330
+ const url = `${cfg.endpoint}${canonicalUri}`;
331
+ const res = await fetch(url, {
332
+ method: "DELETE",
333
+ headers: {
334
+ ...headers,
335
+ Authorization: authorization,
336
+ },
337
+ });
338
+
339
+ if (!res.ok && res.status !== 404) {
340
+ const text = await res.text().catch(() => "");
341
+ throw new Error(
342
+ `S3 DeleteObject failed (${res.status}): ${text || res.statusText}`,
343
+ );
344
+ }
345
+ }
346
+
347
+ export async function deleteS3ObjectByUrl(url: string): Promise<boolean> {
348
+ const cfg = await readS3Config();
349
+ if (!cfg) return false;
350
+ const key = objectKeyFromUrl(cfg, url);
351
+ if (!key) return false;
352
+ await deleteObject(cfg, key);
353
+ return true;
354
+ }
355
+
230
356
  // ── Provider ──────────────────────────────────────────────────────────
231
357
 
232
358
  export const s3FileUploadProvider: FileUploadProvider = {