@agent-native/core 0.76.3 → 0.76.5

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 (435) hide show
  1. package/corpus/core/CHANGELOG.md +25 -0
  2. package/corpus/core/package.json +1 -1
  3. package/corpus/core/src/agent/production-agent.ts +147 -56
  4. package/corpus/core/src/agent/run-store.ts +36 -0
  5. package/corpus/core/src/client/AgentPanel.tsx +3 -3
  6. package/corpus/core/src/client/AgentTaskCard.tsx +2 -1
  7. package/corpus/core/src/client/AppearancePicker.tsx +1 -1
  8. package/corpus/core/src/client/AssistantChat.tsx +3 -3
  9. package/corpus/core/src/client/CommandMenu.tsx +4 -4
  10. package/corpus/core/src/client/ErrorBoundary.tsx +1 -1
  11. package/corpus/core/src/client/MultiTabAssistantChat.tsx +11 -11
  12. package/corpus/core/src/client/NewWorkspaceAppFlow.tsx +5 -5
  13. package/corpus/core/src/client/components/ui/dropdown-menu.tsx +9 -9
  14. package/corpus/core/src/client/components/ui/sheet.tsx +1 -1
  15. package/corpus/core/src/client/composer/ComposerPlusMenu.tsx +6 -6
  16. package/corpus/core/src/client/composer/MentionPopover.tsx +4 -4
  17. package/corpus/core/src/client/composer/PastedTextChip.tsx +3 -3
  18. package/corpus/core/src/client/composer/PromptComposer.tsx +3 -3
  19. package/corpus/core/src/client/composer/TiptapComposer.tsx +16 -16
  20. package/corpus/core/src/client/guided-questions.tsx +6 -8
  21. package/corpus/core/src/client/i18n.tsx +2 -2
  22. package/corpus/core/src/client/integrations/IntegrationCard.tsx +2 -2
  23. package/corpus/core/src/client/integrations/IntegrationsPanel.tsx +4 -4
  24. package/corpus/core/src/client/notifications/NotificationsBell.tsx +3 -3
  25. package/corpus/core/src/client/onboarding/OnboardingBanner.tsx +3 -3
  26. package/corpus/core/src/client/onboarding/OnboardingPanel.tsx +17 -10
  27. package/corpus/core/src/client/org/OrgSwitcher.tsx +13 -11
  28. package/corpus/core/src/client/org/TeamPage.tsx +2 -2
  29. package/corpus/core/src/client/settings/AgentsSection.tsx +3 -3
  30. package/corpus/core/src/client/settings/AutomationsSection.tsx +3 -3
  31. package/corpus/core/src/client/settings/SecretsSection.tsx +2 -2
  32. package/corpus/core/src/client/settings/SettingsPanel.tsx +5 -7
  33. package/corpus/core/src/client/settings/SettingsSection.tsx +1 -1
  34. package/corpus/core/src/client/settings/UsageSection.tsx +3 -3
  35. package/corpus/core/src/client/settings/VoiceTranscriptionSection.tsx +3 -3
  36. package/corpus/core/src/client/sharing/ShareButton.tsx +7 -7
  37. package/corpus/core/src/client/sharing/ShareDialog.tsx +3 -3
  38. package/corpus/core/src/deploy/build.ts +31 -14
  39. package/corpus/core/src/styles/agent-conversation.css +10 -10
  40. package/corpus/core/src/styles/blocks.css +2 -2
  41. package/corpus/core/src/styles/rich-markdown-editor.css +2 -2
  42. package/corpus/templates/analytics/app/components/layout/MobileNav.tsx +1 -1
  43. package/corpus/templates/analytics/app/components/ui/alert-dialog.tsx +1 -1
  44. package/corpus/templates/analytics/app/components/ui/alert.tsx +1 -1
  45. package/corpus/templates/analytics/app/components/ui/breadcrumb.tsx +1 -1
  46. package/corpus/templates/analytics/app/components/ui/calendar.tsx +6 -6
  47. package/corpus/templates/analytics/app/components/ui/carousel.tsx +6 -6
  48. package/corpus/templates/analytics/app/components/ui/command.tsx +2 -2
  49. package/corpus/templates/analytics/app/components/ui/context-menu.tsx +9 -9
  50. package/corpus/templates/analytics/app/components/ui/date-picker.tsx +1 -1
  51. package/corpus/templates/analytics/app/components/ui/dialog.tsx +2 -2
  52. package/corpus/templates/analytics/app/components/ui/drawer.tsx +1 -1
  53. package/corpus/templates/analytics/app/components/ui/dropdown-menu.tsx +9 -9
  54. package/corpus/templates/analytics/app/components/ui/input-otp.tsx +1 -1
  55. package/corpus/templates/analytics/app/components/ui/menubar.tsx +9 -9
  56. package/corpus/templates/analytics/app/components/ui/navigation-menu.tsx +3 -3
  57. package/corpus/templates/analytics/app/components/ui/pagination.tsx +4 -4
  58. package/corpus/templates/analytics/app/components/ui/scroll-area.tsx +1 -1
  59. package/corpus/templates/analytics/app/components/ui/select.tsx +3 -3
  60. package/corpus/templates/analytics/app/components/ui/sheet.tsx +2 -2
  61. package/corpus/templates/analytics/app/components/ui/sidebar.tsx +6 -6
  62. package/corpus/templates/analytics/app/components/ui/table.tsx +2 -2
  63. package/corpus/templates/analytics/app/components/ui/toast.tsx +3 -3
  64. package/corpus/templates/assets/app/components/layout/Layout.tsx +2 -2
  65. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +12 -12
  66. package/corpus/templates/assets/app/components/ui/alert-dialog.tsx +1 -1
  67. package/corpus/templates/assets/app/components/ui/alert.tsx +1 -1
  68. package/corpus/templates/assets/app/components/ui/breadcrumb.tsx +1 -1
  69. package/corpus/templates/assets/app/components/ui/dialog.tsx +2 -2
  70. package/corpus/templates/assets/app/components/ui/dropdown-menu.tsx +9 -9
  71. package/corpus/templates/assets/app/components/ui/pagination.tsx +4 -4
  72. package/corpus/templates/assets/app/components/ui/scroll-area.tsx +1 -1
  73. package/corpus/templates/assets/app/components/ui/select.tsx +3 -3
  74. package/corpus/templates/assets/app/components/ui/sheet.tsx +2 -2
  75. package/corpus/templates/assets/app/components/ui/table.tsx +2 -2
  76. package/corpus/templates/assets/app/routes/library.tsx +3 -3
  77. package/corpus/templates/assets/app/routes/settings.tsx +1 -1
  78. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +5 -5
  79. package/corpus/templates/brain/app/components/ui/dropdown-menu.tsx +9 -9
  80. package/corpus/templates/brain/app/components/ui/select.tsx +3 -3
  81. package/corpus/templates/brain/app/components/ui/sheet.tsx +2 -2
  82. package/corpus/templates/brain/app/components/ui/table.tsx +2 -2
  83. package/corpus/templates/calendar/app/components/calendar/GoogleConnectBanner.tsx +6 -6
  84. package/corpus/templates/calendar/app/components/calendar/GoogleSetupWizard.tsx +3 -3
  85. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +11 -9
  86. package/corpus/templates/calendar/app/components/ui/alert-dialog.tsx +1 -1
  87. package/corpus/templates/calendar/app/components/ui/alert.tsx +1 -1
  88. package/corpus/templates/calendar/app/components/ui/breadcrumb.tsx +1 -1
  89. package/corpus/templates/calendar/app/components/ui/calendar.tsx +5 -5
  90. package/corpus/templates/calendar/app/components/ui/carousel.tsx +6 -6
  91. package/corpus/templates/calendar/app/components/ui/command.tsx +2 -2
  92. package/corpus/templates/calendar/app/components/ui/context-menu.tsx +9 -9
  93. package/corpus/templates/calendar/app/components/ui/dialog.tsx +2 -2
  94. package/corpus/templates/calendar/app/components/ui/drawer.tsx +1 -1
  95. package/corpus/templates/calendar/app/components/ui/dropdown-menu.tsx +9 -9
  96. package/corpus/templates/calendar/app/components/ui/input-otp.tsx +1 -1
  97. package/corpus/templates/calendar/app/components/ui/menubar.tsx +9 -9
  98. package/corpus/templates/calendar/app/components/ui/navigation-menu.tsx +3 -3
  99. package/corpus/templates/calendar/app/components/ui/pagination.tsx +4 -4
  100. package/corpus/templates/calendar/app/components/ui/scroll-area.tsx +1 -1
  101. package/corpus/templates/calendar/app/components/ui/select.tsx +3 -3
  102. package/corpus/templates/calendar/app/components/ui/sheet.tsx +2 -2
  103. package/corpus/templates/calendar/app/components/ui/sidebar.tsx +6 -6
  104. package/corpus/templates/calendar/app/components/ui/sonner.tsx +1 -1
  105. package/corpus/templates/calendar/app/components/ui/table.tsx +2 -2
  106. package/corpus/templates/calendar/app/components/ui/toast.tsx +3 -3
  107. package/corpus/templates/calendar/app/pages/Settings.tsx +5 -5
  108. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +9 -9
  109. package/corpus/templates/chat/app/components/ui/alert-dialog.tsx +1 -1
  110. package/corpus/templates/chat/app/components/ui/alert.tsx +1 -1
  111. package/corpus/templates/chat/app/components/ui/breadcrumb.tsx +1 -1
  112. package/corpus/templates/chat/app/components/ui/calendar.tsx +5 -5
  113. package/corpus/templates/chat/app/components/ui/carousel.tsx +6 -6
  114. package/corpus/templates/chat/app/components/ui/command.tsx +2 -2
  115. package/corpus/templates/chat/app/components/ui/context-menu.tsx +9 -9
  116. package/corpus/templates/chat/app/components/ui/dialog.tsx +2 -2
  117. package/corpus/templates/chat/app/components/ui/drawer.tsx +1 -1
  118. package/corpus/templates/chat/app/components/ui/dropdown-menu.tsx +9 -9
  119. package/corpus/templates/chat/app/components/ui/input-otp.tsx +1 -1
  120. package/corpus/templates/chat/app/components/ui/menubar.tsx +9 -9
  121. package/corpus/templates/chat/app/components/ui/navigation-menu.tsx +3 -3
  122. package/corpus/templates/chat/app/components/ui/pagination.tsx +4 -4
  123. package/corpus/templates/chat/app/components/ui/scroll-area.tsx +1 -1
  124. package/corpus/templates/chat/app/components/ui/select.tsx +3 -3
  125. package/corpus/templates/chat/app/components/ui/sheet.tsx +2 -2
  126. package/corpus/templates/chat/app/components/ui/sidebar.tsx +6 -6
  127. package/corpus/templates/chat/app/components/ui/table.tsx +2 -2
  128. package/corpus/templates/chat/app/components/ui/toast.tsx +3 -3
  129. package/corpus/templates/clips/app/components/capture-install-options.tsx +3 -3
  130. package/corpus/templates/clips/app/components/editable-recording-title.tsx +1 -1
  131. package/corpus/templates/clips/app/components/library/bulk-action-toolbar.tsx +3 -3
  132. package/corpus/templates/clips/app/components/library/folder-tree.tsx +5 -5
  133. package/corpus/templates/clips/app/components/library/library-layout.tsx +3 -3
  134. package/corpus/templates/clips/app/components/library/organization-switcher.tsx +4 -4
  135. package/corpus/templates/clips/app/components/library/recording-card.tsx +11 -11
  136. package/corpus/templates/clips/app/components/library/search-bar.tsx +4 -4
  137. package/corpus/templates/clips/app/components/library/space-card.tsx +1 -1
  138. package/corpus/templates/clips/app/components/library/tag-input.tsx +1 -1
  139. package/corpus/templates/clips/app/components/meetings/quick-ask-sidebar.tsx +2 -2
  140. package/corpus/templates/clips/app/components/recorder/camera-visualizer.tsx +2 -2
  141. package/corpus/templates/clips/app/components/recorder/microphone-visualizer.tsx +1 -1
  142. package/corpus/templates/clips/app/components/recorder/pre-record-panel.tsx +4 -4
  143. package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +1 -1
  144. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +2 -2
  145. package/corpus/templates/clips/app/components/ui/alert-dialog.tsx +1 -1
  146. package/corpus/templates/clips/app/components/ui/alert.tsx +1 -1
  147. package/corpus/templates/clips/app/components/ui/breadcrumb.tsx +1 -1
  148. package/corpus/templates/clips/app/components/ui/calendar.tsx +5 -5
  149. package/corpus/templates/clips/app/components/ui/carousel.tsx +6 -6
  150. package/corpus/templates/clips/app/components/ui/command.tsx +2 -2
  151. package/corpus/templates/clips/app/components/ui/context-menu.tsx +9 -9
  152. package/corpus/templates/clips/app/components/ui/dialog.tsx +2 -2
  153. package/corpus/templates/clips/app/components/ui/drawer.tsx +1 -1
  154. package/corpus/templates/clips/app/components/ui/dropdown-menu.tsx +9 -9
  155. package/corpus/templates/clips/app/components/ui/input-otp.tsx +1 -1
  156. package/corpus/templates/clips/app/components/ui/menubar.tsx +9 -9
  157. package/corpus/templates/clips/app/components/ui/navigation-menu.tsx +3 -3
  158. package/corpus/templates/clips/app/components/ui/pagination.tsx +4 -4
  159. package/corpus/templates/clips/app/components/ui/scroll-area.tsx +1 -1
  160. package/corpus/templates/clips/app/components/ui/select.tsx +3 -3
  161. package/corpus/templates/clips/app/components/ui/sheet.tsx +2 -2
  162. package/corpus/templates/clips/app/components/ui/sidebar.tsx +6 -6
  163. package/corpus/templates/clips/app/components/ui/table.tsx +2 -2
  164. package/corpus/templates/clips/app/components/ui/toast.tsx +3 -3
  165. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +1 -1
  166. package/corpus/templates/clips/app/components/workspace/insights-hub.tsx +2 -2
  167. package/corpus/templates/clips/app/components/workspace/invite-dialog.tsx +2 -2
  168. package/corpus/templates/clips/app/components/workspace/top-creators-table.tsx +6 -6
  169. package/corpus/templates/clips/app/components/workspace/top-videos-table.tsx +2 -2
  170. package/corpus/templates/clips/app/routes/_app.dictate.tsx +4 -4
  171. package/corpus/templates/clips/app/routes/_app.meetings._index.tsx +7 -7
  172. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +1 -1
  173. package/corpus/templates/clips/app/routes/download.tsx +2 -2
  174. package/corpus/templates/clips/app/routes/invite.$token.tsx +2 -2
  175. package/corpus/templates/clips/app/routes/r.$recordingId.tsx +3 -3
  176. package/corpus/templates/clips/app/routes/record.tsx +5 -5
  177. package/corpus/templates/clips/app/routes/share.$shareId.tsx +7 -7
  178. package/corpus/templates/content/app/components/EmptyState.tsx +1 -1
  179. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +17 -17
  180. package/corpus/templates/content/app/components/layout/Layout.tsx +2 -2
  181. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +10 -9
  182. package/corpus/templates/content/app/components/sidebar/DocumentTreeItem.tsx +10 -6
  183. package/corpus/templates/content/app/components/sidebar/NotionButton.tsx +3 -3
  184. package/corpus/templates/content/app/components/ui/alert-dialog.tsx +1 -1
  185. package/corpus/templates/content/app/components/ui/dialog.tsx +2 -2
  186. package/corpus/templates/content/app/components/ui/dropdown-menu.tsx +9 -9
  187. package/corpus/templates/content/app/components/ui/scroll-area.tsx +1 -1
  188. package/corpus/templates/content/app/components/ui/sheet.tsx +2 -2
  189. package/corpus/templates/content/app/components/ui/table.tsx +2 -2
  190. package/corpus/templates/content/app/components/ui/toast.tsx +3 -3
  191. package/corpus/templates/design/app/components/layout/Layout.tsx +3 -3
  192. package/corpus/templates/design/app/components/layout/Sidebar.tsx +3 -3
  193. package/corpus/templates/design/app/components/ui/alert-dialog.tsx +1 -1
  194. package/corpus/templates/design/app/components/ui/alert.tsx +1 -1
  195. package/corpus/templates/design/app/components/ui/breadcrumb.tsx +1 -1
  196. package/corpus/templates/design/app/components/ui/calendar.tsx +5 -5
  197. package/corpus/templates/design/app/components/ui/carousel.tsx +6 -6
  198. package/corpus/templates/design/app/components/ui/command.tsx +2 -2
  199. package/corpus/templates/design/app/components/ui/context-menu.tsx +9 -9
  200. package/corpus/templates/design/app/components/ui/dialog.tsx +2 -2
  201. package/corpus/templates/design/app/components/ui/drawer.tsx +1 -1
  202. package/corpus/templates/design/app/components/ui/dropdown-menu.tsx +9 -9
  203. package/corpus/templates/design/app/components/ui/input-otp.tsx +1 -1
  204. package/corpus/templates/design/app/components/ui/menubar.tsx +9 -9
  205. package/corpus/templates/design/app/components/ui/navigation-menu.tsx +3 -3
  206. package/corpus/templates/design/app/components/ui/pagination.tsx +4 -4
  207. package/corpus/templates/design/app/components/ui/scroll-area.tsx +1 -1
  208. package/corpus/templates/design/app/components/ui/select.tsx +3 -3
  209. package/corpus/templates/design/app/components/ui/sheet.tsx +2 -2
  210. package/corpus/templates/design/app/components/ui/sidebar.tsx +6 -6
  211. package/corpus/templates/design/app/components/ui/table.tsx +2 -2
  212. package/corpus/templates/design/app/components/ui/toast.tsx +3 -3
  213. package/corpus/templates/design/app/pages/DesignSystems.tsx +6 -8
  214. package/corpus/templates/design/app/pages/Index.tsx +8 -8
  215. package/corpus/templates/design/app/pages/NotFound.tsx +1 -1
  216. package/corpus/templates/design/app/pages/Templates.tsx +2 -2
  217. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +3 -3
  218. package/corpus/templates/forms/app/components/ui/alert-dialog.tsx +1 -1
  219. package/corpus/templates/forms/app/components/ui/alert.tsx +1 -1
  220. package/corpus/templates/forms/app/components/ui/breadcrumb.tsx +1 -1
  221. package/corpus/templates/forms/app/components/ui/calendar.tsx +9 -6
  222. package/corpus/templates/forms/app/components/ui/carousel.tsx +6 -6
  223. package/corpus/templates/forms/app/components/ui/command.tsx +2 -2
  224. package/corpus/templates/forms/app/components/ui/context-menu.tsx +9 -9
  225. package/corpus/templates/forms/app/components/ui/dialog.tsx +2 -2
  226. package/corpus/templates/forms/app/components/ui/drawer.tsx +1 -1
  227. package/corpus/templates/forms/app/components/ui/dropdown-menu.tsx +9 -9
  228. package/corpus/templates/forms/app/components/ui/input-otp.tsx +1 -1
  229. package/corpus/templates/forms/app/components/ui/menubar.tsx +9 -9
  230. package/corpus/templates/forms/app/components/ui/navigation-menu.tsx +3 -3
  231. package/corpus/templates/forms/app/components/ui/pagination.tsx +4 -4
  232. package/corpus/templates/forms/app/components/ui/scroll-area.tsx +1 -1
  233. package/corpus/templates/forms/app/components/ui/select.tsx +3 -3
  234. package/corpus/templates/forms/app/components/ui/sheet.tsx +2 -2
  235. package/corpus/templates/forms/app/components/ui/sidebar.tsx +6 -6
  236. package/corpus/templates/forms/app/components/ui/table.tsx +2 -2
  237. package/corpus/templates/forms/app/components/ui/toast.tsx +3 -3
  238. package/corpus/templates/forms/app/pages/FormBuilderPage.tsx +18 -18
  239. package/corpus/templates/forms/app/pages/FormsListPage.tsx +9 -9
  240. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +4 -4
  241. package/corpus/templates/macros/app/components/ui/alert-dialog.tsx +1 -1
  242. package/corpus/templates/macros/app/components/ui/alert.tsx +1 -1
  243. package/corpus/templates/macros/app/components/ui/breadcrumb.tsx +1 -1
  244. package/corpus/templates/macros/app/components/ui/command.tsx +2 -2
  245. package/corpus/templates/macros/app/components/ui/context-menu.tsx +9 -9
  246. package/corpus/templates/macros/app/components/ui/dialog.tsx +2 -2
  247. package/corpus/templates/macros/app/components/ui/drawer.tsx +1 -1
  248. package/corpus/templates/macros/app/components/ui/dropdown-menu.tsx +9 -9
  249. package/corpus/templates/macros/app/components/ui/menubar.tsx +9 -9
  250. package/corpus/templates/macros/app/components/ui/navigation-menu.tsx +3 -3
  251. package/corpus/templates/macros/app/components/ui/pagination.tsx +4 -4
  252. package/corpus/templates/macros/app/components/ui/scroll-area.tsx +1 -1
  253. package/corpus/templates/macros/app/components/ui/select.tsx +3 -3
  254. package/corpus/templates/macros/app/components/ui/sheet.tsx +2 -2
  255. package/corpus/templates/macros/app/components/ui/table.tsx +2 -2
  256. package/corpus/templates/macros/app/components/ui/toast.tsx +3 -3
  257. package/corpus/templates/macros/app/routes/_index.tsx +2 -2
  258. package/corpus/templates/macros/app/routes/analytics.tsx +1 -1
  259. package/corpus/templates/mail/app/components/GoogleConnectBanner.tsx +6 -6
  260. package/corpus/templates/mail/app/components/email/AttachmentStrip.tsx +2 -2
  261. package/corpus/templates/mail/app/components/email/EmailListItem.tsx +5 -5
  262. package/corpus/templates/mail/app/components/email/IntegrationsSidebar.tsx +5 -5
  263. package/corpus/templates/mail/app/components/email/MobileActionBar.tsx +3 -3
  264. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +10 -10
  265. package/corpus/templates/mail/app/components/layout/CommandPalette.tsx +1 -1
  266. package/corpus/templates/mail/app/components/layout/SearchBar.tsx +3 -3
  267. package/corpus/templates/mail/app/components/ui/alert-dialog.tsx +1 -1
  268. package/corpus/templates/mail/app/components/ui/alert.tsx +1 -1
  269. package/corpus/templates/mail/app/components/ui/breadcrumb.tsx +1 -1
  270. package/corpus/templates/mail/app/components/ui/calendar.tsx +4 -4
  271. package/corpus/templates/mail/app/components/ui/carousel.tsx +6 -6
  272. package/corpus/templates/mail/app/components/ui/command.tsx +2 -2
  273. package/corpus/templates/mail/app/components/ui/context-menu.tsx +9 -9
  274. package/corpus/templates/mail/app/components/ui/dialog.tsx +2 -2
  275. package/corpus/templates/mail/app/components/ui/drawer.tsx +1 -1
  276. package/corpus/templates/mail/app/components/ui/dropdown-menu.tsx +9 -9
  277. package/corpus/templates/mail/app/components/ui/input-otp.tsx +1 -1
  278. package/corpus/templates/mail/app/components/ui/menubar.tsx +9 -9
  279. package/corpus/templates/mail/app/components/ui/navigation-menu.tsx +3 -3
  280. package/corpus/templates/mail/app/components/ui/pagination.tsx +4 -4
  281. package/corpus/templates/mail/app/components/ui/scroll-area.tsx +1 -1
  282. package/corpus/templates/mail/app/components/ui/select.tsx +3 -3
  283. package/corpus/templates/mail/app/components/ui/sheet.tsx +2 -2
  284. package/corpus/templates/mail/app/components/ui/sidebar.tsx +6 -6
  285. package/corpus/templates/mail/app/components/ui/sonner.tsx +2 -2
  286. package/corpus/templates/mail/app/components/ui/table.tsx +2 -2
  287. package/corpus/templates/mail/app/components/ui/toast.tsx +3 -3
  288. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +10 -10
  289. package/corpus/templates/plan/app/components/ui/alert-dialog.tsx +1 -1
  290. package/corpus/templates/plan/app/components/ui/alert.tsx +1 -1
  291. package/corpus/templates/plan/app/components/ui/breadcrumb.tsx +1 -1
  292. package/corpus/templates/plan/app/components/ui/calendar.tsx +5 -5
  293. package/corpus/templates/plan/app/components/ui/carousel.tsx +6 -6
  294. package/corpus/templates/plan/app/components/ui/command.tsx +2 -2
  295. package/corpus/templates/plan/app/components/ui/context-menu.tsx +9 -9
  296. package/corpus/templates/plan/app/components/ui/dialog.tsx +2 -2
  297. package/corpus/templates/plan/app/components/ui/drawer.tsx +1 -1
  298. package/corpus/templates/plan/app/components/ui/dropdown-menu.tsx +9 -9
  299. package/corpus/templates/plan/app/components/ui/input-otp.tsx +1 -1
  300. package/corpus/templates/plan/app/components/ui/menubar.tsx +9 -9
  301. package/corpus/templates/plan/app/components/ui/navigation-menu.tsx +3 -3
  302. package/corpus/templates/plan/app/components/ui/pagination.tsx +4 -4
  303. package/corpus/templates/plan/app/components/ui/scroll-area.tsx +1 -1
  304. package/corpus/templates/plan/app/components/ui/select.tsx +3 -3
  305. package/corpus/templates/plan/app/components/ui/sheet.tsx +2 -2
  306. package/corpus/templates/plan/app/components/ui/sidebar.tsx +6 -6
  307. package/corpus/templates/plan/app/components/ui/table.tsx +2 -2
  308. package/corpus/templates/plan/app/components/ui/toast.tsx +3 -3
  309. package/corpus/templates/slides/app/components/layout/Layout.tsx +1 -1
  310. package/corpus/templates/slides/app/components/ui/alert-dialog.tsx +1 -1
  311. package/corpus/templates/slides/app/components/ui/alert.tsx +1 -1
  312. package/corpus/templates/slides/app/components/ui/breadcrumb.tsx +1 -1
  313. package/corpus/templates/slides/app/components/ui/calendar.tsx +5 -5
  314. package/corpus/templates/slides/app/components/ui/carousel.tsx +6 -6
  315. package/corpus/templates/slides/app/components/ui/command.tsx +2 -2
  316. package/corpus/templates/slides/app/components/ui/context-menu.tsx +9 -9
  317. package/corpus/templates/slides/app/components/ui/dialog.tsx +2 -2
  318. package/corpus/templates/slides/app/components/ui/drawer.tsx +1 -1
  319. package/corpus/templates/slides/app/components/ui/dropdown-menu.tsx +9 -9
  320. package/corpus/templates/slides/app/components/ui/input-otp.tsx +1 -1
  321. package/corpus/templates/slides/app/components/ui/menubar.tsx +9 -9
  322. package/corpus/templates/slides/app/components/ui/navigation-menu.tsx +3 -3
  323. package/corpus/templates/slides/app/components/ui/pagination.tsx +4 -4
  324. package/corpus/templates/slides/app/components/ui/scroll-area.tsx +1 -1
  325. package/corpus/templates/slides/app/components/ui/select.tsx +3 -3
  326. package/corpus/templates/slides/app/components/ui/sheet.tsx +2 -2
  327. package/corpus/templates/slides/app/components/ui/sidebar.tsx +6 -6
  328. package/corpus/templates/slides/app/components/ui/table.tsx +2 -2
  329. package/corpus/templates/slides/app/components/ui/toast.tsx +3 -3
  330. package/corpus/templates/videos/app/components/ui/alert-dialog.tsx +1 -1
  331. package/corpus/templates/videos/app/components/ui/alert.tsx +1 -1
  332. package/corpus/templates/videos/app/components/ui/breadcrumb.tsx +1 -1
  333. package/corpus/templates/videos/app/components/ui/calendar.tsx +5 -5
  334. package/corpus/templates/videos/app/components/ui/carousel.tsx +6 -6
  335. package/corpus/templates/videos/app/components/ui/command.tsx +2 -2
  336. package/corpus/templates/videos/app/components/ui/context-menu.tsx +9 -9
  337. package/corpus/templates/videos/app/components/ui/dialog.tsx +2 -2
  338. package/corpus/templates/videos/app/components/ui/drawer.tsx +1 -1
  339. package/corpus/templates/videos/app/components/ui/dropdown-menu.tsx +9 -9
  340. package/corpus/templates/videos/app/components/ui/input-otp.tsx +1 -1
  341. package/corpus/templates/videos/app/components/ui/menubar.tsx +9 -9
  342. package/corpus/templates/videos/app/components/ui/navigation-menu.tsx +3 -3
  343. package/corpus/templates/videos/app/components/ui/pagination.tsx +4 -4
  344. package/corpus/templates/videos/app/components/ui/scroll-area.tsx +1 -1
  345. package/corpus/templates/videos/app/components/ui/select.tsx +3 -3
  346. package/corpus/templates/videos/app/components/ui/sheet.tsx +2 -2
  347. package/corpus/templates/videos/app/components/ui/sidebar.tsx +6 -6
  348. package/corpus/templates/videos/app/components/ui/table.tsx +2 -2
  349. package/corpus/templates/videos/app/components/ui/toast.tsx +3 -3
  350. package/dist/agent/production-agent.d.ts +47 -0
  351. package/dist/agent/production-agent.d.ts.map +1 -1
  352. package/dist/agent/production-agent.js +112 -56
  353. package/dist/agent/production-agent.js.map +1 -1
  354. package/dist/agent/run-store.d.ts +21 -0
  355. package/dist/agent/run-store.d.ts.map +1 -1
  356. package/dist/agent/run-store.js +32 -0
  357. package/dist/agent/run-store.js.map +1 -1
  358. package/dist/client/AgentPanel.js +3 -3
  359. package/dist/client/AgentPanel.js.map +1 -1
  360. package/dist/client/AgentTaskCard.d.ts.map +1 -1
  361. package/dist/client/AgentTaskCard.js +1 -1
  362. package/dist/client/AgentTaskCard.js.map +1 -1
  363. package/dist/client/AppearancePicker.js +1 -1
  364. package/dist/client/AppearancePicker.js.map +1 -1
  365. package/dist/client/AssistantChat.js +3 -3
  366. package/dist/client/AssistantChat.js.map +1 -1
  367. package/dist/client/CommandMenu.js +4 -4
  368. package/dist/client/CommandMenu.js.map +1 -1
  369. package/dist/client/ErrorBoundary.js +1 -1
  370. package/dist/client/ErrorBoundary.js.map +1 -1
  371. package/dist/client/MultiTabAssistantChat.js +9 -9
  372. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  373. package/dist/client/NewWorkspaceAppFlow.js +5 -5
  374. package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
  375. package/dist/client/components/ui/dropdown-menu.js +6 -6
  376. package/dist/client/components/ui/dropdown-menu.js.map +1 -1
  377. package/dist/client/components/ui/sheet.js +1 -1
  378. package/dist/client/components/ui/sheet.js.map +1 -1
  379. package/dist/client/composer/ComposerPlusMenu.js +5 -5
  380. package/dist/client/composer/ComposerPlusMenu.js.map +1 -1
  381. package/dist/client/composer/MentionPopover.js +4 -4
  382. package/dist/client/composer/MentionPopover.js.map +1 -1
  383. package/dist/client/composer/PastedTextChip.js +2 -2
  384. package/dist/client/composer/PastedTextChip.js.map +1 -1
  385. package/dist/client/composer/PromptComposer.js +3 -3
  386. package/dist/client/composer/PromptComposer.js.map +1 -1
  387. package/dist/client/composer/TiptapComposer.js +12 -12
  388. package/dist/client/composer/TiptapComposer.js.map +1 -1
  389. package/dist/client/guided-questions.d.ts.map +1 -1
  390. package/dist/client/guided-questions.js +5 -5
  391. package/dist/client/guided-questions.js.map +1 -1
  392. package/dist/client/i18n.js +2 -2
  393. package/dist/client/i18n.js.map +1 -1
  394. package/dist/client/integrations/IntegrationCard.js +1 -1
  395. package/dist/client/integrations/IntegrationCard.js.map +1 -1
  396. package/dist/client/integrations/IntegrationsPanel.js +4 -4
  397. package/dist/client/integrations/IntegrationsPanel.js.map +1 -1
  398. package/dist/client/notifications/NotificationsBell.js +3 -3
  399. package/dist/client/notifications/NotificationsBell.js.map +1 -1
  400. package/dist/client/onboarding/OnboardingBanner.js +3 -3
  401. package/dist/client/onboarding/OnboardingBanner.js.map +1 -1
  402. package/dist/client/onboarding/OnboardingPanel.d.ts.map +1 -1
  403. package/dist/client/onboarding/OnboardingPanel.js +15 -10
  404. package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
  405. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  406. package/dist/client/org/OrgSwitcher.js +7 -7
  407. package/dist/client/org/OrgSwitcher.js.map +1 -1
  408. package/dist/client/org/TeamPage.js +2 -2
  409. package/dist/client/org/TeamPage.js.map +1 -1
  410. package/dist/client/settings/AgentsSection.js +3 -3
  411. package/dist/client/settings/AgentsSection.js.map +1 -1
  412. package/dist/client/settings/AutomationsSection.js +2 -2
  413. package/dist/client/settings/AutomationsSection.js.map +1 -1
  414. package/dist/client/settings/SecretsSection.js +2 -2
  415. package/dist/client/settings/SecretsSection.js.map +1 -1
  416. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  417. package/dist/client/settings/SettingsPanel.js +4 -4
  418. package/dist/client/settings/SettingsPanel.js.map +1 -1
  419. package/dist/client/settings/SettingsSection.js +1 -1
  420. package/dist/client/settings/SettingsSection.js.map +1 -1
  421. package/dist/client/settings/UsageSection.js +2 -2
  422. package/dist/client/settings/UsageSection.js.map +1 -1
  423. package/dist/client/settings/VoiceTranscriptionSection.js +3 -3
  424. package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -1
  425. package/dist/client/sharing/ShareButton.js +6 -6
  426. package/dist/client/sharing/ShareButton.js.map +1 -1
  427. package/dist/client/sharing/ShareDialog.js +3 -3
  428. package/dist/client/sharing/ShareDialog.js.map +1 -1
  429. package/dist/deploy/build.d.ts.map +1 -1
  430. package/dist/deploy/build.js +31 -14
  431. package/dist/deploy/build.js.map +1 -1
  432. package/dist/styles/agent-conversation.css +10 -10
  433. package/dist/styles/blocks.css +2 -2
  434. package/dist/styles/rich-markdown-editor.css +2 -2
  435. package/package.json +1 -1
