@agent-native/core 0.86.0 → 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 (1331) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +21 -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 +9 -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/AgentPanel.tsx +10 -0
  63. package/corpus/core/src/client/AssistantChat.tsx +91 -27
  64. package/corpus/core/src/client/ErrorBoundary.tsx +67 -12
  65. package/corpus/core/src/client/ErrorReportActions.tsx +69 -0
  66. package/corpus/core/src/client/FeedbackButton.tsx +8 -4
  67. package/corpus/core/src/client/components/ui/dialog.tsx +1 -91
  68. package/corpus/core/src/client/components/ui/dropdown-menu.tsx +1 -191
  69. package/corpus/core/src/client/components/ui/hover-card.tsx +1 -29
  70. package/corpus/core/src/client/components/ui/popover.tsx +1 -31
  71. package/corpus/core/src/client/components/ui/sheet.tsx +1 -96
  72. package/corpus/core/src/client/components/ui/tooltip.tsx +1 -53
  73. package/corpus/core/src/client/db-admin/DbAdminPage.tsx +41 -13
  74. package/corpus/core/src/client/db-admin/SqlEditor.tsx +10 -3
  75. package/corpus/core/src/client/db-admin/TableEditor.tsx +12 -5
  76. package/corpus/core/src/client/db-admin/useAgentSync.ts +10 -3
  77. package/corpus/core/src/client/db-admin/useDbAdmin.ts +65 -16
  78. package/corpus/core/src/client/error-reporting.ts +100 -0
  79. package/corpus/core/src/client/index.ts +11 -0
  80. package/corpus/core/src/client/org/RequireActiveOrg.tsx +12 -0
  81. package/corpus/core/src/client/visual-style-controls.tsx +615 -2
  82. package/corpus/core/src/db-admin/index.ts +26 -0
  83. package/corpus/core/src/db-admin/operations.ts +87 -49
  84. package/corpus/core/src/localization/default-messages.ts +4 -0
  85. package/corpus/core/src/secrets/crypto.ts +47 -9
  86. package/corpus/core/src/server/agent-access.ts +72 -0
  87. package/corpus/core/src/server/builder-design-systems.ts +328 -9
  88. package/corpus/core/src/server/h3-helpers.ts +14 -2
  89. package/corpus/core/src/server/index.ts +34 -0
  90. package/corpus/core/src/server/request-context.ts +64 -7
  91. package/corpus/core/src/shared/agent-access.ts +112 -0
  92. package/corpus/core/src/shared/index.ts +14 -0
  93. package/corpus/core/src/templates/default/app/root.tsx +47 -0
  94. package/corpus/templates/analytics/AGENTS.md +10 -4
  95. package/corpus/templates/analytics/actions/delete-db-admin-connection.ts +19 -0
  96. package/corpus/templates/analytics/actions/list-db-admin-connections.ts +18 -0
  97. package/corpus/templates/analytics/actions/navigate.ts +17 -3
  98. package/corpus/templates/analytics/actions/save-db-admin-connection.ts +33 -0
  99. package/corpus/templates/analytics/actions/view-screen.ts +11 -3
  100. package/corpus/templates/analytics/app/components/InlineMetric.tsx +2 -2
  101. package/corpus/templates/analytics/app/components/dashboard/CumulativeNetChart.tsx +7 -2
  102. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +16 -11
  103. package/corpus/templates/analytics/app/components/dashboard/DateRangePicker.tsx +2 -1
  104. package/corpus/templates/analytics/app/components/dashboard/MetricCard.tsx +7 -2
  105. package/corpus/templates/analytics/app/components/dashboard/RecentActivity.tsx +6 -3
  106. package/corpus/templates/analytics/app/components/dashboard/RevenueChart.tsx +6 -1
  107. package/corpus/templates/analytics/app/components/dashboard/RevenueComparisonChart.tsx +7 -2
  108. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +15 -11
  109. package/corpus/templates/analytics/app/components/dashboard/StatsCard.tsx +7 -1
  110. package/corpus/templates/analytics/app/components/dashboard/TimeSeriesChart.tsx +7 -2
  111. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +16 -16
  112. package/corpus/templates/analytics/app/components/layout/HeaderActions.tsx +1 -2
  113. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +5 -2
  114. package/corpus/templates/analytics/app/components/layout/NewAnalysisDialog.tsx +6 -6
  115. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +3 -4
  116. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +12 -9
  117. package/corpus/templates/analytics/app/components/ui/calendar.tsx +1 -1
  118. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +11 -2
  119. package/corpus/templates/analytics/app/i18n/zh-TW.ts +23 -2
  120. package/corpus/templates/analytics/app/i18n-data.ts +230 -20
  121. package/corpus/templates/analytics/app/pages/Agents.tsx +406 -12
  122. package/corpus/templates/analytics/app/pages/DataDictionary.tsx +21 -21
  123. package/corpus/templates/analytics/app/pages/DataSources.tsx +28 -28
  124. package/corpus/templates/analytics/app/pages/NotFound.tsx +1 -2
  125. package/corpus/templates/analytics/app/pages/Placeholder.tsx +1 -2
  126. package/corpus/templates/analytics/app/pages/Settings.tsx +16 -16
  127. package/corpus/templates/analytics/app/pages/adhoc/DashboardSkeleton.tsx +2 -3
  128. package/corpus/templates/analytics/app/pages/adhoc/_shared/KpiChart.tsx +13 -8
  129. package/corpus/templates/analytics/app/pages/adhoc/_shared/components/DateRangeInput.tsx +2 -1
  130. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ChartTypePicker.tsx +4 -2
  131. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/DateRangePicker.tsx +2 -1
  132. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventCombobox.tsx +7 -7
  133. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventPanel.tsx +1 -2
  134. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/EventRow.tsx +1 -2
  135. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/ExplorerChart.tsx +8 -3
  136. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/FilterBuilder.tsx +4 -5
  137. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/GroupByPicker.tsx +1 -2
  138. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyCombobox.tsx +7 -7
  139. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/PropertyValueCombobox.tsx +7 -7
  140. package/corpus/templates/analytics/app/pages/adhoc/explorer/components/SqlPreview.tsx +1 -1
  141. package/corpus/templates/analytics/app/pages/adhoc/explorer/index.tsx +16 -16
  142. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/ChartCard.tsx +21 -16
  143. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +32 -32
  144. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/DashboardFilterBar.tsx +14 -14
  145. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/EmailReportDialog.tsx +13 -14
  146. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +21 -13
  147. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +28 -23
  148. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewSqlPopover.tsx +12 -12
  149. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/ViewsMenu.tsx +15 -15
  150. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +33 -29
  151. package/corpus/templates/analytics/app/pages/analyses/AnalysesList.tsx +7 -8
  152. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +19 -19
  153. package/corpus/templates/analytics/app/pages/analyses/LegacyFusionAnalysis.tsx +15 -11
  154. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +42 -23
  155. package/corpus/templates/analytics/app/pages/sessions/SessionDevToolsPanel.tsx +12 -7
  156. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +12 -12
  157. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +25 -25
  158. package/corpus/templates/analytics/app/root.tsx +2 -2
  159. package/corpus/templates/analytics/app/routes/catalog.tsx +8 -8
  160. package/corpus/templates/analytics/changelog/2026-07-03-connect-other-app-databases-from-analytics.md +6 -0
  161. package/corpus/templates/analytics/package.json +1 -0
  162. package/corpus/templates/analytics/server/db/schema.ts +27 -0
  163. package/corpus/templates/analytics/server/lib/db-admin-connections.ts +458 -0
  164. package/corpus/templates/analytics/server/lib/session-replay-agent-context.ts +59 -59
  165. package/corpus/templates/analytics/server/plugins/db.ts +35 -0
  166. package/corpus/templates/analytics/server/routes/[base]/_agent-native/analytics-db-admin/[...path].ts +1 -0
  167. package/corpus/templates/analytics/server/routes/_agent-native/analytics-db-admin/[...path].ts +160 -0
  168. package/corpus/templates/analytics/shared/session-replay-agent-access.ts +14 -3
  169. package/corpus/templates/assets/app/components/create/RecentDraftsSection.tsx +2 -3
  170. package/corpus/templates/assets/app/components/generation/GenerationResults.tsx +9 -9
  171. package/corpus/templates/assets/app/components/layout/Header.tsx +4 -2
  172. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  173. package/corpus/templates/assets/app/components/layout/PageShell.tsx +5 -6
  174. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  175. package/corpus/templates/assets/app/components/library/CreateLibraryDialog.tsx +8 -8
  176. package/corpus/templates/assets/app/components/library/EditLibraryDialog.tsx +7 -7
  177. package/corpus/templates/assets/app/components/library/LibraryCard.tsx +8 -8
  178. package/corpus/templates/assets/app/components/library/LibraryPresetGrid.tsx +2 -3
  179. package/corpus/templates/assets/app/root.tsx +1 -1
  180. package/corpus/templates/assets/app/routes/asset.$id.tsx +19 -19
  181. package/corpus/templates/assets/app/routes/audit.tsx +14 -15
  182. package/corpus/templates/assets/app/routes/brand-kits.$id.tsx +54 -49
  183. package/corpus/templates/assets/app/routes/library.tsx +31 -31
  184. package/corpus/templates/assets/app/routes/settings.tsx +18 -18
  185. package/corpus/templates/assets/package.json +1 -0
  186. package/corpus/templates/brain/app/components/brain/CanonicalPreviewSheet.tsx +5 -6
  187. package/corpus/templates/brain/app/components/brain/Surface.tsx +8 -3
  188. package/corpus/templates/brain/app/components/layout/Layout.tsx +7 -7
  189. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +6 -6
  190. package/corpus/templates/brain/app/routes/knowledge.tsx +19 -19
  191. package/corpus/templates/brain/app/routes/ops.tsx +18 -18
  192. package/corpus/templates/brain/app/routes/review.tsx +27 -22
  193. package/corpus/templates/brain/app/routes/search.tsx +20 -20
  194. package/corpus/templates/brain/app/routes/settings.tsx +22 -22
  195. package/corpus/templates/brain/app/routes/sources.tsx +23 -23
  196. package/corpus/templates/brain/package.json +1 -0
  197. package/corpus/templates/calendar/app/components/ThemeToggle.tsx +5 -5
  198. package/corpus/templates/calendar/app/components/TimezoneCombobox.tsx +6 -6
  199. package/corpus/templates/calendar/app/components/booking/BookingConfirmation.tsx +1 -2
  200. package/corpus/templates/calendar/app/components/booking/BookingForm.tsx +8 -9
  201. package/corpus/templates/calendar/app/components/booking/DatePicker.tsx +2 -2
  202. package/corpus/templates/calendar/app/components/booking/TimeSlotPicker.tsx +2 -3
  203. package/corpus/templates/calendar/app/components/calendar/AddCalendarDialog.tsx +15 -10
  204. package/corpus/templates/calendar/app/components/calendar/AttendeeAutocomplete.tsx +6 -6
  205. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +27 -27
  206. package/corpus/templates/calendar/app/components/calendar/DeleteEventDialog.tsx +12 -9
  207. package/corpus/templates/calendar/app/components/calendar/EventAttendeesSection.tsx +13 -10
  208. package/corpus/templates/calendar/app/components/calendar/EventDetailPanel.tsx +7 -7
  209. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -21
  210. package/corpus/templates/calendar/app/components/calendar/EventDialog.tsx +11 -11
  211. package/corpus/templates/calendar/app/components/calendar/EventOptionControls.tsx +9 -9
  212. package/corpus/templates/calendar/app/components/calendar/FindTimePanel.tsx +9 -9
  213. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  214. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  215. package/corpus/templates/calendar/app/components/calendar/GoogleSyncButton.tsx +1 -1
  216. package/corpus/templates/calendar/app/components/calendar/GuestNotificationDialog.tsx +10 -8
  217. package/corpus/templates/calendar/app/components/calendar/IntegrationsSidebar.tsx +12 -12
  218. package/corpus/templates/calendar/app/components/calendar/KeyboardShortcutsHelp.tsx +2 -2
  219. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +1 -1
  220. package/corpus/templates/calendar/app/components/calendar/PeopleSearchDialog.tsx +6 -6
  221. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +6 -6
  222. package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +2 -2
  223. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +16 -16
  224. package/corpus/templates/calendar/app/pages/AvailabilitySettings.tsx +11 -11
  225. package/corpus/templates/calendar/app/pages/BookingLinksPage.tsx +50 -45
  226. package/corpus/templates/calendar/app/pages/BookingPage.tsx +2 -2
  227. package/corpus/templates/calendar/app/pages/BookingsList.tsx +12 -12
  228. package/corpus/templates/calendar/app/pages/CalendarView.tsx +17 -17
  229. package/corpus/templates/calendar/app/pages/ManageBookingPage.tsx +13 -13
  230. package/corpus/templates/calendar/app/pages/Settings.tsx +12 -12
  231. package/corpus/templates/calendar/app/routes/event.tsx +2 -2
  232. package/corpus/templates/calendar/package.json +1 -0
  233. package/corpus/templates/chat/app/components/layout/Header.tsx +4 -2
  234. package/corpus/templates/chat/app/components/layout/Layout.tsx +7 -7
  235. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +12 -12
  236. package/corpus/templates/chat/app/routes/database.tsx +1 -2
  237. package/corpus/templates/chat/app/routes/observability.tsx +1 -1
  238. package/corpus/templates/chat/app/routes/settings.tsx +5 -5
  239. package/corpus/templates/chat/package.json +1 -0
  240. package/corpus/templates/clips/AGENTS.md +5 -0
  241. package/corpus/templates/clips/actions/create-recording-agent-link.ts +15 -20
  242. package/corpus/templates/clips/actions/delete-recording-permanent.ts +74 -34
  243. package/corpus/templates/clips/app/components/capture-install-options.tsx +6 -6
  244. package/corpus/templates/clips/app/components/editable-recording-title.tsx +2 -2
  245. package/corpus/templates/clips/app/components/editor/chapters-editor.tsx +7 -7
  246. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +165 -3
  247. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +101 -57
  248. package/corpus/templates/clips/app/components/editor/split-button.tsx +4 -5
  249. package/corpus/templates/clips/app/components/editor/stitch-manager.tsx +9 -9
  250. package/corpus/templates/clips/app/components/editor/thumbnail-picker.tsx +16 -11
  251. package/corpus/templates/clips/app/components/editor/timeline.tsx +4 -6
  252. package/corpus/templates/clips/app/components/editor/transcript-editor.tsx +5 -5
  253. package/corpus/templates/clips/app/components/editor/trim-handles.tsx +4 -7
  254. package/corpus/templates/clips/app/components/editor/waveform.tsx +13 -4
  255. package/corpus/templates/clips/app/components/layout/Header.tsx +4 -2
  256. package/corpus/templates/clips/app/components/layout/Layout.tsx +2 -3
  257. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +4 -4
  258. package/corpus/templates/clips/app/components/library/create-space-dialog.tsx +8 -8
  259. package/corpus/templates/clips/app/components/library/empty-state.tsx +1 -2
  260. package/corpus/templates/clips/app/components/library/folder-tree.tsx +14 -14
  261. package/corpus/templates/clips/app/components/library/library-grid.tsx +7 -7
  262. package/corpus/templates/clips/app/components/library/library-layout.tsx +16 -16
  263. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +11 -11
  264. package/corpus/templates/clips/app/components/library/recording-card.tsx +16 -12
  265. package/corpus/templates/clips/app/components/library/search-bar.tsx +5 -5
  266. package/corpus/templates/clips/app/components/library/sort-menu.tsx +3 -4
  267. package/corpus/templates/clips/app/components/library/tag-input.tsx +4 -4
  268. package/corpus/templates/clips/app/components/meetings/attendee-stack.tsx +6 -2
  269. package/corpus/templates/clips/app/components/meetings/auto-record-prompt.tsx +1 -1
  270. package/corpus/templates/clips/app/components/meetings/bullet-link.tsx +4 -4
  271. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +5 -5
  272. package/corpus/templates/clips/app/components/meetings/meeting-card.tsx +3 -3
  273. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +9 -9
  274. package/corpus/templates/clips/app/components/meetings/share-meeting-dialog.tsx +11 -6
  275. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +4 -4
  276. package/corpus/templates/clips/app/components/player/access-password-prompt.tsx +2 -3
  277. package/corpus/templates/clips/app/components/player/comments-panel.tsx +14 -14
  278. package/corpus/templates/clips/app/components/player/delete-recording-menu.tsx +6 -7
  279. package/corpus/templates/clips/app/components/player/insights-panel.tsx +1 -2
  280. package/corpus/templates/clips/app/components/player/player-controls.tsx +15 -15
  281. package/corpus/templates/clips/app/components/player/reactions-tray.tsx +3 -3
  282. package/corpus/templates/clips/app/components/player/settings-panel.tsx +12 -13
  283. package/corpus/templates/clips/app/components/player/share-dialog.tsx +20 -11
  284. package/corpus/templates/clips/app/components/player/sign-in-prompt-dialog.tsx +2 -3
  285. package/corpus/templates/clips/app/components/player/timestamped-comment-button.tsx +2 -2
  286. package/corpus/templates/clips/app/components/player/transcript-panel.tsx +7 -7
  287. package/corpus/templates/clips/app/components/player/video-player.tsx +9 -9
  288. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +1 -1
  289. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  290. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +21 -21
  291. package/corpus/templates/clips/app/components/recorder/recording-toolbar.tsx +5 -6
  292. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +6 -7
  293. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +10 -10
  294. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +9 -5
  295. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +19 -9
  296. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +9 -10
  297. package/corpus/templates/clips/app/components/workspace/members-list.tsx +10 -11
  298. package/corpus/templates/clips/app/components/workspace/notifications-list.tsx +1 -2
  299. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +2 -3
  300. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -3
  301. package/corpus/templates/clips/app/hooks/use-desktop-promo.ts +1 -2
  302. package/corpus/templates/clips/app/root.tsx +10 -10
  303. package/corpus/templates/clips/app/routes/_app.dictate.tsx +13 -13
  304. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +35 -26
  305. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +20 -20
  306. package/corpus/templates/clips/app/routes/_app.notifications.tsx +3 -3
  307. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +31 -31
  308. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +13 -8
  309. package/corpus/templates/clips/app/routes/_app.spaces._index.tsx +1 -1
  310. package/corpus/templates/clips/app/routes/_app.trash.tsx +10 -10
  311. package/corpus/templates/clips/app/routes/bug-report.done.tsx +1 -1
  312. package/corpus/templates/clips/app/routes/bug-report.tsx +11 -11
  313. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  314. package/corpus/templates/clips/app/routes/embed.$shareId.tsx +1 -1
  315. package/corpus/templates/clips/app/routes/invite.$token.tsx +13 -8
  316. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +28 -23
  317. package/corpus/templates/clips/app/routes/record.tsx +3 -3
  318. package/corpus/templates/clips/app/routes/share.$shareId.tsx +41 -20
  319. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +2 -2
  320. package/corpus/templates/clips/changelog/2026-07-05-desktop-full-screen-recordings-with-system-audio-now-finaliz.md +6 -0
  321. package/corpus/templates/clips/changelog/2026-07-05-desktop-recording-shortcut-start-stop.md +6 -0
  322. package/corpus/templates/clips/changelog/2026-07-05-desktop-recordings-no-longer-fail-when-saved-capture-constra.md +6 -0
  323. package/corpus/templates/clips/changelog/2026-07-05-permanently-deleted-clips-now-clean-up-s3-media-objects.md +6 -0
  324. package/corpus/templates/clips/changelog/2026-07-05-timeline-zoom-controls-are-now-visible-in-the-clip-editor-an.md +6 -0
  325. package/corpus/templates/clips/desktop/src/app.tsx +98 -1
  326. package/corpus/templates/clips/desktop/src/components/MediaDeviceRow.tsx +3 -2
  327. package/corpus/templates/clips/desktop/src/lib/media-capture-constraints.ts +121 -0
  328. package/corpus/templates/clips/desktop/src/lib/recorder.ts +55 -84
  329. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +77 -39
  330. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +60 -8
  331. package/corpus/templates/clips/package.json +1 -0
  332. package/corpus/templates/clips/server/lib/public-agent-context.ts +17 -12
  333. package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +110 -0
  334. package/corpus/templates/clips/server/lib/s3-upload-provider.ts +126 -0
  335. package/corpus/templates/clips/server/routes/api/public-recording.get.ts +47 -11
  336. package/corpus/templates/clips/shared/agent-context.ts +23 -21
  337. package/corpus/templates/content/app/blocks/contentBlockRegistry.tsx +4 -4
  338. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  339. package/corpus/templates/content/app/components/ThemeToggle.tsx +6 -6
  340. package/corpus/templates/content/app/components/editor/BubbleToolbar.tsx +5 -5
  341. package/corpus/templates/content/app/components/editor/CommentsSidebar.tsx +5 -5
  342. package/corpus/templates/content/app/components/editor/ContentReferencePreview.tsx +1 -1
  343. package/corpus/templates/content/app/components/editor/DocumentDatabase.tsx +36 -36
  344. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +3 -3
  345. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +29 -29
  346. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +23 -23
  347. package/corpus/templates/content/app/components/editor/EmojiPicker.tsx +4 -5
  348. package/corpus/templates/content/app/components/editor/LinkHoverPreview.tsx +4 -5
  349. package/corpus/templates/content/app/components/editor/NotionConflictBanner.tsx +1 -1
  350. package/corpus/templates/content/app/components/editor/NotionSyncBar.tsx +2 -2
  351. package/corpus/templates/content/app/components/editor/SlashCommandMenu.tsx +5 -5
  352. package/corpus/templates/content/app/components/editor/TableHoverControls.tsx +13 -13
  353. package/corpus/templates/content/app/components/editor/VersionHistoryPanel.tsx +10 -10
  354. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +41 -41
  355. package/corpus/templates/content/app/components/editor/database/shared.tsx +19 -19
  356. package/corpus/templates/content/app/components/editor/database-sources/BuilderSourceReviewDialog.tsx +8 -9
  357. package/corpus/templates/content/app/components/editor/extensions/AudioBlock.tsx +18 -19
  358. package/corpus/templates/content/app/components/editor/extensions/ImageBlock.tsx +20 -21
  359. package/corpus/templates/content/app/components/editor/extensions/LocalMdxComponentNode.tsx +8 -8
  360. package/corpus/templates/content/app/components/editor/extensions/VideoBlock.tsx +18 -19
  361. package/corpus/templates/content/app/components/layout/Header.tsx +4 -2
  362. package/corpus/templates/content/app/components/layout/Layout.tsx +3 -3
  363. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +22 -22
  364. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +22 -22
  365. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +11 -11
  366. package/corpus/templates/content/app/root.tsx +13 -5
  367. package/corpus/templates/content/app/routes/_app._index.tsx +1 -1
  368. package/corpus/templates/content/app/routes/_app.local-files.tsx +11 -11
  369. package/corpus/templates/content/app/routes/_app.settings.tsx +3 -3
  370. package/corpus/templates/content/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
  371. package/corpus/templates/content/package.json +1 -0
  372. package/corpus/templates/design/AGENTS.md +13 -7
  373. package/corpus/templates/design/actions/get-design-system.ts +21 -0
  374. package/corpus/templates/design/actions/index-design-system-with-builder.ts +14 -37
  375. package/corpus/templates/design/app/components/ThemeToggle.tsx +6 -6
  376. package/corpus/templates/design/app/components/design/CanvasContextMenu.tsx +11 -11
  377. package/corpus/templates/design/app/components/design/DesignEditorSkeleton.tsx +2 -2
  378. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +21 -16
  379. package/corpus/templates/design/app/components/design/DesignImportPanel.tsx +3 -3
  380. package/corpus/templates/design/app/components/design/DrawOverlay.tsx +7 -7
  381. package/corpus/templates/design/app/components/design/EditPanel.tsx +30 -30
  382. package/corpus/templates/design/app/components/design/FusionAppBanner.tsx +8 -9
  383. package/corpus/templates/design/app/components/design/LayersPanel.tsx +14 -14
  384. package/corpus/templates/design/app/components/design/LocalhostWriteConsentDialog.tsx +5 -6
  385. package/corpus/templates/design/app/components/design/MotionDock.tsx +15 -15
  386. package/corpus/templates/design/app/components/design/QuestionFlow.tsx +3 -3
  387. package/corpus/templates/design/app/components/design/ReviewPanel.tsx +3 -3
  388. package/corpus/templates/design/app/components/design/StatesPanel.tsx +13 -13
  389. package/corpus/templates/design/app/components/design/TokensPanel.tsx +14 -14
  390. package/corpus/templates/design/app/components/design/TweaksPanel.tsx +6 -6
  391. package/corpus/templates/design/app/components/design/code-workbench/ActivityBar.tsx +3 -3
  392. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +3 -3
  393. package/corpus/templates/design/app/components/design/code-workbench/SideBar.tsx +70 -9
  394. package/corpus/templates/design/app/components/design/code-workbench/editor/EditorTabs.tsx +17 -8
  395. package/corpus/templates/design/app/components/design/code-workbench/editor/MonacoHost.tsx +2 -3
  396. package/corpus/templates/design/app/components/design/code-workbench/editor/StatusBar.tsx +1 -1
  397. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +8 -2
  398. package/corpus/templates/design/app/components/design/code-workbench/explorer/FileTree.tsx +24 -20
  399. package/corpus/templates/design/app/components/design/code-workbench/search/SearchView.tsx +6 -6
  400. package/corpus/templates/design/app/components/design/code-workbench/store.tsx +48 -0
  401. package/corpus/templates/design/app/components/design/inspector/AlignmentMatrix.tsx +3 -3
  402. package/corpus/templates/design/app/components/design/inspector/AutoLayoutMatrix.tsx +7 -7
  403. package/corpus/templates/design/app/components/design/inspector/ConstraintsWidget.tsx +3 -3
  404. package/corpus/templates/design/app/components/design/inspector/DesignColorPicker.tsx +18 -18
  405. package/corpus/templates/design/app/components/design/inspector/ExportSettingsPanel.tsx +6 -6
  406. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +6 -6
  407. package/corpus/templates/design/app/components/design/inspector/InspectorAiActions.tsx +7 -7
  408. package/corpus/templates/design/app/components/design/inspector/ScrubInput.tsx +7 -7
  409. package/corpus/templates/design/app/components/design/inspector/ShaderControls.tsx +14 -14
  410. package/corpus/templates/design/app/components/design/inspector/ShaderEffectRow.tsx +9 -9
  411. package/corpus/templates/design/app/components/design/inspector/ShaderFillsPanel.tsx +6 -6
  412. package/corpus/templates/design/app/components/design-system/DesignSystemCard.tsx +2 -3
  413. package/corpus/templates/design/app/components/editor/PromptDialog.tsx +18 -15
  414. package/corpus/templates/design/app/components/layout/Header.tsx +4 -2
  415. package/corpus/templates/design/app/components/layout/Layout.tsx +1 -1
  416. package/corpus/templates/design/app/components/layout/Sidebar.tsx +5 -5
  417. package/corpus/templates/design/app/components/visual-editor/CanvasCommentPins.tsx +7 -7
  418. package/corpus/templates/design/app/components/visual-editor/DrawOverlay.tsx +7 -7
  419. package/corpus/templates/design/app/components/visual-editor/SaveStatusIndicator.tsx +3 -3
  420. package/corpus/templates/design/app/hooks/useDesignHotkeys.ts +6 -0
  421. package/corpus/templates/design/app/i18n/zh-TW.ts +15 -14
  422. package/corpus/templates/design/app/i18n-data.ts +154 -142
  423. package/corpus/templates/design/app/pages/DesignEditor.tsx +51 -47
  424. package/corpus/templates/design/app/pages/DesignSystemSetup.tsx +40 -22
  425. package/corpus/templates/design/app/pages/DesignSystems.tsx +32 -32
  426. package/corpus/templates/design/app/pages/Index.tsx +28 -28
  427. package/corpus/templates/design/app/pages/NotFound.tsx +1 -2
  428. package/corpus/templates/design/app/pages/Present.tsx +1 -2
  429. package/corpus/templates/design/app/pages/VisualEdit.tsx +1 -2
  430. package/corpus/templates/design/app/root.tsx +1 -1
  431. package/corpus/templates/design/app/routes/settings.tsx +3 -3
  432. package/corpus/templates/design/changelog/2026-07-03-design-system-setup-now-indexes-figma-code-and-design-md-sou.md +6 -0
  433. package/corpus/templates/design/changelog/2026-07-03-the-code-editor-is-easier-to-use-with-top-sidebar-tabs-clear.md +6 -0
  434. package/corpus/templates/design/package.json +1 -0
  435. package/corpus/templates/design/server/lib/builder-design-system-proxy.ts +16 -106
  436. package/corpus/templates/forms/app/components/CloudUpgrade.tsx +10 -10
  437. package/corpus/templates/forms/app/components/ThemeToggle.tsx +5 -5
  438. package/corpus/templates/forms/app/components/builder/FieldPropertiesPanel.tsx +10 -11
  439. package/corpus/templates/forms/app/components/builder/FieldRenderer.tsx +13 -10
  440. package/corpus/templates/forms/app/components/layout/Header.tsx +4 -2
  441. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -1
  442. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +15 -15
  443. package/corpus/templates/forms/app/components/ui/calendar.tsx +1 -1
  444. package/corpus/templates/forms/app/components/ui/command.tsx +1 -1
  445. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +24 -24
  446. package/corpus/templates/forms/app/pages/FormFillPage.tsx +2 -2
  447. package/corpus/templates/forms/app/pages/FormsListPage.tsx +25 -25
  448. package/corpus/templates/forms/app/pages/ResponseInsightsPage.tsx +11 -11
  449. package/corpus/templates/forms/app/pages/ResponsesPage.tsx +4 -4
  450. package/corpus/templates/forms/app/routes/_app.settings.tsx +5 -5
  451. package/corpus/templates/forms/app/routes/form-preview.tsx +3 -3
  452. package/corpus/templates/forms/package.json +1 -0
  453. package/corpus/templates/macros/app/components/AddExerciseDialog.tsx +1 -1
  454. package/corpus/templates/macros/app/components/AddMealDialog.tsx +1 -1
  455. package/corpus/templates/macros/app/components/AddWeightDialog.tsx +1 -1
  456. package/corpus/templates/macros/app/components/DailyProgress.tsx +7 -7
  457. package/corpus/templates/macros/app/components/WeeklyCaloriesChart.tsx +1 -2
  458. package/corpus/templates/macros/app/components/WeightCard.tsx +10 -10
  459. package/corpus/templates/macros/app/components/WeightTracker.tsx +1 -1
  460. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +11 -7
  461. package/corpus/templates/macros/app/components/layout/Header.tsx +4 -2
  462. package/corpus/templates/macros/app/root.tsx +1 -1
  463. package/corpus/templates/macros/app/routes/_index.tsx +1 -1
  464. package/corpus/templates/macros/app/routes/analytics.tsx +9 -9
  465. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  466. package/corpus/templates/macros/package.json +1 -0
  467. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +1 -1
  468. package/corpus/templates/mail/app/components/ThemeToggle.tsx +6 -6
  469. package/corpus/templates/mail/app/components/agent-engine-picker.tsx +10 -10
  470. package/corpus/templates/mail/app/components/email/CodeBlockLangPicker.tsx +3 -4
  471. package/corpus/templates/mail/app/components/email/ComposeBubbleToolbar.tsx +5 -5
  472. package/corpus/templates/mail/app/components/email/ComposeEditor.tsx +9 -9
  473. package/corpus/templates/mail/app/components/email/ComposeModal.tsx +18 -18
  474. package/corpus/templates/mail/app/components/email/EmailList.tsx +17 -17
  475. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
  476. package/corpus/templates/mail/app/components/email/EmailThread.tsx +6 -6
  477. package/corpus/templates/mail/app/components/email/InlineReplyComposer.tsx +11 -11
  478. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +13 -13
  479. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +13 -13
  480. package/corpus/templates/mail/app/components/email/RecipientInput.tsx +13 -13
  481. package/corpus/templates/mail/app/components/email/SendLaterButton.tsx +4 -5
  482. package/corpus/templates/mail/app/components/email/SnoozeModal.tsx +1 -1
  483. package/corpus/templates/mail/app/components/email/SnoozePopover.tsx +6 -6
  484. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +12 -12
  485. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +5 -5
  486. package/corpus/templates/mail/app/components/settings/GmailFiltersSection.tsx +23 -23
  487. package/corpus/templates/mail/app/components/ui/calendar.tsx +1 -1
  488. package/corpus/templates/mail/app/components/ui/command.tsx +1 -1
  489. package/corpus/templates/mail/app/pages/DraftQueuePage.tsx +14 -14
  490. package/corpus/templates/mail/app/pages/NotFound.tsx +1 -2
  491. package/corpus/templates/mail/app/pages/SettingsPage.tsx +25 -25
  492. package/corpus/templates/mail/app/root.tsx +61 -2
  493. package/corpus/templates/mail/app/routes/_index.tsx +1 -2
  494. package/corpus/templates/mail/app/routes/email.tsx +2 -2
  495. package/corpus/templates/mail/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
  496. package/corpus/templates/mail/package.json +1 -0
  497. package/corpus/templates/plan/app/components/layout/Header.tsx +4 -2
  498. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -6
  499. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +20 -20
  500. package/corpus/templates/plan/app/components/plan/CanvasArea.tsx +2 -3
  501. package/corpus/templates/plan/app/components/plan/DocumentArea.tsx +2 -2
  502. package/corpus/templates/plan/app/components/plan/GuestModeBanner.tsx +1 -2
  503. package/corpus/templates/plan/app/components/plan/LocalCodebasePicker.tsx +8 -8
  504. package/corpus/templates/plan/app/components/plan/PlanContentRenderer.tsx +1 -1
  505. package/corpus/templates/plan/app/components/plan/PlanImageViewer.tsx +83 -82
  506. package/corpus/templates/plan/app/components/plan/PlanVisualSurface.tsx +3 -3
  507. package/corpus/templates/plan/app/components/plan/planBlocks.tsx +4 -4
  508. package/corpus/templates/plan/app/i18n/ar-SA.ts +3 -0
  509. package/corpus/templates/plan/app/i18n/de-DE.ts +4 -0
  510. package/corpus/templates/plan/app/i18n/en-US.ts +4 -0
  511. package/corpus/templates/plan/app/i18n/es-ES.ts +4 -0
  512. package/corpus/templates/plan/app/i18n/fr-FR.ts +4 -0
  513. package/corpus/templates/plan/app/i18n/hi-IN.ts +3 -0
  514. package/corpus/templates/plan/app/i18n/ja-JP.ts +4 -0
  515. package/corpus/templates/plan/app/i18n/ko-KR.ts +4 -0
  516. package/corpus/templates/plan/app/i18n/pt-BR.ts +4 -0
  517. package/corpus/templates/plan/app/i18n/zh-CN.ts +3 -0
  518. package/corpus/templates/plan/app/i18n/zh-TW.ts +3 -0
  519. package/corpus/templates/plan/app/pages/PlansPage.tsx +158 -80
  520. package/corpus/templates/plan/app/root.tsx +1 -1
  521. package/corpus/templates/plan/app/routes/_index.tsx +2 -1
  522. package/corpus/templates/plan/app/routes/local-plans.$slug.tsx +1 -1
  523. package/corpus/templates/plan/app/routes/plans.$id.tsx +2 -1
  524. package/corpus/templates/plan/app/routes/plans.tsx +2 -1
  525. package/corpus/templates/plan/app/routes/recaps.$id.tsx +2 -1
  526. package/corpus/templates/plan/app/routes/recaps.tsx +2 -1
  527. package/corpus/templates/plan/app/routes/settings.tsx +5 -5
  528. package/corpus/templates/plan/changelog/2026-07-03-error-screens-now-include-a-feedback-button-with-debug-info.md +6 -0
  529. package/corpus/templates/plan/changelog/2026-07-05-images-in-plan-documents-open-reliably-in-the-full-size-prev.md +6 -0
  530. package/corpus/templates/plan/package.json +1 -0
  531. package/corpus/templates/slides/AGENTS.md +7 -3
  532. package/corpus/templates/slides/actions/get-design-system.ts +21 -0
  533. package/corpus/templates/slides/actions/import-file.ts +15 -7
  534. package/corpus/templates/slides/actions/index-design-system-with-builder.ts +14 -37
  535. package/corpus/templates/slides/app/components/ThemeToggle.tsx +6 -6
  536. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +5 -5
  537. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +7 -7
  538. package/corpus/templates/slides/app/components/deck/ExcalidrawSlide.tsx +1 -2
  539. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +1 -1
  540. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +2 -3
  541. package/corpus/templates/slides/app/components/design-system/DesignSystemSetup.tsx +45 -22
  542. package/corpus/templates/slides/app/components/editor/AnimationsPanel.tsx +7 -7
  543. package/corpus/templates/slides/app/components/editor/BlockBubbleMenu.tsx +5 -5
  544. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +8 -8
  545. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +15 -17
  546. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +9 -10
  547. package/corpus/templates/slides/app/components/editor/GenerateSlidesDialog.tsx +5 -6
  548. package/corpus/templates/slides/app/components/editor/HistoryPanel.tsx +12 -12
  549. package/corpus/templates/slides/app/components/editor/ImageDropPromptPopover.tsx +3 -4
  550. package/corpus/templates/slides/app/components/editor/ImageSearchPanel.tsx +4 -5
  551. package/corpus/templates/slides/app/components/editor/ImportButton.tsx +3 -4
  552. package/corpus/templates/slides/app/components/editor/PromptDialog.tsx +1 -2
  553. package/corpus/templates/slides/app/components/editor/ShareDialog.tsx +10 -10
  554. package/corpus/templates/slides/app/components/editor/SlideBubbleMenu.tsx +10 -10
  555. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +169 -160
  556. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +20 -17
  557. package/corpus/templates/slides/app/components/editor/SpeakerNotesPanel.tsx +56 -6
  558. package/corpus/templates/slides/app/components/editor/TweaksPanel.tsx +1 -1
  559. package/corpus/templates/slides/app/components/layout/Header.tsx +4 -2
  560. package/corpus/templates/slides/app/components/layout/Layout.tsx +7 -2
  561. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +5 -5
  562. package/corpus/templates/slides/app/components/visual-editor/CanvasCommentPins.tsx +6 -6
  563. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +7 -7
  564. package/corpus/templates/slides/app/i18n/ar-SA.ts +8 -7
  565. package/corpus/templates/slides/app/i18n/de-DE.ts +7 -8
  566. package/corpus/templates/slides/app/i18n/en-US.ts +8 -7
  567. package/corpus/templates/slides/app/i18n/es-ES.ts +7 -8
  568. package/corpus/templates/slides/app/i18n/fr-FR.ts +7 -8
  569. package/corpus/templates/slides/app/i18n/hi-IN.ts +8 -7
  570. package/corpus/templates/slides/app/i18n/ja-JP.ts +7 -8
  571. package/corpus/templates/slides/app/i18n/ko-KR.ts +7 -7
  572. package/corpus/templates/slides/app/i18n/pt-BR.ts +7 -8
  573. package/corpus/templates/slides/app/i18n/zh-CN.ts +8 -7
  574. package/corpus/templates/slides/app/i18n/zh-TW.ts +8 -7
  575. package/corpus/templates/slides/app/lib/canvas-zoom.ts +16 -1
  576. package/corpus/templates/slides/app/pages/DeckEditor.tsx +6 -6
  577. package/corpus/templates/slides/app/pages/DesignSystems.tsx +5 -5
  578. package/corpus/templates/slides/app/pages/Index.tsx +18 -15
  579. package/corpus/templates/slides/app/root.tsx +3 -3
  580. package/corpus/templates/slides/app/routes/settings.tsx +5 -5
  581. package/corpus/templates/slides/changelog/2026-07-03-design-system-setup-now-indexes-figma-code-and-design-md-sou.md +6 -0
  582. package/corpus/templates/slides/changelog/2026-07-03-slide-editing-now-keeps-thumbnails-speaker-notes-styling-and.md +6 -0
  583. package/corpus/templates/slides/package.json +1 -0
  584. package/corpus/templates/slides/server/lib/builder-design-system-proxy.ts +16 -104
  585. package/dist/application-state/emitter.d.ts +9 -2
  586. package/dist/application-state/emitter.d.ts.map +1 -1
  587. package/dist/application-state/emitter.js +25 -3
  588. package/dist/application-state/emitter.js.map +1 -1
  589. package/dist/cli/create.d.ts +2 -1
  590. package/dist/cli/create.d.ts.map +1 -1
  591. package/dist/cli/create.js +52 -4
  592. package/dist/cli/create.js.map +1 -1
  593. package/dist/cli/workspacify.d.ts +2 -0
  594. package/dist/cli/workspacify.d.ts.map +1 -1
  595. package/dist/cli/workspacify.js +8 -4
  596. package/dist/cli/workspacify.js.map +1 -1
  597. package/dist/client/AgentPanel.d.ts.map +1 -1
  598. package/dist/client/AgentPanel.js +2 -1
  599. package/dist/client/AgentPanel.js.map +1 -1
  600. package/dist/client/AssistantChat.d.ts.map +1 -1
  601. package/dist/client/AssistantChat.js +77 -25
  602. package/dist/client/AssistantChat.js.map +1 -1
  603. package/dist/client/ErrorBoundary.d.ts.map +1 -1
  604. package/dist/client/ErrorBoundary.js +37 -2
  605. package/dist/client/ErrorBoundary.js.map +1 -1
  606. package/dist/client/ErrorReportActions.d.ts +13 -0
  607. package/dist/client/ErrorReportActions.d.ts.map +1 -0
  608. package/dist/client/ErrorReportActions.js +14 -0
  609. package/dist/client/ErrorReportActions.js.map +1 -0
  610. package/dist/client/FeedbackButton.d.ts +3 -1
  611. package/dist/client/FeedbackButton.d.ts.map +1 -1
  612. package/dist/client/FeedbackButton.js +6 -5
  613. package/dist/client/FeedbackButton.js.map +1 -1
  614. package/dist/client/components/ui/dialog.d.ts +1 -13
  615. package/dist/client/components/ui/dialog.d.ts.map +1 -1
  616. package/dist/client/components/ui/dialog.js +1 -20
  617. package/dist/client/components/ui/dialog.js.map +1 -1
  618. package/dist/client/components/ui/dropdown-menu.d.ts +1 -27
  619. package/dist/client/components/ui/dropdown-menu.d.ts.map +1 -1
  620. package/dist/client/components/ui/dropdown-menu.js +1 -33
  621. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  622. package/dist/client/components/ui/hover-card.d.ts +1 -6
  623. package/dist/client/components/ui/hover-card.d.ts.map +1 -1
  624. package/dist/client/components/ui/hover-card.js +1 -9
  625. package/dist/client/components/ui/hover-card.js.map +1 -1
  626. package/dist/client/components/ui/popover.d.ts +1 -7
  627. package/dist/client/components/ui/popover.d.ts.map +1 -1
  628. package/dist/client/components/ui/popover.js +1 -10
  629. package/dist/client/components/ui/popover.js.map +1 -1
  630. package/dist/client/components/ui/sheet.d.ts +1 -15
  631. package/dist/client/components/ui/sheet.d.ts.map +1 -1
  632. package/dist/client/components/ui/sheet.js +1 -22
  633. package/dist/client/components/ui/sheet.js.map +1 -1
  634. package/dist/client/components/ui/tooltip.d.ts +1 -8
  635. package/dist/client/components/ui/tooltip.d.ts.map +1 -1
  636. package/dist/client/components/ui/tooltip.js +1 -17
  637. package/dist/client/components/ui/tooltip.js.map +1 -1
  638. package/dist/client/db-admin/DbAdminPage.d.ts +9 -1
  639. package/dist/client/db-admin/DbAdminPage.d.ts.map +1 -1
  640. package/dist/client/db-admin/DbAdminPage.js +17 -13
  641. package/dist/client/db-admin/DbAdminPage.js.map +1 -1
  642. package/dist/client/db-admin/SqlEditor.d.ts +3 -1
  643. package/dist/client/db-admin/SqlEditor.d.ts.map +1 -1
  644. package/dist/client/db-admin/SqlEditor.js +3 -3
  645. package/dist/client/db-admin/SqlEditor.js.map +1 -1
  646. package/dist/client/db-admin/TableEditor.d.ts +3 -1
  647. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  648. package/dist/client/db-admin/TableEditor.js +6 -6
  649. package/dist/client/db-admin/TableEditor.js.map +1 -1
  650. package/dist/client/db-admin/useAgentSync.d.ts +3 -2
  651. package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
  652. package/dist/client/db-admin/useAgentSync.js +8 -4
  653. package/dist/client/db-admin/useAgentSync.js.map +1 -1
  654. package/dist/client/db-admin/useDbAdmin.d.ts +11 -7
  655. package/dist/client/db-admin/useDbAdmin.d.ts.map +1 -1
  656. package/dist/client/db-admin/useDbAdmin.js +45 -20
  657. package/dist/client/db-admin/useDbAdmin.js.map +1 -1
  658. package/dist/client/error-reporting.d.ts +19 -0
  659. package/dist/client/error-reporting.d.ts.map +1 -0
  660. package/dist/client/error-reporting.js +71 -0
  661. package/dist/client/error-reporting.js.map +1 -0
  662. package/dist/client/index.d.ts +3 -1
  663. package/dist/client/index.d.ts.map +1 -1
  664. package/dist/client/index.js +3 -1
  665. package/dist/client/index.js.map +1 -1
  666. package/dist/client/org/RequireActiveOrg.d.ts.map +1 -1
  667. package/dist/client/org/RequireActiveOrg.js +2 -1
  668. package/dist/client/org/RequireActiveOrg.js.map +1 -1
  669. package/dist/client/visual-style-controls.d.ts +11 -0
  670. package/dist/client/visual-style-controls.d.ts.map +1 -1
  671. package/dist/client/visual-style-controls.js +350 -1
  672. package/dist/client/visual-style-controls.js.map +1 -1
  673. package/dist/collab/routes.d.ts +1 -1
  674. package/dist/collab/struct-routes.d.ts +1 -1
  675. package/dist/db-admin/index.d.ts +3 -0
  676. package/dist/db-admin/index.d.ts.map +1 -0
  677. package/dist/db-admin/index.js +2 -0
  678. package/dist/db-admin/index.js.map +1 -0
  679. package/dist/db-admin/operations.d.ts +26 -5
  680. package/dist/db-admin/operations.d.ts.map +1 -1
  681. package/dist/db-admin/operations.js +66 -55
  682. package/dist/db-admin/operations.js.map +1 -1
  683. package/dist/localization/default-messages.d.ts +3 -0
  684. package/dist/localization/default-messages.d.ts.map +1 -1
  685. package/dist/localization/default-messages.js +3 -0
  686. package/dist/localization/default-messages.js.map +1 -1
  687. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  688. package/dist/secrets/crypto.d.ts.map +1 -1
  689. package/dist/secrets/crypto.js +37 -4
  690. package/dist/secrets/crypto.js.map +1 -1
  691. package/dist/secrets/routes.d.ts +9 -9
  692. package/dist/server/agent-access.d.ts +16 -0
  693. package/dist/server/agent-access.d.ts.map +1 -0
  694. package/dist/server/agent-access.js +25 -0
  695. package/dist/server/agent-access.js.map +1 -0
  696. package/dist/server/builder-design-systems.d.ts +61 -0
  697. package/dist/server/builder-design-systems.d.ts.map +1 -1
  698. package/dist/server/builder-design-systems.js +219 -14
  699. package/dist/server/builder-design-systems.js.map +1 -1
  700. package/dist/server/h3-helpers.d.ts.map +1 -1
  701. package/dist/server/h3-helpers.js +12 -2
  702. package/dist/server/h3-helpers.js.map +1 -1
  703. package/dist/server/index.d.ts +2 -1
  704. package/dist/server/index.d.ts.map +1 -1
  705. package/dist/server/index.js +2 -1
  706. package/dist/server/index.js.map +1 -1
  707. package/dist/server/request-context.d.ts +17 -0
  708. package/dist/server/request-context.d.ts.map +1 -1
  709. package/dist/server/request-context.js +46 -6
  710. package/dist/server/request-context.js.map +1 -1
  711. package/dist/shared/agent-access.d.ts +29 -0
  712. package/dist/shared/agent-access.d.ts.map +1 -0
  713. package/dist/shared/agent-access.js +57 -0
  714. package/dist/shared/agent-access.js.map +1 -0
  715. package/dist/shared/index.d.ts +1 -0
  716. package/dist/shared/index.d.ts.map +1 -1
  717. package/dist/shared/index.js +1 -0
  718. package/dist/shared/index.js.map +1 -1
  719. package/dist/templates/default/app/root.tsx +47 -0
  720. package/docs/content/components.mdx +13 -0
  721. package/docs/content/creating-templates.mdx +7 -0
  722. package/docs/content/locales/ar-SA/components.mdx +9 -0
  723. package/docs/content/locales/ar-SA/creating-templates.mdx +2 -0
  724. package/docs/content/locales/ar-SA/template-analytics.mdx +6 -0
  725. package/docs/content/locales/ar-SA/template-clips.mdx +7 -0
  726. package/docs/content/locales/ar-SA/tracking.mdx +6 -0
  727. package/docs/content/locales/de-DE/components.mdx +9 -0
  728. package/docs/content/locales/de-DE/creating-templates.mdx +2 -0
  729. package/docs/content/locales/de-DE/template-analytics.mdx +6 -0
  730. package/docs/content/locales/de-DE/template-clips.mdx +7 -0
  731. package/docs/content/locales/de-DE/tracking.mdx +6 -0
  732. package/docs/content/locales/es-ES/components.mdx +9 -0
  733. package/docs/content/locales/es-ES/creating-templates.mdx +2 -0
  734. package/docs/content/locales/es-ES/template-analytics.mdx +6 -0
  735. package/docs/content/locales/es-ES/template-clips.mdx +7 -0
  736. package/docs/content/locales/es-ES/tracking.mdx +6 -0
  737. package/docs/content/locales/fr-FR/components.mdx +9 -0
  738. package/docs/content/locales/fr-FR/creating-templates.mdx +2 -0
  739. package/docs/content/locales/fr-FR/template-analytics.mdx +6 -0
  740. package/docs/content/locales/fr-FR/template-clips.mdx +7 -0
  741. package/docs/content/locales/fr-FR/tracking.mdx +6 -0
  742. package/docs/content/locales/hi-IN/components.mdx +9 -0
  743. package/docs/content/locales/hi-IN/creating-templates.mdx +2 -0
  744. package/docs/content/locales/hi-IN/template-analytics.mdx +6 -0
  745. package/docs/content/locales/hi-IN/template-clips.mdx +7 -0
  746. package/docs/content/locales/hi-IN/tracking.mdx +6 -0
  747. package/docs/content/locales/ja-JP/components.mdx +9 -0
  748. package/docs/content/locales/ja-JP/creating-templates.mdx +2 -0
  749. package/docs/content/locales/ja-JP/template-analytics.mdx +6 -0
  750. package/docs/content/locales/ja-JP/template-clips.mdx +7 -0
  751. package/docs/content/locales/ja-JP/tracking.mdx +6 -0
  752. package/docs/content/locales/ko-KR/components.mdx +9 -0
  753. package/docs/content/locales/ko-KR/creating-templates.mdx +2 -0
  754. package/docs/content/locales/ko-KR/template-analytics.mdx +6 -0
  755. package/docs/content/locales/ko-KR/template-clips.mdx +7 -0
  756. package/docs/content/locales/ko-KR/tracking.mdx +6 -0
  757. package/docs/content/locales/pt-BR/components.mdx +9 -0
  758. package/docs/content/locales/pt-BR/creating-templates.mdx +2 -0
  759. package/docs/content/locales/pt-BR/template-analytics.mdx +6 -0
  760. package/docs/content/locales/pt-BR/template-clips.mdx +7 -0
  761. package/docs/content/locales/pt-BR/tracking.mdx +6 -0
  762. package/docs/content/locales/zh-CN/components.mdx +9 -0
  763. package/docs/content/locales/zh-CN/creating-templates.mdx +2 -0
  764. package/docs/content/locales/zh-CN/template-analytics.mdx +6 -0
  765. package/docs/content/locales/zh-CN/template-clips.mdx +7 -0
  766. package/docs/content/locales/zh-CN/tracking.mdx +6 -0
  767. package/docs/content/locales/zh-TW/components.mdx +9 -0
  768. package/docs/content/locales/zh-TW/creating-templates.mdx +2 -0
  769. package/docs/content/locales/zh-TW/template-analytics.mdx +6 -0
  770. package/docs/content/locales/zh-TW/template-clips.mdx +7 -0
  771. package/docs/content/locales/zh-TW/tracking.mdx +6 -0
  772. package/docs/content/template-analytics.mdx +6 -0
  773. package/docs/content/template-clips.mdx +7 -0
  774. package/docs/content/tracking.mdx +6 -0
  775. package/package.json +10 -2
  776. package/src/templates/default/app/root.tsx +47 -0
  777. package/corpus/templates/analytics/app/components/ui/accordion.tsx +0 -56
  778. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +0 -139
  779. package/corpus/templates/analytics/app/components/ui/alert.tsx +0 -59
  780. package/corpus/templates/analytics/app/components/ui/aspect-ratio.tsx +0 -5
  781. package/corpus/templates/analytics/app/components/ui/avatar.tsx +0 -48
  782. package/corpus/templates/analytics/app/components/ui/badge.tsx +0 -37
  783. package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +0 -115
  784. package/corpus/templates/analytics/app/components/ui/button.tsx +0 -57
  785. package/corpus/templates/analytics/app/components/ui/card.tsx +0 -86
  786. package/corpus/templates/analytics/app/components/ui/carousel.tsx +0 -260
  787. package/corpus/templates/analytics/app/components/ui/checkbox.tsx +0 -28
  788. package/corpus/templates/analytics/app/components/ui/collapsible.tsx +0 -9
  789. package/corpus/templates/analytics/app/components/ui/command.tsx +0 -154
  790. package/corpus/templates/analytics/app/components/ui/context-menu.tsx +0 -202
  791. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +0 -68
  792. package/corpus/templates/analytics/app/components/ui/dialog.tsx +0 -130
  793. package/corpus/templates/analytics/app/components/ui/drawer.tsx +0 -116
  794. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +0 -212
  795. package/corpus/templates/analytics/app/components/ui/form.tsx +0 -177
  796. package/corpus/templates/analytics/app/components/ui/hover-card.tsx +0 -27
  797. package/corpus/templates/analytics/app/components/ui/input-otp.tsx +0 -69
  798. package/corpus/templates/analytics/app/components/ui/input.tsx +0 -22
  799. package/corpus/templates/analytics/app/components/ui/label.tsx +0 -24
  800. package/corpus/templates/analytics/app/components/ui/menubar.tsx +0 -234
  801. package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +0 -128
  802. package/corpus/templates/analytics/app/components/ui/pagination.tsx +0 -121
  803. package/corpus/templates/analytics/app/components/ui/popover.tsx +0 -44
  804. package/corpus/templates/analytics/app/components/ui/progress.tsx +0 -26
  805. package/corpus/templates/analytics/app/components/ui/radio-group.tsx +0 -42
  806. package/corpus/templates/analytics/app/components/ui/resizable.tsx +0 -43
  807. package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +0 -46
  808. package/corpus/templates/analytics/app/components/ui/select.tsx +0 -158
  809. package/corpus/templates/analytics/app/components/ui/separator.tsx +0 -29
  810. package/corpus/templates/analytics/app/components/ui/sheet.tsx +0 -160
  811. package/corpus/templates/analytics/app/components/ui/sidebar.tsx +0 -782
  812. package/corpus/templates/analytics/app/components/ui/skeleton.tsx +0 -15
  813. package/corpus/templates/analytics/app/components/ui/slider.tsx +0 -26
  814. package/corpus/templates/analytics/app/components/ui/sonner.tsx +0 -58
  815. package/corpus/templates/analytics/app/components/ui/spinner.tsx +0 -17
  816. package/corpus/templates/analytics/app/components/ui/switch.tsx +0 -27
  817. package/corpus/templates/analytics/app/components/ui/table.tsx +0 -117
  818. package/corpus/templates/analytics/app/components/ui/tabs.tsx +0 -53
  819. package/corpus/templates/analytics/app/components/ui/textarea.tsx +0 -23
  820. package/corpus/templates/analytics/app/components/ui/toast.tsx +0 -127
  821. package/corpus/templates/analytics/app/components/ui/toaster.tsx +0 -33
  822. package/corpus/templates/analytics/app/components/ui/toggle-group.tsx +0 -59
  823. package/corpus/templates/analytics/app/components/ui/toggle.tsx +0 -43
  824. package/corpus/templates/analytics/app/components/ui/tooltip.tsx +0 -30
  825. package/corpus/templates/analytics/app/components/ui/use-toast.ts +0 -3
  826. package/corpus/templates/analytics/app/hooks/use-mobile.tsx +0 -21
  827. package/corpus/templates/analytics/app/hooks/use-toast.ts +0 -188
  828. package/corpus/templates/assets/app/components/layout/HeaderActions.tsx +0 -84
  829. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +0 -139
  830. package/corpus/templates/assets/app/components/ui/alert.tsx +0 -59
  831. package/corpus/templates/assets/app/components/ui/avatar.tsx +0 -48
  832. package/corpus/templates/assets/app/components/ui/badge.tsx +0 -37
  833. package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +0 -115
  834. package/corpus/templates/assets/app/components/ui/button.tsx +0 -57
  835. package/corpus/templates/assets/app/components/ui/card.tsx +0 -86
  836. package/corpus/templates/assets/app/components/ui/checkbox.tsx +0 -28
  837. package/corpus/templates/assets/app/components/ui/dialog.tsx +0 -130
  838. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +0 -212
  839. package/corpus/templates/assets/app/components/ui/hover-card.tsx +0 -27
  840. package/corpus/templates/assets/app/components/ui/input.tsx +0 -22
  841. package/corpus/templates/assets/app/components/ui/label.tsx +0 -24
  842. package/corpus/templates/assets/app/components/ui/pagination.tsx +0 -121
  843. package/corpus/templates/assets/app/components/ui/popover.tsx +0 -44
  844. package/corpus/templates/assets/app/components/ui/progress.tsx +0 -26
  845. package/corpus/templates/assets/app/components/ui/scroll-area.tsx +0 -46
  846. package/corpus/templates/assets/app/components/ui/select.tsx +0 -158
  847. package/corpus/templates/assets/app/components/ui/separator.tsx +0 -29
  848. package/corpus/templates/assets/app/components/ui/sheet.tsx +0 -160
  849. package/corpus/templates/assets/app/components/ui/skeleton.tsx +0 -15
  850. package/corpus/templates/assets/app/components/ui/slider.tsx +0 -26
  851. package/corpus/templates/assets/app/components/ui/sonner.tsx +0 -58
  852. package/corpus/templates/assets/app/components/ui/spinner.tsx +0 -17
  853. package/corpus/templates/assets/app/components/ui/table.tsx +0 -117
  854. package/corpus/templates/assets/app/components/ui/tabs.tsx +0 -53
  855. package/corpus/templates/assets/app/components/ui/tooltip.tsx +0 -30
  856. package/corpus/templates/brain/app/components/ui/badge.tsx +0 -37
  857. package/corpus/templates/brain/app/components/ui/button.tsx +0 -57
  858. package/corpus/templates/brain/app/components/ui/card.tsx +0 -86
  859. package/corpus/templates/brain/app/components/ui/input.tsx +0 -22
  860. package/corpus/templates/brain/app/components/ui/label.tsx +0 -24
  861. package/corpus/templates/brain/app/components/ui/progress.tsx +0 -26
  862. package/corpus/templates/brain/app/components/ui/select.tsx +0 -158
  863. package/corpus/templates/brain/app/components/ui/separator.tsx +0 -29
  864. package/corpus/templates/brain/app/components/ui/sheet.tsx +0 -160
  865. package/corpus/templates/brain/app/components/ui/skeleton.tsx +0 -15
  866. package/corpus/templates/brain/app/components/ui/sonner.tsx +0 -58
  867. package/corpus/templates/brain/app/components/ui/switch.tsx +0 -27
  868. package/corpus/templates/brain/app/components/ui/table.tsx +0 -117
  869. package/corpus/templates/brain/app/components/ui/textarea.tsx +0 -23
  870. package/corpus/templates/brain/app/components/ui/tooltip.tsx +0 -30
  871. package/corpus/templates/calendar/app/components/ui/accordion.tsx +0 -56
  872. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +0 -139
  873. package/corpus/templates/calendar/app/components/ui/alert.tsx +0 -59
  874. package/corpus/templates/calendar/app/components/ui/aspect-ratio.tsx +0 -5
  875. package/corpus/templates/calendar/app/components/ui/avatar.tsx +0 -48
  876. package/corpus/templates/calendar/app/components/ui/badge.tsx +0 -37
  877. package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +0 -115
  878. package/corpus/templates/calendar/app/components/ui/button.tsx +0 -57
  879. package/corpus/templates/calendar/app/components/ui/calendar.tsx +0 -68
  880. package/corpus/templates/calendar/app/components/ui/card.tsx +0 -86
  881. package/corpus/templates/calendar/app/components/ui/carousel.tsx +0 -260
  882. package/corpus/templates/calendar/app/components/ui/chart.tsx +0 -375
  883. package/corpus/templates/calendar/app/components/ui/checkbox.tsx +0 -28
  884. package/corpus/templates/calendar/app/components/ui/collapsible.tsx +0 -9
  885. package/corpus/templates/calendar/app/components/ui/command.tsx +0 -154
  886. package/corpus/templates/calendar/app/components/ui/context-menu.tsx +0 -202
  887. package/corpus/templates/calendar/app/components/ui/dialog.tsx +0 -130
  888. package/corpus/templates/calendar/app/components/ui/drawer.tsx +0 -116
  889. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +0 -212
  890. package/corpus/templates/calendar/app/components/ui/form.tsx +0 -177
  891. package/corpus/templates/calendar/app/components/ui/hover-card.tsx +0 -27
  892. package/corpus/templates/calendar/app/components/ui/input-otp.tsx +0 -69
  893. package/corpus/templates/calendar/app/components/ui/input.tsx +0 -22
  894. package/corpus/templates/calendar/app/components/ui/label.tsx +0 -24
  895. package/corpus/templates/calendar/app/components/ui/menubar.tsx +0 -234
  896. package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +0 -128
  897. package/corpus/templates/calendar/app/components/ui/pagination.tsx +0 -121
  898. package/corpus/templates/calendar/app/components/ui/popover.tsx +0 -44
  899. package/corpus/templates/calendar/app/components/ui/progress.tsx +0 -26
  900. package/corpus/templates/calendar/app/components/ui/radio-group.tsx +0 -42
  901. package/corpus/templates/calendar/app/components/ui/resizable.tsx +0 -43
  902. package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +0 -46
  903. package/corpus/templates/calendar/app/components/ui/select.tsx +0 -158
  904. package/corpus/templates/calendar/app/components/ui/separator.tsx +0 -29
  905. package/corpus/templates/calendar/app/components/ui/sheet.tsx +0 -160
  906. package/corpus/templates/calendar/app/components/ui/sidebar.tsx +0 -782
  907. package/corpus/templates/calendar/app/components/ui/skeleton.tsx +0 -15
  908. package/corpus/templates/calendar/app/components/ui/slider.tsx +0 -26
  909. package/corpus/templates/calendar/app/components/ui/spinner.tsx +0 -17
  910. package/corpus/templates/calendar/app/components/ui/switch.tsx +0 -27
  911. package/corpus/templates/calendar/app/components/ui/table.tsx +0 -117
  912. package/corpus/templates/calendar/app/components/ui/tabs.tsx +0 -53
  913. package/corpus/templates/calendar/app/components/ui/textarea.tsx +0 -23
  914. package/corpus/templates/calendar/app/components/ui/toast.tsx +0 -127
  915. package/corpus/templates/calendar/app/components/ui/toaster.tsx +0 -33
  916. package/corpus/templates/calendar/app/components/ui/toggle-group.tsx +0 -59
  917. package/corpus/templates/calendar/app/components/ui/toggle.tsx +0 -43
  918. package/corpus/templates/calendar/app/components/ui/tooltip.tsx +0 -30
  919. package/corpus/templates/calendar/app/components/ui/use-toast.ts +0 -3
  920. package/corpus/templates/calendar/app/hooks/use-mobile.tsx +0 -21
  921. package/corpus/templates/calendar/app/hooks/use-toast.ts +0 -188
  922. package/corpus/templates/chat/app/components/layout/HeaderActions.tsx +0 -84
  923. package/corpus/templates/chat/app/components/ui/accordion.tsx +0 -56
  924. package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +0 -139
  925. package/corpus/templates/chat/app/components/ui/alert.tsx +0 -59
  926. package/corpus/templates/chat/app/components/ui/aspect-ratio.tsx +0 -5
  927. package/corpus/templates/chat/app/components/ui/avatar.tsx +0 -48
  928. package/corpus/templates/chat/app/components/ui/badge.tsx +0 -37
  929. package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +0 -115
  930. package/corpus/templates/chat/app/components/ui/button.tsx +0 -57
  931. package/corpus/templates/chat/app/components/ui/calendar.tsx +0 -68
  932. package/corpus/templates/chat/app/components/ui/card.tsx +0 -86
  933. package/corpus/templates/chat/app/components/ui/carousel.tsx +0 -260
  934. package/corpus/templates/chat/app/components/ui/chart.tsx +0 -375
  935. package/corpus/templates/chat/app/components/ui/checkbox.tsx +0 -28
  936. package/corpus/templates/chat/app/components/ui/collapsible.tsx +0 -9
  937. package/corpus/templates/chat/app/components/ui/command.tsx +0 -154
  938. package/corpus/templates/chat/app/components/ui/context-menu.tsx +0 -202
  939. package/corpus/templates/chat/app/components/ui/dialog.tsx +0 -130
  940. package/corpus/templates/chat/app/components/ui/drawer.tsx +0 -116
  941. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +0 -212
  942. package/corpus/templates/chat/app/components/ui/form.tsx +0 -177
  943. package/corpus/templates/chat/app/components/ui/hover-card.tsx +0 -27
  944. package/corpus/templates/chat/app/components/ui/input-otp.tsx +0 -69
  945. package/corpus/templates/chat/app/components/ui/input.tsx +0 -22
  946. package/corpus/templates/chat/app/components/ui/label.tsx +0 -24
  947. package/corpus/templates/chat/app/components/ui/menubar.tsx +0 -234
  948. package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +0 -128
  949. package/corpus/templates/chat/app/components/ui/pagination.tsx +0 -121
  950. package/corpus/templates/chat/app/components/ui/popover.tsx +0 -44
  951. package/corpus/templates/chat/app/components/ui/progress.tsx +0 -26
  952. package/corpus/templates/chat/app/components/ui/radio-group.tsx +0 -42
  953. package/corpus/templates/chat/app/components/ui/resizable.tsx +0 -43
  954. package/corpus/templates/chat/app/components/ui/scroll-area.tsx +0 -46
  955. package/corpus/templates/chat/app/components/ui/select.tsx +0 -158
  956. package/corpus/templates/chat/app/components/ui/separator.tsx +0 -29
  957. package/corpus/templates/chat/app/components/ui/sheet.tsx +0 -160
  958. package/corpus/templates/chat/app/components/ui/sidebar.tsx +0 -782
  959. package/corpus/templates/chat/app/components/ui/skeleton.tsx +0 -15
  960. package/corpus/templates/chat/app/components/ui/slider.tsx +0 -26
  961. package/corpus/templates/chat/app/components/ui/sonner.tsx +0 -58
  962. package/corpus/templates/chat/app/components/ui/spinner.tsx +0 -17
  963. package/corpus/templates/chat/app/components/ui/switch.tsx +0 -27
  964. package/corpus/templates/chat/app/components/ui/table.tsx +0 -117
  965. package/corpus/templates/chat/app/components/ui/tabs.tsx +0 -53
  966. package/corpus/templates/chat/app/components/ui/textarea.tsx +0 -23
  967. package/corpus/templates/chat/app/components/ui/toast.tsx +0 -127
  968. package/corpus/templates/chat/app/components/ui/toaster.tsx +0 -33
  969. package/corpus/templates/chat/app/components/ui/toggle-group.tsx +0 -59
  970. package/corpus/templates/chat/app/components/ui/toggle.tsx +0 -43
  971. package/corpus/templates/chat/app/components/ui/tooltip.tsx +0 -30
  972. package/corpus/templates/chat/app/components/ui/use-toast.ts +0 -3
  973. package/corpus/templates/chat/app/hooks/use-mobile.tsx +0 -21
  974. package/corpus/templates/chat/app/hooks/use-toast.ts +0 -188
  975. package/corpus/templates/clips/app/components/layout/HeaderActions.tsx +0 -84
  976. package/corpus/templates/clips/app/components/ui/accordion.tsx +0 -56
  977. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +0 -139
  978. package/corpus/templates/clips/app/components/ui/alert.tsx +0 -59
  979. package/corpus/templates/clips/app/components/ui/aspect-ratio.tsx +0 -5
  980. package/corpus/templates/clips/app/components/ui/avatar.tsx +0 -48
  981. package/corpus/templates/clips/app/components/ui/badge.tsx +0 -37
  982. package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +0 -115
  983. package/corpus/templates/clips/app/components/ui/button.tsx +0 -57
  984. package/corpus/templates/clips/app/components/ui/calendar.tsx +0 -68
  985. package/corpus/templates/clips/app/components/ui/card.tsx +0 -86
  986. package/corpus/templates/clips/app/components/ui/carousel.tsx +0 -260
  987. package/corpus/templates/clips/app/components/ui/chart.tsx +0 -375
  988. package/corpus/templates/clips/app/components/ui/checkbox.tsx +0 -28
  989. package/corpus/templates/clips/app/components/ui/collapsible.tsx +0 -9
  990. package/corpus/templates/clips/app/components/ui/command.tsx +0 -154
  991. package/corpus/templates/clips/app/components/ui/context-menu.tsx +0 -202
  992. package/corpus/templates/clips/app/components/ui/dialog.tsx +0 -130
  993. package/corpus/templates/clips/app/components/ui/drawer.tsx +0 -116
  994. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +0 -212
  995. package/corpus/templates/clips/app/components/ui/form.tsx +0 -177
  996. package/corpus/templates/clips/app/components/ui/hover-card.tsx +0 -27
  997. package/corpus/templates/clips/app/components/ui/input-otp.tsx +0 -69
  998. package/corpus/templates/clips/app/components/ui/input.tsx +0 -22
  999. package/corpus/templates/clips/app/components/ui/label.tsx +0 -24
  1000. package/corpus/templates/clips/app/components/ui/menubar.tsx +0 -234
  1001. package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +0 -128
  1002. package/corpus/templates/clips/app/components/ui/pagination.tsx +0 -121
  1003. package/corpus/templates/clips/app/components/ui/popover.tsx +0 -44
  1004. package/corpus/templates/clips/app/components/ui/progress.tsx +0 -26
  1005. package/corpus/templates/clips/app/components/ui/radio-group.tsx +0 -42
  1006. package/corpus/templates/clips/app/components/ui/resizable.tsx +0 -43
  1007. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +0 -46
  1008. package/corpus/templates/clips/app/components/ui/select.tsx +0 -158
  1009. package/corpus/templates/clips/app/components/ui/separator.tsx +0 -29
  1010. package/corpus/templates/clips/app/components/ui/sheet.tsx +0 -160
  1011. package/corpus/templates/clips/app/components/ui/sidebar.tsx +0 -782
  1012. package/corpus/templates/clips/app/components/ui/skeleton.tsx +0 -15
  1013. package/corpus/templates/clips/app/components/ui/slider.tsx +0 -26
  1014. package/corpus/templates/clips/app/components/ui/sonner.tsx +0 -58
  1015. package/corpus/templates/clips/app/components/ui/spinner.tsx +0 -17
  1016. package/corpus/templates/clips/app/components/ui/switch.tsx +0 -27
  1017. package/corpus/templates/clips/app/components/ui/table.tsx +0 -117
  1018. package/corpus/templates/clips/app/components/ui/tabs.tsx +0 -53
  1019. package/corpus/templates/clips/app/components/ui/textarea.tsx +0 -23
  1020. package/corpus/templates/clips/app/components/ui/toast.tsx +0 -127
  1021. package/corpus/templates/clips/app/components/ui/toaster.tsx +0 -33
  1022. package/corpus/templates/clips/app/components/ui/toggle-group.tsx +0 -59
  1023. package/corpus/templates/clips/app/components/ui/toggle.tsx +0 -43
  1024. package/corpus/templates/clips/app/components/ui/tooltip.tsx +0 -30
  1025. package/corpus/templates/clips/app/components/ui/use-toast.ts +0 -3
  1026. package/corpus/templates/clips/app/hooks/use-mobile.tsx +0 -21
  1027. package/corpus/templates/clips/app/hooks/use-toast.ts +0 -188
  1028. package/corpus/templates/content/app/components/layout/HeaderActions.tsx +0 -84
  1029. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +0 -139
  1030. package/corpus/templates/content/app/components/ui/button.tsx +0 -57
  1031. package/corpus/templates/content/app/components/ui/dialog.tsx +0 -130
  1032. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +0 -212
  1033. package/corpus/templates/content/app/components/ui/input.tsx +0 -22
  1034. package/corpus/templates/content/app/components/ui/label.tsx +0 -24
  1035. package/corpus/templates/content/app/components/ui/popover.tsx +0 -44
  1036. package/corpus/templates/content/app/components/ui/separator.tsx +0 -29
  1037. package/corpus/templates/content/app/components/ui/sheet.tsx +0 -160
  1038. package/corpus/templates/content/app/components/ui/skeleton.tsx +0 -15
  1039. package/corpus/templates/content/app/components/ui/sonner.tsx +0 -58
  1040. package/corpus/templates/content/app/components/ui/spinner.tsx +0 -17
  1041. package/corpus/templates/content/app/components/ui/table.tsx +0 -117
  1042. package/corpus/templates/content/app/components/ui/toast.tsx +0 -127
  1043. package/corpus/templates/content/app/components/ui/toaster.tsx +0 -33
  1044. package/corpus/templates/content/app/components/ui/toggle.tsx +0 -43
  1045. package/corpus/templates/content/app/components/ui/tooltip.tsx +0 -30
  1046. package/corpus/templates/content/app/components/ui/use-toast.ts +0 -3
  1047. package/corpus/templates/content/app/hooks/use-mobile.tsx +0 -21
  1048. package/corpus/templates/content/app/hooks/use-toast.ts +0 -188
  1049. package/corpus/templates/design/app/components/layout/HeaderActions.tsx +0 -84
  1050. package/corpus/templates/design/app/components/ui/accordion.tsx +0 -56
  1051. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +0 -139
  1052. package/corpus/templates/design/app/components/ui/alert.tsx +0 -59
  1053. package/corpus/templates/design/app/components/ui/aspect-ratio.tsx +0 -5
  1054. package/corpus/templates/design/app/components/ui/avatar.tsx +0 -48
  1055. package/corpus/templates/design/app/components/ui/badge.tsx +0 -37
  1056. package/corpus/templates/design/app/components/ui/breadcrumb.tsx +0 -115
  1057. package/corpus/templates/design/app/components/ui/button.tsx +0 -57
  1058. package/corpus/templates/design/app/components/ui/calendar.tsx +0 -68
  1059. package/corpus/templates/design/app/components/ui/card.tsx +0 -86
  1060. package/corpus/templates/design/app/components/ui/carousel.tsx +0 -260
  1061. package/corpus/templates/design/app/components/ui/chart.tsx +0 -375
  1062. package/corpus/templates/design/app/components/ui/checkbox.tsx +0 -28
  1063. package/corpus/templates/design/app/components/ui/collapsible.tsx +0 -9
  1064. package/corpus/templates/design/app/components/ui/command.tsx +0 -154
  1065. package/corpus/templates/design/app/components/ui/context-menu.tsx +0 -202
  1066. package/corpus/templates/design/app/components/ui/dialog.tsx +0 -130
  1067. package/corpus/templates/design/app/components/ui/drawer.tsx +0 -116
  1068. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +0 -212
  1069. package/corpus/templates/design/app/components/ui/form.tsx +0 -177
  1070. package/corpus/templates/design/app/components/ui/hover-card.tsx +0 -27
  1071. package/corpus/templates/design/app/components/ui/input-otp.tsx +0 -69
  1072. package/corpus/templates/design/app/components/ui/input.tsx +0 -22
  1073. package/corpus/templates/design/app/components/ui/label.tsx +0 -24
  1074. package/corpus/templates/design/app/components/ui/menubar.tsx +0 -234
  1075. package/corpus/templates/design/app/components/ui/navigation-menu.tsx +0 -128
  1076. package/corpus/templates/design/app/components/ui/pagination.tsx +0 -121
  1077. package/corpus/templates/design/app/components/ui/popover.tsx +0 -44
  1078. package/corpus/templates/design/app/components/ui/progress.tsx +0 -26
  1079. package/corpus/templates/design/app/components/ui/radio-group.tsx +0 -42
  1080. package/corpus/templates/design/app/components/ui/resizable.tsx +0 -43
  1081. package/corpus/templates/design/app/components/ui/scroll-area.tsx +0 -46
  1082. package/corpus/templates/design/app/components/ui/select.tsx +0 -158
  1083. package/corpus/templates/design/app/components/ui/separator.tsx +0 -29
  1084. package/corpus/templates/design/app/components/ui/sheet.tsx +0 -160
  1085. package/corpus/templates/design/app/components/ui/sidebar.tsx +0 -782
  1086. package/corpus/templates/design/app/components/ui/skeleton.tsx +0 -15
  1087. package/corpus/templates/design/app/components/ui/slider.tsx +0 -26
  1088. package/corpus/templates/design/app/components/ui/sonner.tsx +0 -58
  1089. package/corpus/templates/design/app/components/ui/spinner.tsx +0 -17
  1090. package/corpus/templates/design/app/components/ui/switch.tsx +0 -27
  1091. package/corpus/templates/design/app/components/ui/table.tsx +0 -117
  1092. package/corpus/templates/design/app/components/ui/tabs.tsx +0 -53
  1093. package/corpus/templates/design/app/components/ui/textarea.tsx +0 -23
  1094. package/corpus/templates/design/app/components/ui/toast.tsx +0 -127
  1095. package/corpus/templates/design/app/components/ui/toaster.tsx +0 -33
  1096. package/corpus/templates/design/app/components/ui/toggle-group.tsx +0 -59
  1097. package/corpus/templates/design/app/components/ui/toggle.tsx +0 -43
  1098. package/corpus/templates/design/app/components/ui/tooltip.tsx +0 -30
  1099. package/corpus/templates/design/app/components/ui/use-toast.ts +0 -3
  1100. package/corpus/templates/design/app/hooks/use-mobile.tsx +0 -21
  1101. package/corpus/templates/design/app/hooks/use-toast.ts +0 -188
  1102. package/corpus/templates/forms/app/components/layout/HeaderActions.tsx +0 -84
  1103. package/corpus/templates/forms/app/components/ui/accordion.tsx +0 -56
  1104. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +0 -139
  1105. package/corpus/templates/forms/app/components/ui/alert.tsx +0 -59
  1106. package/corpus/templates/forms/app/components/ui/aspect-ratio.tsx +0 -5
  1107. package/corpus/templates/forms/app/components/ui/avatar.tsx +0 -48
  1108. package/corpus/templates/forms/app/components/ui/badge.tsx +0 -37
  1109. package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +0 -115
  1110. package/corpus/templates/forms/app/components/ui/button.tsx +0 -57
  1111. package/corpus/templates/forms/app/components/ui/card.tsx +0 -86
  1112. package/corpus/templates/forms/app/components/ui/carousel.tsx +0 -260
  1113. package/corpus/templates/forms/app/components/ui/checkbox.tsx +0 -28
  1114. package/corpus/templates/forms/app/components/ui/collapsible.tsx +0 -9
  1115. package/corpus/templates/forms/app/components/ui/dialog.tsx +0 -130
  1116. package/corpus/templates/forms/app/components/ui/drawer.tsx +0 -116
  1117. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +0 -212
  1118. package/corpus/templates/forms/app/components/ui/form.tsx +0 -177
  1119. package/corpus/templates/forms/app/components/ui/hover-card.tsx +0 -27
  1120. package/corpus/templates/forms/app/components/ui/input-otp.tsx +0 -69
  1121. package/corpus/templates/forms/app/components/ui/input.tsx +0 -22
  1122. package/corpus/templates/forms/app/components/ui/label.tsx +0 -24
  1123. package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +0 -128
  1124. package/corpus/templates/forms/app/components/ui/pagination.tsx +0 -121
  1125. package/corpus/templates/forms/app/components/ui/popover.tsx +0 -44
  1126. package/corpus/templates/forms/app/components/ui/progress.tsx +0 -26
  1127. package/corpus/templates/forms/app/components/ui/radio-group.tsx +0 -42
  1128. package/corpus/templates/forms/app/components/ui/resizable.tsx +0 -43
  1129. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +0 -46
  1130. package/corpus/templates/forms/app/components/ui/select.tsx +0 -158
  1131. package/corpus/templates/forms/app/components/ui/separator.tsx +0 -29
  1132. package/corpus/templates/forms/app/components/ui/sheet.tsx +0 -160
  1133. package/corpus/templates/forms/app/components/ui/sidebar.tsx +0 -782
  1134. package/corpus/templates/forms/app/components/ui/skeleton.tsx +0 -15
  1135. package/corpus/templates/forms/app/components/ui/slider.tsx +0 -26
  1136. package/corpus/templates/forms/app/components/ui/sonner.tsx +0 -58
  1137. package/corpus/templates/forms/app/components/ui/spinner.tsx +0 -17
  1138. package/corpus/templates/forms/app/components/ui/switch.tsx +0 -27
  1139. package/corpus/templates/forms/app/components/ui/table.tsx +0 -117
  1140. package/corpus/templates/forms/app/components/ui/tabs.tsx +0 -53
  1141. package/corpus/templates/forms/app/components/ui/textarea.tsx +0 -23
  1142. package/corpus/templates/forms/app/components/ui/toast.tsx +0 -127
  1143. package/corpus/templates/forms/app/components/ui/toaster.tsx +0 -33
  1144. package/corpus/templates/forms/app/components/ui/toggle-group.tsx +0 -59
  1145. package/corpus/templates/forms/app/components/ui/toggle.tsx +0 -43
  1146. package/corpus/templates/forms/app/components/ui/tooltip.tsx +0 -30
  1147. package/corpus/templates/forms/app/hooks/use-mobile.tsx +0 -21
  1148. package/corpus/templates/forms/app/hooks/use-toast.ts +0 -188
  1149. package/corpus/templates/macros/app/components/layout/HeaderActions.tsx +0 -84
  1150. package/corpus/templates/macros/app/components/ui/accordion.tsx +0 -56
  1151. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +0 -139
  1152. package/corpus/templates/macros/app/components/ui/alert.tsx +0 -59
  1153. package/corpus/templates/macros/app/components/ui/aspect-ratio.tsx +0 -5
  1154. package/corpus/templates/macros/app/components/ui/avatar.tsx +0 -48
  1155. package/corpus/templates/macros/app/components/ui/badge.tsx +0 -37
  1156. package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +0 -115
  1157. package/corpus/templates/macros/app/components/ui/chart.tsx +0 -375
  1158. package/corpus/templates/macros/app/components/ui/checkbox.tsx +0 -28
  1159. package/corpus/templates/macros/app/components/ui/collapsible.tsx +0 -9
  1160. package/corpus/templates/macros/app/components/ui/command.tsx +0 -154
  1161. package/corpus/templates/macros/app/components/ui/context-menu.tsx +0 -202
  1162. package/corpus/templates/macros/app/components/ui/drawer.tsx +0 -116
  1163. package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +0 -212
  1164. package/corpus/templates/macros/app/components/ui/form.tsx +0 -177
  1165. package/corpus/templates/macros/app/components/ui/hover-card.tsx +0 -27
  1166. package/corpus/templates/macros/app/components/ui/label.tsx +0 -24
  1167. package/corpus/templates/macros/app/components/ui/logo.tsx +0 -36
  1168. package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +0 -128
  1169. package/corpus/templates/macros/app/components/ui/pagination.tsx +0 -121
  1170. package/corpus/templates/macros/app/components/ui/popover.tsx +0 -44
  1171. package/corpus/templates/macros/app/components/ui/radio-group.tsx +0 -42
  1172. package/corpus/templates/macros/app/components/ui/scroll-area.tsx +0 -46
  1173. package/corpus/templates/macros/app/components/ui/select.tsx +0 -158
  1174. package/corpus/templates/macros/app/components/ui/separator.tsx +0 -29
  1175. package/corpus/templates/macros/app/components/ui/sheet.tsx +0 -160
  1176. package/corpus/templates/macros/app/components/ui/skeleton.tsx +0 -15
  1177. package/corpus/templates/macros/app/components/ui/slider.tsx +0 -26
  1178. package/corpus/templates/macros/app/components/ui/sonner.tsx +0 -58
  1179. package/corpus/templates/macros/app/components/ui/switch.tsx +0 -27
  1180. package/corpus/templates/macros/app/components/ui/table.tsx +0 -117
  1181. package/corpus/templates/macros/app/components/ui/toast.tsx +0 -127
  1182. package/corpus/templates/macros/app/components/ui/toggle-group.tsx +0 -59
  1183. package/corpus/templates/macros/app/components/ui/toggle.tsx +0 -43
  1184. package/corpus/templates/macros/app/components/ui/tooltip.tsx +0 -30
  1185. package/corpus/templates/mail/app/components/ui/accordion.tsx +0 -56
  1186. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +0 -139
  1187. package/corpus/templates/mail/app/components/ui/alert.tsx +0 -59
  1188. package/corpus/templates/mail/app/components/ui/aspect-ratio.tsx +0 -5
  1189. package/corpus/templates/mail/app/components/ui/avatar.tsx +0 -48
  1190. package/corpus/templates/mail/app/components/ui/badge.tsx +0 -37
  1191. package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +0 -115
  1192. package/corpus/templates/mail/app/components/ui/button.tsx +0 -57
  1193. package/corpus/templates/mail/app/components/ui/card.tsx +0 -86
  1194. package/corpus/templates/mail/app/components/ui/carousel.tsx +0 -260
  1195. package/corpus/templates/mail/app/components/ui/checkbox.tsx +0 -28
  1196. package/corpus/templates/mail/app/components/ui/collapsible.tsx +0 -9
  1197. package/corpus/templates/mail/app/components/ui/dialog.tsx +0 -130
  1198. package/corpus/templates/mail/app/components/ui/drawer.tsx +0 -116
  1199. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +0 -212
  1200. package/corpus/templates/mail/app/components/ui/form.tsx +0 -177
  1201. package/corpus/templates/mail/app/components/ui/hover-card.tsx +0 -27
  1202. package/corpus/templates/mail/app/components/ui/input-otp.tsx +0 -69
  1203. package/corpus/templates/mail/app/components/ui/label.tsx +0 -24
  1204. package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +0 -128
  1205. package/corpus/templates/mail/app/components/ui/pagination.tsx +0 -121
  1206. package/corpus/templates/mail/app/components/ui/popover.tsx +0 -44
  1207. package/corpus/templates/mail/app/components/ui/progress.tsx +0 -26
  1208. package/corpus/templates/mail/app/components/ui/radio-group.tsx +0 -42
  1209. package/corpus/templates/mail/app/components/ui/resizable.tsx +0 -43
  1210. package/corpus/templates/mail/app/components/ui/scroll-area.tsx +0 -46
  1211. package/corpus/templates/mail/app/components/ui/select.tsx +0 -158
  1212. package/corpus/templates/mail/app/components/ui/separator.tsx +0 -29
  1213. package/corpus/templates/mail/app/components/ui/sheet.tsx +0 -160
  1214. package/corpus/templates/mail/app/components/ui/sidebar.tsx +0 -782
  1215. package/corpus/templates/mail/app/components/ui/skeleton.tsx +0 -15
  1216. package/corpus/templates/mail/app/components/ui/slider.tsx +0 -26
  1217. package/corpus/templates/mail/app/components/ui/spinner.tsx +0 -17
  1218. package/corpus/templates/mail/app/components/ui/switch.tsx +0 -27
  1219. package/corpus/templates/mail/app/components/ui/table.tsx +0 -117
  1220. package/corpus/templates/mail/app/components/ui/tabs.tsx +0 -53
  1221. package/corpus/templates/mail/app/components/ui/toast.tsx +0 -127
  1222. package/corpus/templates/mail/app/components/ui/toaster.tsx +0 -33
  1223. package/corpus/templates/mail/app/components/ui/toggle-group.tsx +0 -59
  1224. package/corpus/templates/mail/app/components/ui/toggle.tsx +0 -43
  1225. package/corpus/templates/mail/app/components/ui/tooltip.tsx +0 -30
  1226. package/corpus/templates/mail/app/hooks/use-toast.ts +0 -188
  1227. package/corpus/templates/plan/app/components/layout/HeaderActions.tsx +0 -84
  1228. package/corpus/templates/plan/app/components/ui/accordion.tsx +0 -56
  1229. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +0 -139
  1230. package/corpus/templates/plan/app/components/ui/alert.tsx +0 -59
  1231. package/corpus/templates/plan/app/components/ui/aspect-ratio.tsx +0 -5
  1232. package/corpus/templates/plan/app/components/ui/avatar.tsx +0 -48
  1233. package/corpus/templates/plan/app/components/ui/badge.tsx +0 -37
  1234. package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +0 -115
  1235. package/corpus/templates/plan/app/components/ui/button.tsx +0 -57
  1236. package/corpus/templates/plan/app/components/ui/calendar.tsx +0 -68
  1237. package/corpus/templates/plan/app/components/ui/card.tsx +0 -86
  1238. package/corpus/templates/plan/app/components/ui/carousel.tsx +0 -260
  1239. package/corpus/templates/plan/app/components/ui/chart.tsx +0 -375
  1240. package/corpus/templates/plan/app/components/ui/checkbox.tsx +0 -28
  1241. package/corpus/templates/plan/app/components/ui/collapsible.tsx +0 -9
  1242. package/corpus/templates/plan/app/components/ui/command.tsx +0 -154
  1243. package/corpus/templates/plan/app/components/ui/context-menu.tsx +0 -202
  1244. package/corpus/templates/plan/app/components/ui/dialog.tsx +0 -130
  1245. package/corpus/templates/plan/app/components/ui/drawer.tsx +0 -116
  1246. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +0 -212
  1247. package/corpus/templates/plan/app/components/ui/form.tsx +0 -177
  1248. package/corpus/templates/plan/app/components/ui/hover-card.tsx +0 -27
  1249. package/corpus/templates/plan/app/components/ui/input-otp.tsx +0 -69
  1250. package/corpus/templates/plan/app/components/ui/input.tsx +0 -22
  1251. package/corpus/templates/plan/app/components/ui/label.tsx +0 -24
  1252. package/corpus/templates/plan/app/components/ui/menubar.tsx +0 -234
  1253. package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +0 -128
  1254. package/corpus/templates/plan/app/components/ui/pagination.tsx +0 -121
  1255. package/corpus/templates/plan/app/components/ui/popover.tsx +0 -44
  1256. package/corpus/templates/plan/app/components/ui/progress.tsx +0 -26
  1257. package/corpus/templates/plan/app/components/ui/radio-group.tsx +0 -42
  1258. package/corpus/templates/plan/app/components/ui/resizable.tsx +0 -43
  1259. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +0 -46
  1260. package/corpus/templates/plan/app/components/ui/select.tsx +0 -158
  1261. package/corpus/templates/plan/app/components/ui/separator.tsx +0 -29
  1262. package/corpus/templates/plan/app/components/ui/sheet.tsx +0 -160
  1263. package/corpus/templates/plan/app/components/ui/sidebar.tsx +0 -782
  1264. package/corpus/templates/plan/app/components/ui/skeleton.tsx +0 -15
  1265. package/corpus/templates/plan/app/components/ui/slider.tsx +0 -26
  1266. package/corpus/templates/plan/app/components/ui/sonner.tsx +0 -58
  1267. package/corpus/templates/plan/app/components/ui/spinner.tsx +0 -17
  1268. package/corpus/templates/plan/app/components/ui/switch.tsx +0 -27
  1269. package/corpus/templates/plan/app/components/ui/table.tsx +0 -117
  1270. package/corpus/templates/plan/app/components/ui/textarea.tsx +0 -23
  1271. package/corpus/templates/plan/app/components/ui/toast.tsx +0 -127
  1272. package/corpus/templates/plan/app/components/ui/toaster.tsx +0 -33
  1273. package/corpus/templates/plan/app/components/ui/toggle-group.tsx +0 -59
  1274. package/corpus/templates/plan/app/components/ui/toggle.tsx +0 -43
  1275. package/corpus/templates/plan/app/components/ui/tooltip.tsx +0 -30
  1276. package/corpus/templates/plan/app/components/ui/use-toast.ts +0 -3
  1277. package/corpus/templates/plan/app/hooks/use-mobile.tsx +0 -21
  1278. package/corpus/templates/plan/app/hooks/use-toast.ts +0 -188
  1279. package/corpus/templates/slides/app/components/layout/HeaderActions.tsx +0 -84
  1280. package/corpus/templates/slides/app/components/ui/accordion.tsx +0 -56
  1281. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +0 -139
  1282. package/corpus/templates/slides/app/components/ui/alert.tsx +0 -59
  1283. package/corpus/templates/slides/app/components/ui/aspect-ratio.tsx +0 -5
  1284. package/corpus/templates/slides/app/components/ui/avatar.tsx +0 -48
  1285. package/corpus/templates/slides/app/components/ui/badge.tsx +0 -37
  1286. package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +0 -115
  1287. package/corpus/templates/slides/app/components/ui/button.tsx +0 -57
  1288. package/corpus/templates/slides/app/components/ui/calendar.tsx +0 -68
  1289. package/corpus/templates/slides/app/components/ui/card.tsx +0 -86
  1290. package/corpus/templates/slides/app/components/ui/carousel.tsx +0 -260
  1291. package/corpus/templates/slides/app/components/ui/chart.tsx +0 -375
  1292. package/corpus/templates/slides/app/components/ui/checkbox.tsx +0 -28
  1293. package/corpus/templates/slides/app/components/ui/collapsible.tsx +0 -9
  1294. package/corpus/templates/slides/app/components/ui/command.tsx +0 -154
  1295. package/corpus/templates/slides/app/components/ui/context-menu.tsx +0 -202
  1296. package/corpus/templates/slides/app/components/ui/dialog.tsx +0 -130
  1297. package/corpus/templates/slides/app/components/ui/drawer.tsx +0 -116
  1298. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +0 -212
  1299. package/corpus/templates/slides/app/components/ui/form.tsx +0 -177
  1300. package/corpus/templates/slides/app/components/ui/hover-card.tsx +0 -27
  1301. package/corpus/templates/slides/app/components/ui/input-otp.tsx +0 -69
  1302. package/corpus/templates/slides/app/components/ui/input.tsx +0 -22
  1303. package/corpus/templates/slides/app/components/ui/label.tsx +0 -24
  1304. package/corpus/templates/slides/app/components/ui/menubar.tsx +0 -234
  1305. package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +0 -128
  1306. package/corpus/templates/slides/app/components/ui/pagination.tsx +0 -121
  1307. package/corpus/templates/slides/app/components/ui/popover.tsx +0 -44
  1308. package/corpus/templates/slides/app/components/ui/progress.tsx +0 -26
  1309. package/corpus/templates/slides/app/components/ui/radio-group.tsx +0 -42
  1310. package/corpus/templates/slides/app/components/ui/resizable.tsx +0 -43
  1311. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +0 -46
  1312. package/corpus/templates/slides/app/components/ui/select.tsx +0 -158
  1313. package/corpus/templates/slides/app/components/ui/separator.tsx +0 -29
  1314. package/corpus/templates/slides/app/components/ui/sheet.tsx +0 -160
  1315. package/corpus/templates/slides/app/components/ui/sidebar.tsx +0 -782
  1316. package/corpus/templates/slides/app/components/ui/skeleton.tsx +0 -15
  1317. package/corpus/templates/slides/app/components/ui/slider.tsx +0 -26
  1318. package/corpus/templates/slides/app/components/ui/sonner.tsx +0 -58
  1319. package/corpus/templates/slides/app/components/ui/spinner.tsx +0 -17
  1320. package/corpus/templates/slides/app/components/ui/switch.tsx +0 -27
  1321. package/corpus/templates/slides/app/components/ui/table.tsx +0 -117
  1322. package/corpus/templates/slides/app/components/ui/tabs.tsx +0 -53
  1323. package/corpus/templates/slides/app/components/ui/textarea.tsx +0 -23
  1324. package/corpus/templates/slides/app/components/ui/toast.tsx +0 -127
  1325. package/corpus/templates/slides/app/components/ui/toaster.tsx +0 -33
  1326. package/corpus/templates/slides/app/components/ui/toggle-group.tsx +0 -59
  1327. package/corpus/templates/slides/app/components/ui/toggle.tsx +0 -43
  1328. package/corpus/templates/slides/app/components/ui/tooltip.tsx +0 -30
  1329. package/corpus/templates/slides/app/components/ui/use-toast.ts +0 -3
  1330. package/corpus/templates/slides/app/hooks/use-mobile.tsx +0 -21
  1331. package/corpus/templates/slides/app/hooks/use-toast.ts +0 -188
@@ -234,6 +234,33 @@ export const analyticsAlertIncidents = table("analytics_alert_incidents", {
234
234
  orgId: text("org_id"),
235
235
  });
236
236
 
237
+ /**
238
+ * Admin-only registry of external agent-native app databases that Analytics can
239
+ * inspect. Secret values live in app_secrets; this table stores metadata and
240
+ * secret keys scoped to the active organization.
241
+ */
242
+ export const analyticsDbAdminConnections = table(
243
+ "analytics_db_admin_connections",
244
+ {
245
+ id: text("id").primaryKey(),
246
+ name: text("name").notNull(),
247
+ appId: text("app_id"),
248
+ appUrl: text("app_url"),
249
+ databaseUrlSecretKey: text("database_url_secret_key").notNull(),
250
+ databaseAuthTokenSecretKey: text("database_auth_token_secret_key"),
251
+ createdBy: text("created_by").notNull(),
252
+ createdAt: text("created_at").notNull().default(now()),
253
+ updatedAt: text("updated_at").notNull().default(now()),
254
+ orgId: text("org_id").notNull(),
255
+ },
256
+ (connection) => ({
257
+ orgUpdatedIdx: index("analytics_db_admin_connections_org_updated_idx").on(
258
+ connection.orgId,
259
+ connection.updatedAt,
260
+ ),
261
+ }),
262
+ );
263
+
237
264
  /**
238
265
  * Session replay summaries recorded through the first-party analytics replay
239
266
  * endpoint. Raw replay chunks live in session_replay_chunks and are only read
@@ -0,0 +1,458 @@
1
+ import { randomUUID } from "node:crypto";
2
+
3
+ import { createDbExec, getDbExec, type Dialect } from "@agent-native/core/db";
4
+ import type { DbAdminRuntime } from "@agent-native/core/db-admin";
5
+ import { getOrgContext } from "@agent-native/core/org";
6
+ import {
7
+ deleteAppSecret,
8
+ getAppSecretMeta,
9
+ readAppSecret,
10
+ writeAppSecret,
11
+ } from "@agent-native/core/secrets";
12
+ import {
13
+ getRequestOrgId,
14
+ getRequestUserEmail,
15
+ getSession,
16
+ runWithRequestContext,
17
+ } from "@agent-native/core/server";
18
+ import type { H3Event } from "h3";
19
+
20
+ const CONNECTIONS_TABLE = "analytics_db_admin_connections";
21
+ const SECRET_PREFIX = "analytics-db-admin";
22
+
23
+ export interface DbAdminConnection {
24
+ id: string;
25
+ name: string;
26
+ appId: string | null;
27
+ appUrl: string | null;
28
+ createdBy: string;
29
+ createdAt: string;
30
+ updatedAt: string;
31
+ orgId: string;
32
+ databaseUrlLast4: string | null;
33
+ hasDatabaseAuthToken: boolean;
34
+ databaseAuthTokenLast4: string | null;
35
+ }
36
+
37
+ export interface DbAdminAdminContext {
38
+ userEmail: string;
39
+ orgId: string;
40
+ role: "owner" | "admin";
41
+ }
42
+
43
+ export class DbAdminConnectionError extends Error {
44
+ constructor(
45
+ readonly statusCode: number,
46
+ message: string,
47
+ ) {
48
+ super(message);
49
+ this.name = "DbAdminConnectionError";
50
+ }
51
+ }
52
+
53
+ function isAdminRole(value: unknown): value is "owner" | "admin" {
54
+ return value === "owner" || value === "admin";
55
+ }
56
+
57
+ function readString(
58
+ row: Record<string, unknown>,
59
+ ...keys: string[]
60
+ ): string | null {
61
+ for (const key of keys) {
62
+ const value = row[key];
63
+ if (typeof value === "string" && value.trim()) return value;
64
+ }
65
+ return null;
66
+ }
67
+
68
+ async function resolveOrgRole(
69
+ userEmail: string,
70
+ orgId: string,
71
+ ): Promise<string | null> {
72
+ try {
73
+ const { rows } = await getDbExec().execute({
74
+ sql: `SELECT role FROM org_members WHERE org_id = ? AND LOWER(email) = ? LIMIT 1`,
75
+ args: [orgId, userEmail.toLowerCase()],
76
+ });
77
+ return readString((rows[0] ?? {}) as Record<string, unknown>, "role");
78
+ } catch {
79
+ return null;
80
+ }
81
+ }
82
+
83
+ export async function requireDbAdminContextFromRequest(input?: {
84
+ userEmail?: string;
85
+ orgId?: string | null;
86
+ }): Promise<DbAdminAdminContext> {
87
+ const userEmail = input?.userEmail ?? getRequestUserEmail();
88
+ const orgId = input?.orgId ?? getRequestOrgId() ?? null;
89
+ if (!userEmail) {
90
+ throw new DbAdminConnectionError(401, "Sign in to manage app databases.");
91
+ }
92
+ if (!orgId) {
93
+ throw new DbAdminConnectionError(
94
+ 403,
95
+ "An active organization is required to manage app databases.",
96
+ );
97
+ }
98
+ const role = await resolveOrgRole(userEmail, orgId);
99
+ if (!isAdminRole(role)) {
100
+ throw new DbAdminConnectionError(
101
+ 403,
102
+ "Only organization owners and admins can access connected app databases.",
103
+ );
104
+ }
105
+ return { userEmail, orgId, role };
106
+ }
107
+
108
+ export async function requireDbAdminContextFromEvent(
109
+ event: H3Event,
110
+ ): Promise<DbAdminAdminContext> {
111
+ const session = await getSession(event).catch(() => null);
112
+ if (!session?.email) {
113
+ throw new DbAdminConnectionError(401, "Sign in to manage app databases.");
114
+ }
115
+ const org = await getOrgContext(event).catch(() => null);
116
+ if (!org?.orgId) {
117
+ throw new DbAdminConnectionError(
118
+ 403,
119
+ "An active organization is required to manage app databases.",
120
+ );
121
+ }
122
+ if (!isAdminRole(org.role)) {
123
+ throw new DbAdminConnectionError(
124
+ 403,
125
+ "Only organization owners and admins can access connected app databases.",
126
+ );
127
+ }
128
+ return { userEmail: session.email, orgId: org.orgId, role: org.role };
129
+ }
130
+
131
+ export async function runWithDbAdminEventContext<T>(
132
+ event: H3Event,
133
+ fn: (ctx: DbAdminAdminContext) => Promise<T>,
134
+ ): Promise<T> {
135
+ const ctx = await requireDbAdminContextFromEvent(event);
136
+ return runWithRequestContext(
137
+ { userEmail: ctx.userEmail, orgId: ctx.orgId },
138
+ () => fn(ctx),
139
+ );
140
+ }
141
+
142
+ function secretKey(connectionId: string, kind: "url" | "auth-token"): string {
143
+ return `${SECRET_PREFIX}:${connectionId}:${kind}`;
144
+ }
145
+
146
+ function normalizeOptionalString(value: unknown): string | null {
147
+ return typeof value === "string" && value.trim() ? value.trim() : null;
148
+ }
149
+
150
+ function normalizeDatabaseUrl(value: unknown): string {
151
+ const raw = normalizeOptionalString(value);
152
+ if (!raw) {
153
+ throw new DbAdminConnectionError(400, "Database URL is required.");
154
+ }
155
+ const lower = raw.toLowerCase();
156
+ if (
157
+ !lower.startsWith("postgres://") &&
158
+ !lower.startsWith("postgresql://") &&
159
+ !lower.startsWith("libsql://")
160
+ ) {
161
+ throw new DbAdminConnectionError(
162
+ 400,
163
+ "Use a Postgres, PostgreSQL, or libSQL database URL.",
164
+ );
165
+ }
166
+ return raw;
167
+ }
168
+
169
+ function dialectForDatabaseUrl(url: string): Dialect {
170
+ const lower = url.toLowerCase();
171
+ if (lower.startsWith("postgres://") || lower.startsWith("postgresql://")) {
172
+ return "postgres";
173
+ }
174
+ return "sqlite";
175
+ }
176
+
177
+ function rowToConnection(
178
+ row: Record<string, unknown>,
179
+ secretMeta: {
180
+ databaseUrlLast4: string | null;
181
+ hasDatabaseAuthToken: boolean;
182
+ databaseAuthTokenLast4: string | null;
183
+ },
184
+ ): DbAdminConnection {
185
+ return {
186
+ id: readString(row, "id") ?? "",
187
+ name: readString(row, "name") ?? "Connected app",
188
+ appId: readString(row, "appId", "app_id"),
189
+ appUrl: readString(row, "appUrl", "app_url"),
190
+ createdBy: readString(row, "createdBy", "created_by") ?? "",
191
+ createdAt: readString(row, "createdAt", "created_at") ?? "",
192
+ updatedAt: readString(row, "updatedAt", "updated_at") ?? "",
193
+ orgId: readString(row, "orgId", "org_id") ?? "",
194
+ ...secretMeta,
195
+ };
196
+ }
197
+
198
+ async function secretMetadata(
199
+ ctx: DbAdminAdminContext,
200
+ row: Record<string, unknown>,
201
+ ) {
202
+ const urlSecretKey = readString(
203
+ row,
204
+ "databaseUrlSecretKey",
205
+ "database_url_secret_key",
206
+ );
207
+ const authSecretKey = readString(
208
+ row,
209
+ "databaseAuthTokenSecretKey",
210
+ "database_auth_token_secret_key",
211
+ );
212
+ const databaseUrlMeta = urlSecretKey
213
+ ? await getAppSecretMeta({
214
+ key: urlSecretKey,
215
+ scope: "org",
216
+ scopeId: ctx.orgId,
217
+ })
218
+ : null;
219
+ const databaseAuthTokenMeta = authSecretKey
220
+ ? await getAppSecretMeta({
221
+ key: authSecretKey,
222
+ scope: "org",
223
+ scopeId: ctx.orgId,
224
+ })
225
+ : null;
226
+ return {
227
+ databaseUrlLast4: databaseUrlMeta?.last4 ?? null,
228
+ hasDatabaseAuthToken: Boolean(databaseAuthTokenMeta),
229
+ databaseAuthTokenLast4: databaseAuthTokenMeta?.last4 ?? null,
230
+ };
231
+ }
232
+
233
+ export async function listDbAdminConnections(
234
+ ctx: DbAdminAdminContext,
235
+ ): Promise<DbAdminConnection[]> {
236
+ const { rows } = await getDbExec().execute({
237
+ sql: `SELECT id, name, app_id AS "appId", app_url AS "appUrl",
238
+ database_url_secret_key AS "databaseUrlSecretKey",
239
+ database_auth_token_secret_key AS "databaseAuthTokenSecretKey",
240
+ created_by AS "createdBy", created_at AS "createdAt",
241
+ updated_at AS "updatedAt", org_id AS "orgId"
242
+ FROM ${CONNECTIONS_TABLE}
243
+ WHERE org_id = ?
244
+ ORDER BY updated_at DESC, name ASC`,
245
+ args: [ctx.orgId],
246
+ });
247
+ return Promise.all(
248
+ rows.map(async (row) =>
249
+ rowToConnection(
250
+ row as Record<string, unknown>,
251
+ await secretMetadata(ctx, row as Record<string, unknown>),
252
+ ),
253
+ ),
254
+ );
255
+ }
256
+
257
+ export async function saveDbAdminConnection(
258
+ ctx: DbAdminAdminContext,
259
+ input: {
260
+ id?: string | null;
261
+ name: string;
262
+ appId?: string | null;
263
+ appUrl?: string | null;
264
+ databaseUrl: string;
265
+ databaseAuthToken?: string | null;
266
+ },
267
+ ): Promise<DbAdminConnection> {
268
+ const name = normalizeOptionalString(input.name);
269
+ if (!name)
270
+ throw new DbAdminConnectionError(400, "Connection name is required.");
271
+ const databaseUrl = normalizeDatabaseUrl(input.databaseUrl);
272
+ const authToken = normalizeOptionalString(input.databaseAuthToken);
273
+ const id = normalizeOptionalString(input.id) ?? randomUUID();
274
+ const databaseUrlSecretKey = secretKey(id, "url");
275
+ const databaseAuthTokenSecretKey = authToken
276
+ ? secretKey(id, "auth-token")
277
+ : null;
278
+ const now = new Date().toISOString();
279
+
280
+ await writeAppSecret({
281
+ key: databaseUrlSecretKey,
282
+ scope: "org",
283
+ scopeId: ctx.orgId,
284
+ value: databaseUrl,
285
+ description: `${name} database URL`,
286
+ });
287
+ if (authToken) {
288
+ await writeAppSecret({
289
+ key: databaseAuthTokenSecretKey!,
290
+ scope: "org",
291
+ scopeId: ctx.orgId,
292
+ value: authToken,
293
+ description: `${name} database auth token`,
294
+ });
295
+ } else {
296
+ await deleteAppSecret({
297
+ key: secretKey(id, "auth-token"),
298
+ scope: "org",
299
+ scopeId: ctx.orgId,
300
+ }).catch(() => false);
301
+ }
302
+
303
+ await getDbExec().execute({
304
+ sql: `INSERT INTO ${CONNECTIONS_TABLE}
305
+ (id, name, app_id, app_url, database_url_secret_key,
306
+ database_auth_token_secret_key, created_by, created_at, updated_at, org_id)
307
+ VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
308
+ ON CONFLICT(id) DO UPDATE SET
309
+ name = excluded.name,
310
+ app_id = excluded.app_id,
311
+ app_url = excluded.app_url,
312
+ database_url_secret_key = excluded.database_url_secret_key,
313
+ database_auth_token_secret_key = excluded.database_auth_token_secret_key,
314
+ updated_at = excluded.updated_at
315
+ WHERE ${CONNECTIONS_TABLE}.org_id = excluded.org_id`,
316
+ args: [
317
+ id,
318
+ name,
319
+ normalizeOptionalString(input.appId),
320
+ normalizeOptionalString(input.appUrl),
321
+ databaseUrlSecretKey,
322
+ databaseAuthTokenSecretKey,
323
+ ctx.userEmail,
324
+ now,
325
+ now,
326
+ ctx.orgId,
327
+ ],
328
+ });
329
+
330
+ const connection = await getDbAdminConnection(ctx, id);
331
+ if (!connection) {
332
+ throw new DbAdminConnectionError(404, "Connection not found.");
333
+ }
334
+ return connection;
335
+ }
336
+
337
+ export async function deleteDbAdminConnection(
338
+ ctx: DbAdminAdminContext,
339
+ id: string,
340
+ ): Promise<{ deleted: boolean }> {
341
+ const target = await getConnectionRow(ctx, id);
342
+ if (!target) return { deleted: false };
343
+
344
+ await getDbExec().execute({
345
+ sql: `DELETE FROM ${CONNECTIONS_TABLE} WHERE id = ? AND org_id = ?`,
346
+ args: [id, ctx.orgId],
347
+ });
348
+ await deleteAppSecret({
349
+ key: readString(target, "databaseUrlSecretKey", "database_url_secret_key")!,
350
+ scope: "org",
351
+ scopeId: ctx.orgId,
352
+ }).catch(() => false);
353
+ const authKey = readString(
354
+ target,
355
+ "databaseAuthTokenSecretKey",
356
+ "database_auth_token_secret_key",
357
+ );
358
+ if (authKey) {
359
+ await deleteAppSecret({
360
+ key: authKey,
361
+ scope: "org",
362
+ scopeId: ctx.orgId,
363
+ }).catch(() => false);
364
+ }
365
+ return { deleted: true };
366
+ }
367
+
368
+ async function getConnectionRow(
369
+ ctx: DbAdminAdminContext,
370
+ id: string,
371
+ ): Promise<Record<string, unknown> | null> {
372
+ const { rows } = await getDbExec().execute({
373
+ sql: `SELECT id, name, app_id AS "appId", app_url AS "appUrl",
374
+ database_url_secret_key AS "databaseUrlSecretKey",
375
+ database_auth_token_secret_key AS "databaseAuthTokenSecretKey",
376
+ created_by AS "createdBy", created_at AS "createdAt",
377
+ updated_at AS "updatedAt", org_id AS "orgId"
378
+ FROM ${CONNECTIONS_TABLE}
379
+ WHERE id = ? AND org_id = ?
380
+ LIMIT 1`,
381
+ args: [id, ctx.orgId],
382
+ });
383
+ return (rows[0] as Record<string, unknown> | undefined) ?? null;
384
+ }
385
+
386
+ export async function getDbAdminConnection(
387
+ ctx: DbAdminAdminContext,
388
+ id: string,
389
+ ): Promise<DbAdminConnection | null> {
390
+ const row = await getConnectionRow(ctx, id);
391
+ if (!row) return null;
392
+ return rowToConnection(row, await secretMetadata(ctx, row));
393
+ }
394
+
395
+ export async function withDbAdminConnectionRuntime<T>(
396
+ ctx: DbAdminAdminContext,
397
+ id: string,
398
+ fn: (runtime: DbAdminRuntime, connection: DbAdminConnection) => Promise<T>,
399
+ ): Promise<T> {
400
+ const row = await getConnectionRow(ctx, id);
401
+ if (!row) throw new DbAdminConnectionError(404, "Connection not found.");
402
+
403
+ const databaseUrlSecretKey = readString(
404
+ row,
405
+ "databaseUrlSecretKey",
406
+ "database_url_secret_key",
407
+ );
408
+ if (!databaseUrlSecretKey) {
409
+ throw new DbAdminConnectionError(
410
+ 500,
411
+ "Connection is missing database URL metadata.",
412
+ );
413
+ }
414
+ const databaseUrl = await readAppSecret({
415
+ key: databaseUrlSecretKey,
416
+ scope: "org",
417
+ scopeId: ctx.orgId,
418
+ });
419
+ if (!databaseUrl?.value) {
420
+ throw new DbAdminConnectionError(400, "Database URL secret is missing.");
421
+ }
422
+
423
+ const authSecretKey = readString(
424
+ row,
425
+ "databaseAuthTokenSecretKey",
426
+ "database_auth_token_secret_key",
427
+ );
428
+ const authToken = authSecretKey
429
+ ? await readAppSecret({
430
+ key: authSecretKey,
431
+ scope: "org",
432
+ scopeId: ctx.orgId,
433
+ })
434
+ : null;
435
+
436
+ const exec = await createDbExec({
437
+ url: databaseUrl.value,
438
+ authToken: authToken?.value,
439
+ });
440
+ try {
441
+ return await fn(
442
+ {
443
+ db: exec,
444
+ dialect: dialectForDatabaseUrl(databaseUrl.value),
445
+ },
446
+ rowToConnection(row, await secretMetadata(ctx, row)),
447
+ );
448
+ } finally {
449
+ await exec.close?.().catch(() => {});
450
+ }
451
+ }
452
+
453
+ export function redactDbAdminError(err: unknown): string {
454
+ const message = err instanceof Error ? err.message : String(err);
455
+ return message
456
+ .replace(/(postgres(?:ql)?:\/\/[^:\s/]+:)[^@\s]+@/gi, "$1[redacted]@")
457
+ .replace(/(libsql:\/\/[^?\s]+[?&]authToken=)[^&\s]+/gi, "$1[redacted]");
458
+ }
@@ -1,12 +1,14 @@
1
1
  import {
2
+ buildAgentAccessApiUrl,
3
+ buildAgentAccessUrl,
4
+ createScopedAgentAccessGrant,
2
5
  getRequestContext,
3
- signShortLivedToken,
4
- verifyShortLivedToken,
6
+ verifyScopedAgentAccessToken,
5
7
  } from "@agent-native/core/server";
6
8
 
7
9
  import {
8
10
  SESSION_REPLAY_AGENT_ACCESS_PARAM,
9
- sessionReplayAgentAccessTokenResourceId,
11
+ SESSION_REPLAY_AGENT_ACCESS_TOKEN_PREFIX,
10
12
  } from "../../shared/session-replay-agent-access.js";
11
13
  import {
12
14
  isFailedSessionReplayNetworkStatus,
@@ -70,17 +72,6 @@ function appOrigin(explicitOrigin?: string): string {
70
72
  }
71
73
  }
72
74
 
73
- function absoluteUrl(path: string, origin?: string): string {
74
- return `${appOrigin(origin)}${appBasePath()}${path}`;
75
- }
76
-
77
- function appendAgentToken(path: string, token: string): string {
78
- const sep = path.includes("?") ? "&" : "?";
79
- return `${path}${sep}${SESSION_REPLAY_AGENT_ACCESS_PARAM}=${encodeURIComponent(
80
- token,
81
- )}`;
82
- }
83
-
84
75
  function replayStartedAt(events: AgentReplayEvent[]): number {
85
76
  const first = events.find((event) =>
86
77
  Number.isFinite(Number(event.timestamp)),
@@ -616,10 +607,10 @@ export function verifySessionReplayAgentAccess(
616
607
  recordingId: string,
617
608
  token: string,
618
609
  ): boolean {
619
- return verifyShortLivedToken(
620
- token,
621
- sessionReplayAgentAccessTokenResourceId(recordingId),
622
- ).ok;
610
+ return verifyScopedAgentAccessToken(token, {
611
+ resourceKind: SESSION_REPLAY_AGENT_ACCESS_TOKEN_PREFIX,
612
+ resourceId: recordingId,
613
+ }).ok;
623
614
  }
624
615
 
625
616
  export async function createSessionReplayAgentLink({
@@ -632,31 +623,32 @@ export async function createSessionReplayAgentLink({
632
623
  origin?: string;
633
624
  }) {
634
625
  const recording = await getSessionReplaySummary(recordingId, scope);
635
- const token = signShortLivedToken({
636
- resourceId: sessionReplayAgentAccessTokenResourceId(recording.id),
626
+ const grant = createScopedAgentAccessGrant({
627
+ resourceKind: SESSION_REPLAY_AGENT_ACCESS_TOKEN_PREFIX,
628
+ resourceId: recording.id,
637
629
  viewerEmail: scope.userEmail,
638
630
  ttlSeconds: SESSION_REPLAY_AGENT_ACCESS_TTL_SECONDS,
639
631
  });
640
- const expiresAt = new Date(
641
- Date.now() + SESSION_REPLAY_AGENT_ACCESS_TTL_SECONDS * 1000,
642
- ).toISOString();
643
- const sessionPath = appendAgentToken(
644
- `/sessions/${encodeURIComponent(recording.id)}`,
645
- token,
646
- );
647
- const contextPath = appendAgentToken(
648
- `/api/session-replay/agent-context.json?id=${encodeURIComponent(
649
- recording.id,
650
- )}`,
651
- token,
652
- );
632
+ const resolvedOrigin = appOrigin(origin);
633
+ const basePath = appBasePath();
653
634
 
654
635
  return {
655
636
  recordingId: recording.id,
656
- url: absoluteUrl(sessionPath, origin),
657
- contextUrl: absoluteUrl(contextPath, origin),
658
- expiresAt,
659
- ttlSeconds: SESSION_REPLAY_AGENT_ACCESS_TTL_SECONDS,
637
+ url: buildAgentAccessUrl({
638
+ path: `/sessions/${encodeURIComponent(recording.id)}`,
639
+ origin: resolvedOrigin,
640
+ basePath,
641
+ token: grant.token,
642
+ }),
643
+ contextUrl: buildAgentAccessApiUrl({
644
+ endpoint: "/api/session-replay/agent-context.json",
645
+ resourceId: recording.id,
646
+ origin: resolvedOrigin,
647
+ basePath,
648
+ token: grant.token,
649
+ }),
650
+ expiresAt: grant.expiresAt,
651
+ ttlSeconds: grant.ttlSeconds,
660
652
  };
661
653
  }
662
654
 
@@ -679,28 +671,36 @@ export async function buildSessionReplayAgentContext({
679
671
  }
680
672
 
681
673
  const recording = await getSessionReplayTokenizedSummary(recordingId);
682
- const contextPath = appendAgentToken(
683
- `/api/session-replay/agent-context.json?id=${encodeURIComponent(
684
- recording.id,
685
- )}`,
674
+ const resolvedOrigin = appOrigin(origin);
675
+ const basePath = appBasePath();
676
+ const contextUrl = buildAgentAccessApiUrl({
677
+ endpoint: "/api/session-replay/agent-context.json",
678
+ resourceId: recording.id,
679
+ origin: resolvedOrigin,
680
+ basePath,
686
681
  token,
687
- );
688
- const eventsPath = appendAgentToken(
689
- `/api/session-replay/agent-events.json?id=${encodeURIComponent(
690
- recording.id,
691
- )}&limit=10000`,
682
+ });
683
+ const eventsUrl = buildAgentAccessApiUrl({
684
+ endpoint: "/api/session-replay/agent-events.json",
685
+ resourceId: recording.id,
686
+ origin: resolvedOrigin,
687
+ basePath,
692
688
  token,
693
- );
694
- const diagnosticsPath = appendAgentToken(
695
- `/api/session-replay/agent-diagnostics.json?id=${encodeURIComponent(
696
- recording.id,
697
- )}`,
689
+ extraParams: [["limit", 10000]],
690
+ });
691
+ const diagnosticsUrl = buildAgentAccessApiUrl({
692
+ endpoint: "/api/session-replay/agent-diagnostics.json",
693
+ resourceId: recording.id,
694
+ origin: resolvedOrigin,
695
+ basePath,
698
696
  token,
699
- );
700
- const pagePath = appendAgentToken(
701
- `/sessions/${encodeURIComponent(recording.id)}`,
697
+ });
698
+ const pageUrl = buildAgentAccessUrl({
699
+ path: `/sessions/${encodeURIComponent(recording.id)}`,
700
+ origin: resolvedOrigin,
701
+ basePath,
702
702
  token,
703
- );
703
+ });
704
704
 
705
705
  const eventsResponse = includeTimeline
706
706
  ? await getSessionReplayTokenizedEvents(recording.id, { limit: 10000 })
@@ -735,16 +735,16 @@ export async function buildSessionReplayAgentContext({
735
735
  ],
736
736
  recording: compactSessionRecordingSummary(recording),
737
737
  apis: {
738
- page: { method: "GET", url: absoluteUrl(pagePath, origin) },
739
- context: { method: "GET", url: absoluteUrl(contextPath, origin) },
738
+ page: { method: "GET", url: pageUrl },
739
+ context: { method: "GET", url: contextUrl },
740
740
  events: {
741
741
  method: "GET",
742
- url: absoluteUrl(eventsPath, origin),
742
+ url: eventsUrl,
743
743
  note: "Returns bounded sanitized replay events; storage/provider URLs stay private.",
744
744
  },
745
745
  diagnostics: {
746
746
  method: "GET",
747
- url: absoluteUrl(diagnosticsPath, origin),
747
+ url: diagnosticsUrl,
748
748
  note: "Returns bounded console/network diagnostics. Params: kind=console|network|all, level=log|info|warn|error|debug, limit (default 200, max 500), offset (page with N-entry skip), fromMs/toMs (inclusive offsetMs window around a timeline marker). offset/fromMs/toMs force strictly chronological pagination for full enumeration; totals reflect the filtered population and hasMore/truncated show whether more entries remain.",
749
749
  },
750
750
  },