@@ -39,7 +39,7 @@ export function TopVideosTable({
39
39
  <TableHeader>
40
40
  <TableRow>
41
41
  <TableHead>Recording</TableHead>
42
- <TableHead className="text-right w-24">{metricLabel}</TableHead>
42
+ <TableHead className="text-end w-24">{metricLabel}</TableHead>
43
43
  </TableRow>
44
44
  </TableHeader>
45
45
  <TableBody>
@@ -53,7 +53,7 @@ export function TopVideosTable({
53
53
  {row.title || "Untitled"}
54
54
  </Link>
55
55
  </TableCell>
56
- <TableCell className="text-right tabular-nums">
56
+ <TableCell className="text-end tabular-nums">
57
57
  {row.count.toLocaleString()}
58
58
  </TableCell>
59
59
  </TableRow>
@@ -213,7 +213,7 @@ function HowToCard({ defaultOpen = true }: { defaultOpen?: boolean }) {
213
213
  {open ? (
214
214
  <IconChevronDown className="h-4 w-4 text-muted-foreground" />
215
215
  ) : (
216
- <IconChevronRight className="h-4 w-4 text-muted-foreground" />
216
+ <IconChevronRight className="h-4 w-4 text-muted-foreground rtl:-scale-x-100" />
217
217
  )}
218
218
  </CollapsibleTrigger>
219
219
  <CollapsibleContent>
@@ -439,7 +439,7 @@ function DictationRow({ dictation }: { dictation: Dictation }) {
439
439
  {expanded ? (
440
440
  <IconChevronDown className="h-3.5 w-3.5" />
441
441
  ) : (
442
- <IconChevronRight className="h-3.5 w-3.5" />
442
+ <IconChevronRight className="h-3.5 w-3.5 rtl:-scale-x-100" />
443
443
  )}
444
444
  {formatTime(dictation.createdAt)}
445
445
  </div>
@@ -454,7 +454,7 @@ function DictationRow({ dictation }: { dictation: Dictation }) {
454
454
  <span className="text-muted-foreground italic">No text</span>
455
455
  )}
456
456
  </div>
457
- <div className="col-span-1 text-right text-xs text-muted-foreground tabular-nums">
457
+ <div className="col-span-1 text-end text-xs text-muted-foreground tabular-nums">
458
458
  {formatDuration(dictation.durationMs)}
459
459
  </div>
460
460
  <div className="col-span-1 flex justify-end">
@@ -946,7 +946,7 @@ export default function DictateRoute() {
946
946
  <div className="col-span-2">When</div>
947
947
  <div className="col-span-2">Source</div>
948
948
  <div className="col-span-6">Text</div>
949
- <div className="col-span-1 text-right">Duration</div>
949
+ <div className="col-span-1 text-end">Duration</div>
950
950
  <div className="col-span-1" />
951
951
  </div>
952
952
  <div>
@@ -556,9 +556,9 @@ function CalendarAccountMenu({
556
556
  disabled={connectPending}
557
557
  >
558
558
  {connectPending ? (
559
- <IconLoader2 className="mr-2 h-4 w-4 animate-spin" />
559
+ <IconLoader2 className="me-2 h-4 w-4 animate-spin" />
560
560
  ) : (
561
- <IconExternalLink className="mr-2 h-4 w-4" />
561
+ <IconExternalLink className="me-2 h-4 w-4" />
562
562
  )}
563
563
  {primaryAccount ? "Reconnect calendar" : "Connect calendar"}
564
564
  </DropdownMenuItem>
@@ -574,7 +574,7 @@ function CalendarAccountMenu({
574
574
  }}
575
575
  className="text-destructive focus:text-destructive"
576
576
  >
577
- <IconPlugOff className="mr-2 h-4 w-4" />
577
+ <IconPlugOff className="me-2 h-4 w-4" />
578
578
  Disconnect {calendarAccountLabel(account)}
579
579
  </DropdownMenuItem>
580
580
  ))}
@@ -634,7 +634,7 @@ function MeetingsHeader({
634
634
  <h1 className="text-base font-semibold tracking-tight truncate">
635
635
  Meetings
636
636
  </h1>
637
- <div className="ml-auto flex items-center gap-2">
637
+ <div className="ms-auto flex items-center gap-2">
638
638
  <CalendarAccountMenu
639
639
  accounts={calendarAccounts}
640
640
  onConnected={onConnected}
@@ -648,18 +648,18 @@ function MeetingsHeader({
648
648
  Upcoming calendar meetings and your recorded notes.
649
649
  </p>
650
650
  <div className="relative max-w-sm">
651
- <IconSearch className="absolute left-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground" />
651
+ <IconSearch className="absolute start-2.5 top-1/2 -translate-y-1/2 h-3.5 w-3.5 text-muted-foreground" />
652
652
  <Input
653
653
  value={query}
654
654
  onChange={(e) => onQueryChange(e.target.value)}
655
655
  placeholder="Search meetings..."
656
- className="pl-8 pr-8 h-9 text-sm"
656
+ className="ps-8 pe-8 h-9 text-sm"
657
657
  />
658
658
  {query && (
659
659
  <button
660
660
  type="button"
661
661
  onClick={() => onQueryChange("")}
662
- className="absolute right-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer"
662
+ className="absolute end-2 top-1/2 -translate-y-1/2 text-muted-foreground hover:text-foreground cursor-pointer"
663
663
  aria-label="Clear search"
664
664
  >
665
665
  <IconX className="h-3.5 w-3.5" />
@@ -1016,7 +1016,7 @@ export default function SettingsIndexRoute() {
1016
1016
  <CollapsibleTrigger asChild>
1017
1017
  <button
1018
1018
  type="button"
1019
- className="flex w-full items-center justify-between gap-3 px-3 py-3 text-left"
1019
+ className="flex w-full items-center justify-between gap-3 px-3 py-3 text-start"
1020
1020
  >
1021
1021
  <div className="min-w-0">
1022
1022
  <div className="flex items-center gap-2 text-sm font-medium">
@@ -204,7 +204,7 @@ export default function DownloadPage() {
204
204
  </a>
205
205
  <a
206
206
  href={appPath("/library")}
207
- className="ml-auto text-sm text-muted-foreground hover:text-foreground"
207
+ className="ms-auto text-sm text-muted-foreground hover:text-foreground"
208
208
  >
209
209
  Back to library
210
210
  </a>
@@ -245,7 +245,7 @@ export default function DownloadPage() {
245
245
  </div>
246
246
 
247
247
  {clipsChromeExtensionEnabled && (
248
- <section className="mt-10 w-full max-w-xl rounded-2xl border border-border bg-card p-4 text-left shadow-sm">
248
+ <section className="mt-10 w-full max-w-xl rounded-2xl border border-border bg-card p-4 text-start shadow-sm">
249
249
  <div className="flex items-start gap-3">
250
250
  <div className="flex h-9 w-9 shrink-0 items-center justify-center rounded-xl bg-primary/10 text-primary">
251
251
  <IconBrandChrome className="h-4 w-4" />
@@ -194,7 +194,7 @@ export default function InviteAcceptRoute() {
194
194
  onClick={() => setDeclineOpen(true)}
195
195
  disabled={accepting}
196
196
  >
197
- <IconX className="size-4 mr-1.5" />
197
+ <IconX className="size-4 me-1.5" />
198
198
  Decline
199
199
  </Button>
200
200
  <Button
@@ -202,7 +202,7 @@ export default function InviteAcceptRoute() {
202
202
  disabled={accepting}
203
203
  className="bg-primary hover:bg-primary/90"
204
204
  >
205
- <IconCheck className="size-4 mr-1.5" />
205
+ <IconCheck className="size-4 me-1.5" />
206
206
  {accepting ? "Joining…" : "Accept invite"}
207
207
  </Button>
208
208
  </div>
@@ -544,7 +544,7 @@ export default function RecordingPage() {
544
544
  detail &&
545
545
  role &&
546
546
  role !== "viewer" ? (
547
- <div className="mb-4 w-full max-w-xl rounded-md border border-border bg-card p-4 text-left shadow-sm">
547
+ <div className="mb-4 w-full max-w-xl rounded-md border border-border bg-card p-4 text-start shadow-sm">
548
548
  <div className="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">
549
549
  Details
550
550
  </div>
@@ -638,7 +638,7 @@ export default function RecordingPage() {
638
638
  onClick={() => navigate("/")}
639
639
  aria-label="Back"
640
640
  >
641
- <IconArrowLeft className="h-4 w-4" />
641
+ <IconArrowLeft className="h-4 w-4 rtl:-scale-x-100" />
642
642
  </Button>
643
643
  <div className="flex-1 min-w-0">
644
644
  <EditableRecordingTitle
@@ -912,7 +912,7 @@ export default function RecordingPage() {
912
912
 
913
913
  {/* Side panel */}
914
914
  {!editing ? (
915
- <aside className="w-[380px] border-l border-border flex flex-col shrink-0 bg-background">
915
+ <aside className="w-[380px] border-s border-border flex flex-col shrink-0 bg-background">
916
916
  <Tabs
917
917
  value={panel}
918
918
  onValueChange={(v) => setPanel(v as SidePanel)}
@@ -661,7 +661,7 @@ function RecordingErrorCard({
661
661
  {friendlyMessage}
662
662
  </p>
663
663
  {showTechnicalDetails && (
664
- <details className="mt-3 text-left text-xs text-muted-foreground">
664
+ <details className="mt-3 text-start text-xs text-muted-foreground">
665
665
  <summary className="cursor-pointer font-medium text-foreground">
666
666
  Technical details
667
667
  </summary>
@@ -673,7 +673,7 @@ function RecordingErrorCard({
673
673
  </div>
674
674
 
675
675
  {guidance && (
676
- <div className="border-b border-border bg-muted/25 px-6 py-4 text-left">
676
+ <div className="border-b border-border bg-muted/25 px-6 py-4 text-start">
677
677
  <div className="text-xs font-medium text-foreground">
678
678
  What to check
679
679
  </div>
@@ -2107,9 +2107,9 @@ export default function RecordRoute() {
2107
2107
  void doCancel();
2108
2108
  navigate("/library");
2109
2109
  }}
2110
- className="fixed left-4 top-4 z-30 inline-flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
2110
+ className="fixed start-4 top-4 z-30 inline-flex h-9 w-9 items-center justify-center rounded-full text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring"
2111
2111
  >
2112
- <IconArrowLeft className="h-5 w-5" />
2112
+ <IconArrowLeft className="h-5 w-5 rtl:-scale-x-100" />
2113
2113
  </button>
2114
2114
  )}
2115
2115
 
@@ -2151,7 +2151,7 @@ export default function RecordRoute() {
2151
2151
  )}
2152
2152
  </div>
2153
2153
  {!isDesktopApp && (
2154
- <div className="mx-auto mt-4 w-full max-w-md xl:absolute xl:left-[calc(50%+18rem)] xl:top-0 xl:mt-0 xl:w-72">
2154
+ <div className="mx-auto mt-4 w-full max-w-md xl:absolute xl:start-[calc(50%+18rem)] xl:top-0 xl:mt-0 xl:w-72">
2155
2155
  <DesktopRecorderCallout />
2156
2156
  </div>
2157
2157
  )}
@@ -567,7 +567,7 @@ export default function ShareRoute() {
567
567
  shareId ? (
568
568
  <Button asChild size="sm">
569
569
  <a href={buildSignInHref(`/r/${shareId}`)} className="gap-1.5">
570
- <IconLogin2 className="h-4 w-4" />
570
+ <IconLogin2 className="h-4 w-4 rtl:-scale-x-100" />
571
571
  Sign in
572
572
  </a>
573
573
  </Button>
@@ -642,7 +642,7 @@ export default function ShareRoute() {
642
642
  {message}
643
643
  </p>
644
644
  {isFailure && detail && canManageStorage ? (
645
- <div className="mb-4 w-full max-w-xl rounded-md border border-border bg-card p-4 text-left shadow-sm">
645
+ <div className="mb-4 w-full max-w-xl rounded-md border border-border bg-card p-4 text-start shadow-sm">
646
646
  <div className="mb-2 text-xs font-medium uppercase tracking-wide text-muted-foreground">
647
647
  Details
648
648
  </div>
@@ -675,14 +675,14 @@ export default function ShareRoute() {
675
675
  {!session && isFailure ? (
676
676
  <Button asChild size="sm">
677
677
  <a href={signInHref} className="gap-1.5">
678
- <IconLogin2 className="h-4 w-4" />
678
+ <IconLogin2 className="h-4 w-4 rtl:-scale-x-100" />
679
679
  Sign in to finish
680
680
  </a>
681
681
  </Button>
682
682
  ) : !session && !sessionLoading && !isFailure ? (
683
683
  <Button asChild variant="ghost" size="sm">
684
684
  <a href={signInHref} className="gap-1.5">
685
- <IconLogin2 className="h-4 w-4" />
685
+ <IconLogin2 className="h-4 w-4 rtl:-scale-x-100" />
686
686
  Sign in if this is yours
687
687
  </a>
688
688
  </Button>
@@ -724,7 +724,7 @@ export default function ShareRoute() {
724
724
  onClick={() => navigate("/")}
725
725
  aria-label="Back to home"
726
726
  >
727
- <IconArrowLeft className="h-4 w-4" />
727
+ <IconArrowLeft className="h-4 w-4 rtl:-scale-x-100" />
728
728
  </Button>
729
729
  ) : null}
730
730
  <div className="min-w-0 flex-1">
@@ -906,7 +906,7 @@ export default function ShareRoute() {
906
906
  </div>
907
907
  </div>
908
908
 
909
- <aside className="flex min-h-[420px] w-full shrink-0 flex-col border-t border-border bg-background lg:min-h-0 lg:w-[380px] lg:border-l lg:border-t-0">
909
+ <aside className="flex min-h-[420px] w-full shrink-0 flex-col border-t border-border bg-background lg:min-h-0 lg:w-[380px] lg:border-s lg:border-t-0">
910
910
  <Tabs defaultValue="agent" className="flex h-full flex-col">
911
911
  <TabsList className="mx-3 mt-3 grid w-auto grid-cols-4">
912
912
  <TabsTrigger value="agent" className="text-xs">
@@ -915,7 +915,7 @@ export default function ShareRoute() {
915
915
  <TabsTrigger value="comments" className="text-xs gap-1">
916
916
  Comments
917
917
  {comments.length > 0 ? (
918
- <span className="ml-0.5 rounded-full bg-accent px-1.5 text-[10px] tabular-nums">
918
+ <span className="ms-0.5 rounded-full bg-accent px-1.5 text-[10px] tabular-nums">
919
919
  {comments.length}
920
920
  </span>
921
921
  ) : null}
@@ -77,7 +77,7 @@ export function EmptyState() {
77
77
  {t("empty.noPageDescription")}
78
78
  </p>
79
79
  <Button onClick={handleCreate} size="sm">
80
- <IconPlus size={14} className="mr-1.5" />
80
+ <IconPlus size={14} className="me-1.5" />
81
81
  {t("empty.newPage")}
82
82
  </Button>
83
83
  </div>
@@ -507,14 +507,14 @@ export function DocumentToolbar({
507
507
 
508
508
  return (
509
509
  <>
510
- <div className="absolute top-2 right-2 z-10 flex items-center gap-0.5 rounded-xl border border-border/70 bg-background/95 p-1 shadow-sm backdrop-blur supports-[backdrop-filter]:bg-background/85 sm:top-3 sm:right-4 sm:gap-1">
510
+ <div className="absolute top-2 end-2 z-10 flex items-center gap-0.5 rounded-xl border border-border/70 bg-background/95 p-1 shadow-sm backdrop-blur supports-[backdrop-filter]:bg-background/85 sm:top-3 sm:end-4 sm:gap-1">
511
511
  {/* Presence — shared PresenceBar (agent + collaborator avatars) */}
512
512
  <PresenceBar
513
513
  activeUsers={activeUsers ?? []}
514
514
  agentPresent={agentPresent}
515
515
  agentActive={agentActive}
516
516
  currentUserEmail={currentUserEmail}
517
- className="mr-1"
517
+ className="me-1"
518
518
  />
519
519
  {isLocalFileDocument ? (
520
520
  <Button
@@ -589,24 +589,24 @@ export function DocumentToolbar({
589
589
  Local file
590
590
  </DropdownMenuLabel>
591
591
  <DropdownMenuItem disabled className="min-w-0">
592
- <IconFileText className="mr-2 h-4 w-4 shrink-0" />
592
+ <IconFileText className="me-2 h-4 w-4 shrink-0" />
593
593
  <span className="truncate">{source?.path}</span>
594
594
  </DropdownMenuItem>
595
595
  <DropdownMenuItem
596
596
  disabled={revealLocalSource.isPending}
597
597
  onSelect={() => void handleRevealLocalPath()}
598
598
  >
599
- <IconFolderOpen className="mr-2 h-4 w-4" />
599
+ <IconFolderOpen className="me-2 h-4 w-4" />
600
600
  Reveal in Finder
601
601
  </DropdownMenuItem>
602
602
  <DropdownMenuItem onSelect={handleCopyLocalRelativePath}>
603
- <IconCopy className="mr-2 h-4 w-4" />
603
+ <IconCopy className="me-2 h-4 w-4" />
604
604
  Copy relative path
605
605
  </DropdownMenuItem>
606
606
  <DropdownMenuItem
607
607
  onSelect={() => void handleCopyLocalAbsolutePath()}
608
608
  >
609
- <IconCopy className="mr-2 h-4 w-4" />
609
+ <IconCopy className="me-2 h-4 w-4" />
610
610
  Copy absolute path
611
611
  </DropdownMenuItem>
612
612
  </DropdownMenuGroup>
@@ -614,7 +614,7 @@ export function DocumentToolbar({
614
614
  <>
615
615
  <DropdownMenuGroup>
616
616
  <DropdownMenuItem onSelect={() => setHistoryOpen(true)}>
617
- <IconHistory className="mr-2 h-4 w-4" />
617
+ <IconHistory className="me-2 h-4 w-4" />
618
618
  Version history
619
619
  </DropdownMenuItem>
620
620
  </DropdownMenuGroup>
@@ -622,9 +622,9 @@ export function DocumentToolbar({
622
622
  <DropdownMenuSub>
623
623
  <DropdownMenuSubTrigger disabled={exportDocument.isPending}>
624
624
  {exportDocument.isPending ? (
625
- <IconLoader2 className="mr-2 h-4 w-4 animate-spin" />
625
+ <IconLoader2 className="me-2 h-4 w-4 animate-spin" />
626
626
  ) : (
627
- <IconDownload className="mr-2 h-4 w-4" />
627
+ <IconDownload className="me-2 h-4 w-4" />
628
628
  )}
629
629
  Export
630
630
  </DropdownMenuSubTrigger>
@@ -633,21 +633,21 @@ export function DocumentToolbar({
633
633
  disabled={exportDocument.isPending}
634
634
  onSelect={() => void handleExport("pdf")}
635
635
  >
636
- <IconFileTypePdf className="mr-2 h-4 w-4" />
636
+ <IconFileTypePdf className="me-2 h-4 w-4" />
637
637
  PDF
638
638
  </DropdownMenuItem>
639
639
  <DropdownMenuItem
640
640
  disabled={exportDocument.isPending}
641
641
  onSelect={() => void handleExport("markdown")}
642
642
  >
643
- <IconMarkdown className="mr-2 h-4 w-4" />
643
+ <IconMarkdown className="me-2 h-4 w-4" />
644
644
  Markdown
645
645
  </DropdownMenuItem>
646
646
  <DropdownMenuItem
647
647
  disabled={exportDocument.isPending}
648
648
  onSelect={() => void handleExport("html")}
649
649
  >
650
- <IconFileTypeHtml className="mr-2 h-4 w-4" />
650
+ <IconFileTypeHtml className="me-2 h-4 w-4" />
651
651
  HTML
652
652
  </DropdownMenuItem>
653
653
  </DropdownMenuSubContent>
@@ -666,25 +666,25 @@ export function DocumentToolbar({
666
666
  isLinked ? "text-foreground" : "text-muted-foreground",
667
667
  )}
668
668
  >
669
- <span className="mr-2 flex h-4 w-4 shrink-0 items-center justify-center">
669
+ <span className="me-2 flex h-4 w-4 shrink-0 items-center justify-center">
670
670
  {hasConflict ? (
671
671
  <span className="relative">
672
672
  <NotionIcon className="h-4 w-4" />
673
673
  <IconAlertTriangle
674
674
  size={8}
675
- className="absolute -right-1 -top-1 text-amber-500"
675
+ className="absolute -end-1 -top-1 text-amber-500"
676
676
  />
677
677
  </span>
678
678
  ) : isLinked && autoSync ? (
679
679
  <span className="relative">
680
680
  <NotionIcon className="h-4 w-4" />
681
- <span className="absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-emerald-500" />
681
+ <span className="absolute -end-0.5 -top-0.5 h-2 w-2 rounded-full bg-emerald-500" />
682
682
  </span>
683
683
  ) : (
684
684
  <NotionIcon className="h-4 w-4" />
685
685
  )}
686
686
  </span>
687
- <span className="min-w-0 flex-1 truncate text-left">
687
+ <span className="min-w-0 flex-1 truncate text-start">
688
688
  {isLinked
689
689
  ? "Notion sync"
690
690
  : isConnected
@@ -994,7 +994,7 @@ export function DocumentToolbar({
994
994
  ) : null}
995
995
  <div className="group relative">
996
996
  <NotificationsBell className="!h-8 !w-full !justify-start !rounded-sm !px-2 !py-1.5 !text-sm hover:!bg-accent hover:!text-accent-foreground focus-visible:!ring-0" />
997
- <span className="pointer-events-none absolute left-8 top-1/2 -translate-y-1/2 text-sm text-muted-foreground group-hover:text-accent-foreground">
997
+ <span className="pointer-events-none absolute start-8 top-1/2 -translate-y-1/2 text-sm text-muted-foreground group-hover:text-accent-foreground">
998
998
  Notifications
999
999
  </span>
1000
1000
  </div>
@@ -129,7 +129,7 @@ export function Layout({ children }: LayoutProps) {
129
129
  <button
130
130
  type="button"
131
131
  aria-label={t("navigation.openSidebar")}
132
- className="fixed left-3 top-3 z-30 flex h-10 w-10 items-center justify-center rounded-lg border border-border bg-background text-muted-foreground shadow-sm transition-colors hover:bg-accent hover:text-foreground md:hidden"
132
+ className="fixed start-3 top-3 z-30 flex h-10 w-10 items-center justify-center rounded-lg border border-border bg-background text-muted-foreground shadow-sm transition-colors hover:bg-accent hover:text-foreground md:hidden"
133
133
  onClick={() => setMobileSidebarOpen(true)}
134
134
  >
135
135
  <IconMenu2 size={18} />
@@ -169,7 +169,7 @@ export function Layout({ children }: LayoutProps) {
169
169
  <Header sidebarTrigger={mobileSidebarTrigger} />
170
170
  ) : null}
171
171
  <InvitationBanner
172
- className={`${showHeader ? "pl-4" : "pl-16"} sm:pl-4 [&>div]:flex-wrap [&>div]:items-start [&>div>span]:min-w-0 [&>div>span]:flex-1`}
172
+ className={`${showHeader ? "ps-4" : "ps-16"} sm:ps-4 [&>div]:flex-wrap [&>div]:items-start [&>div>span]:min-w-0 [&>div>span]:flex-1`}
173
173
  />
174
174
  {children}
175
175
  </main>
@@ -588,7 +588,7 @@ export function DocumentSidebar({
588
588
  onClick={() => navigate("/local-files")}
589
589
  >
590
590
  <IconFolderOpen size={15} className="shrink-0" />
591
- <span className="min-w-0 flex-1 truncate text-left">Local files</span>
591
+ <span className="min-w-0 flex-1 truncate text-start">Local files</span>
592
592
  </button>
593
593
  );
594
594
 
@@ -603,7 +603,7 @@ export function DocumentSidebar({
603
603
  onClick={() => navigate("/settings")}
604
604
  >
605
605
  <IconSettings size={15} className="shrink-0" />
606
- <span className="min-w-0 flex-1 truncate text-left">
606
+ <span className="min-w-0 flex-1 truncate text-start">
607
607
  {t("navigation.settings")}
608
608
  </span>
609
609
  </button>
@@ -622,7 +622,7 @@ export function DocumentSidebar({
622
622
  <button
623
623
  type="button"
624
624
  aria-expanded={!collapsed}
625
- className="flex w-full items-center gap-1 rounded-md px-3 py-1.5 text-left text-[10px] font-semibold uppercase tracking-wider text-muted-foreground hover:bg-accent/40 hover:text-foreground"
625
+ className="flex w-full items-center gap-1 rounded-md px-3 py-1.5 text-start text-[10px] font-semibold uppercase tracking-wider text-muted-foreground hover:bg-accent/40 hover:text-foreground"
626
626
  onClick={() => toggleSection(id)}
627
627
  >
628
628
  <IconChevronRight
@@ -630,6 +630,7 @@ export function DocumentSidebar({
630
630
  className={cn(
631
631
  "shrink-0 transition-transform",
632
632
  !collapsed && "rotate-90",
633
+ "rtl:-scale-x-100",
633
634
  )}
634
635
  />
635
636
  <span className="min-w-0 flex-1 truncate">{label}</span>
@@ -696,7 +697,7 @@ export function DocumentSidebar({
696
697
 
697
698
  if (collapsed) {
698
699
  return (
699
- <div className="flex flex-col h-full w-12 border-r border-border bg-muted/30 items-center py-3 gap-1">
700
+ <div className="flex flex-col h-full w-12 border-e border-border bg-muted/30 items-center py-3 gap-1">
700
701
  <Tooltip>
701
702
  <TooltipTrigger asChild>
702
703
  <button
@@ -758,7 +759,7 @@ export function DocumentSidebar({
758
759
  return (
759
760
  <div
760
761
  className={cn(
761
- "relative flex h-full min-h-0 flex-col border-r border-border bg-muted/30",
762
+ "relative flex h-full min-h-0 flex-col border-e border-border bg-muted/30",
762
763
  width === undefined && "w-full",
763
764
  )}
764
765
  style={width === undefined ? undefined : { width, flexShrink: 0 }}
@@ -829,7 +830,7 @@ export function DocumentSidebar({
829
830
  )}
830
831
 
831
832
  <ScrollArea className="min-h-0 flex-1">
832
- <div className="min-w-full w-max py-2 pr-2">
833
+ <div className="min-w-full w-max py-2 pe-2">
833
834
  {/* Search results */}
834
835
  {filteredDocuments ? (
835
836
  <>
@@ -846,7 +847,7 @@ export function DocumentSidebar({
846
847
  <button
847
848
  key={doc.id}
848
849
  className={cn(
849
- "w-full flex items-center gap-2 px-3 py-[5px] text-sm text-left rounded-md",
850
+ "w-full flex items-center gap-2 px-3 py-[5px] text-sm text-start rounded-md",
850
851
  doc.id === activeDocumentId
851
852
  ? "bg-accent text-accent-foreground"
852
853
  : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
@@ -883,7 +884,7 @@ export function DocumentSidebar({
883
884
  <button
884
885
  key={doc.id}
885
886
  className={cn(
886
- "w-full flex items-center gap-2 px-4 py-[5px] text-sm text-left rounded-md",
887
+ "w-full flex items-center gap-2 px-4 py-[5px] text-sm text-start rounded-md",
887
888
  doc.id === activeDocumentId
888
889
  ? "bg-accent text-accent-foreground"
889
890
  : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
@@ -996,7 +997,7 @@ export function DocumentSidebar({
996
997
  {onResize && (
997
998
  <div
998
999
  className={cn(
999
- "absolute top-0 right-0 w-1 h-full cursor-col-resize hover:bg-primary/20 active:bg-primary/30",
1000
+ "absolute top-0 end-0 w-1 h-full cursor-col-resize hover:bg-primary/20 active:bg-primary/30",
1000
1001
  isResizing && "bg-primary/30",
1001
1002
  )}
1002
1003
  onMouseDown={handleMouseDown}
@@ -140,7 +140,7 @@ export function DocumentTreeItem({
140
140
  {...(isLocalFileNode ? {} : listeners)}
141
141
  aria-label={node.title || "Untitled"}
142
142
  className={cn(
143
- "group relative flex min-w-56 items-center gap-1.5 rounded-md py-[5px] pr-2 text-sm cursor-pointer select-none",
143
+ "group relative flex min-w-56 items-center gap-1.5 rounded-md py-[5px] pe-2 text-sm cursor-pointer select-none",
144
144
  canEdit && !isLocalFileNode && "cursor-grab active:cursor-grabbing",
145
145
  isDragging && "bg-accent/70 text-accent-foreground shadow-sm",
146
146
  isActive
@@ -148,7 +148,7 @@ export function DocumentTreeItem({
148
148
  : "text-muted-foreground hover:bg-accent/50 hover:text-foreground",
149
149
  )}
150
150
  style={{
151
- paddingLeft: `${indent}px`,
151
+ paddingInlineStart: `${indent}px`,
152
152
  width: rowWidth === undefined ? undefined : `${rowWidth}px`,
153
153
  }}
154
154
  onClick={() => {
@@ -190,7 +190,11 @@ export function DocumentTreeItem({
190
190
  >
191
191
  <IconChevronRight
192
192
  size={14}
193
- className={cn("transition-transform", expanded && "rotate-90")}
193
+ className={cn(
194
+ "transition-transform",
195
+ expanded && "rotate-90",
196
+ "rtl:-scale-x-100",
197
+ )}
194
198
  />
195
199
  </button>
196
200
  )}
@@ -201,7 +205,7 @@ export function DocumentTreeItem({
201
205
  </span>
202
206
 
203
207
  <div
204
- className="absolute right-1 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 flex items-center gap-0.5 flex-shrink-0 bg-inherit"
208
+ className="absolute end-1 top-1/2 -translate-y-1/2 opacity-0 group-hover:opacity-100 flex items-center gap-0.5 flex-shrink-0 bg-inherit"
205
209
  onPointerDown={(e) => e.stopPropagation()}
206
210
  >
207
211
  {hasMenuActions && (
@@ -224,7 +228,7 @@ export function DocumentTreeItem({
224
228
  >
225
229
  <IconStar
226
230
  size={14}
227
- className={cn("mr-2", node.isFavorite && "fill-current")}
231
+ className={cn("me-2", node.isFavorite && "fill-current")}
228
232
  />
229
233
  {node.isFavorite
230
234
  ? "Remove from favorites"
@@ -240,7 +244,7 @@ export function DocumentTreeItem({
240
244
  setDeleteDialogOpen(true);
241
245
  }}
242
246
  >
243
- <IconTrash size={14} className="mr-2" />
247
+ <IconTrash size={14} className="me-2" />
244
248
  Delete
245
249
  </DropdownMenuItem>
246
250
  )}
@@ -269,7 +269,7 @@ export function NotionButton() {
269
269
  )}
270
270
  >
271
271
  <button
272
- className="flex items-start gap-2 w-full text-left"
272
+ className="flex items-start gap-2 w-full text-start"
273
273
  onClick={() => setCurrentStep(i)}
274
274
  >
275
275
  <span className="mt-0.5 shrink-0">
@@ -303,7 +303,7 @@ export function NotionButton() {
303
303
  </button>
304
304
 
305
305
  {active && (
306
- <div className="mt-2 ml-5 space-y-2">
306
+ <div className="mt-2 ms-5 space-y-2">
307
307
  <p className="text-xs text-muted-foreground leading-relaxed">
308
308
  {step.description}
309
309
  </p>
@@ -391,7 +391,7 @@ export function NotionButton() {
391
391
  <>
392
392
  <IconLoader2
393
393
  size={12}
394
- className="mr-1 animate-spin"
394
+ className="me-1 animate-spin"
395
395
  />
396
396
  Complete steps above first
397
397
  </>
@@ -49,7 +49,7 @@ const AlertDialogHeader = ({
49
49
  }: React.HTMLAttributes<HTMLDivElement>) => (
50
50
  <div
51
51
  className={cn(
52
- "flex flex-col space-y-2 text-center sm:text-left",
52
+ "flex flex-col space-y-2 text-center sm:text-start",
53
53
  className,
54
54
  )}
55
55
  {...props}
@@ -51,7 +51,7 @@ const DialogContent = React.forwardRef<
51
51
  >
52
52
  {children}
53
53
  {!hideClose && (
54
- <DialogPrimitive.Close className="absolute right-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
54
+ <DialogPrimitive.Close className="absolute end-4 top-4 rounded-sm opacity-70 ring-offset-background transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:pointer-events-none data-[state=open]:bg-accent data-[state=open]:text-muted-foreground">
55
55
  <IconX className="h-4 w-4" />
56
56
  <span className="sr-only">Close</span>
57
57
  </DialogPrimitive.Close>
@@ -67,7 +67,7 @@ const DialogHeader = ({
67
67
  }: React.HTMLAttributes<HTMLDivElement>) => (
68
68
  <div
69
69
  className={cn(
70
- "flex flex-col space-y-1.5 text-center sm:text-left",
70
+ "flex flex-col space-y-1.5 text-center sm:text-start",
71
71
  className,
72
72
  )}
73
73
  {...props}