@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
@@ -208,7 +208,7 @@ function AppsSubmenu({
208
208
  <PopoverPrimitive.Trigger asChild>
209
209
  <button type="button" className={`${ITEM_CLASS} cursor-pointer`}>
210
210
  <IconApps className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
211
- <span className="flex-1 text-left">Apps</span>
211
+ <span className="flex-1 text-start">Apps</span>
212
212
  <span className="text-[11px] text-muted-foreground">
213
213
  {isLoading ? (
214
214
  <IconLoader2 className="h-3 w-3 animate-spin" />
@@ -216,7 +216,7 @@ function AppsSubmenu({
216
216
  apps.length
217
217
  )}
218
218
  </span>
219
- <IconChevronRight className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
219
+ <IconChevronRight className="h-3.5 w-3.5 shrink-0 text-muted-foreground rtl:-scale-x-100" />
220
220
  </button>
221
221
  </PopoverPrimitive.Trigger>
222
222
  <PopoverPrimitive.Portal>
@@ -366,7 +366,7 @@ export function OrgSwitcher({
366
366
  className={`flex w-full items-center gap-2 rounded-md border border-border/50 px-2.5 py-1.5 text-xs font-medium text-muted-foreground hover:bg-accent/50 hover:text-foreground focus:outline-none focus-visible:ring-2 focus-visible:ring-ring cursor-pointer ${className ?? ""}`}
367
367
  >
368
368
  <ButtonIcon className="h-3.5 w-3.5 shrink-0" />
369
- <span className="truncate flex-1 text-left">{buttonLabel}</span>
369
+ <span className="truncate flex-1 text-start">{buttonLabel}</span>
370
370
  <IconSelector className="h-3 w-3 shrink-0 opacity-50" />
371
371
  </button>
372
372
  </PopoverPrimitive.Trigger>
@@ -390,7 +390,7 @@ export function OrgSwitcher({
390
390
  aria-disabled="true"
391
391
  >
392
392
  <IconUser className="h-3.5 w-3.5 shrink-0" />
393
- <span className="truncate flex-1 text-left">
393
+ <span className="truncate flex-1 text-start">
394
394
  Personal ({personalLabel})
395
395
  </span>
396
396
  </div>
@@ -418,7 +418,9 @@ export function OrgSwitcher({
418
418
  className={`${ITEM_CLASS} cursor-pointer`}
419
419
  >
420
420
  <IconBuilding className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
421
- <span className="truncate flex-1 text-left">{o.orgName}</span>
421
+ <span className="truncate flex-1 text-start">
422
+ {o.orgName}
423
+ </span>
422
424
  {o.orgId === org.orgId && (
423
425
  <IconCheck className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
424
426
  )}
@@ -535,7 +537,7 @@ export function OrgSwitcher({
535
537
  className={`${ITEM_CLASS} cursor-pointer`}
536
538
  >
537
539
  <IconSettings className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
538
- <span className="flex-1 text-left">
540
+ <span className="flex-1 text-start">
539
541
  Organization settings
540
542
  </span>
541
543
  </button>
@@ -552,7 +554,7 @@ export function OrgSwitcher({
552
554
  className={`${ITEM_CLASS} cursor-pointer`}
553
555
  >
554
556
  <IconPlus className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
555
- <span className="flex-1 text-left">Create organization</span>
557
+ <span className="flex-1 text-start">Create organization</span>
556
558
  </button>
557
559
  {canInvite && (
558
560
  <button
@@ -564,7 +566,7 @@ export function OrgSwitcher({
564
566
  className={`${ITEM_CLASS} cursor-pointer`}
565
567
  >
566
568
  <IconUserPlus className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
567
- <span className="flex-1 text-left">Invite member</span>
569
+ <span className="flex-1 text-start">Invite member</span>
568
570
  </button>
569
571
  )}
570
572
 
@@ -578,12 +580,12 @@ export function OrgSwitcher({
578
580
  {signingOut ? (
579
581
  <IconLoader2 className="h-3.5 w-3.5 shrink-0 animate-spin text-muted-foreground" />
580
582
  ) : (
581
- <IconLogout className="h-3.5 w-3.5 shrink-0 text-muted-foreground" />
583
+ <IconLogout className="h-3.5 w-3.5 shrink-0 text-muted-foreground rtl:-scale-x-100" />
582
584
  )}
583
- <span className="flex-1 text-left">
585
+ <span className="flex-1 text-start">
584
586
  Sign out
585
587
  {org.email ? (
586
- <span className="ml-1 text-muted-foreground">
588
+ <span className="ms-1 text-muted-foreground">
587
589
  ({org.email})
588
590
  </span>
589
591
  ) : null}
@@ -866,7 +866,7 @@ function BulkInviteForm({
866
866
  <ul className="space-y-0.5 text-[11px] text-red-500">
867
867
  {resultBanner.failed.map((f) => (
868
868
  <li key={f.email}>
869
- <IconAlertTriangle className="inline h-3 w-3 -mt-0.5 mr-1" />
869
+ <IconAlertTriangle className="inline h-3 w-3 -mt-0.5 me-1" />
870
870
  {f.email}: {f.error}
871
871
  </li>
872
872
  ))}
@@ -1176,7 +1176,7 @@ function A2ASecretSection({ secret }: { secret: string | null | undefined }) {
1176
1176
  {syncResult.failed > 0 ? ` (${syncResult.failed} failed)` : ""}.
1177
1177
  </p>
1178
1178
  {syncResult.failed > 0 && (
1179
- <ul className="text-[11px] text-red-500 list-disc pl-5 space-y-0.5">
1179
+ <ul className="text-[11px] text-red-500 list-disc ps-5 space-y-0.5">
1180
1180
  {syncResult.results
1181
1181
  .filter((r) => !r.ok)
1182
1182
  .map((r) => (
@@ -62,7 +62,7 @@ function AgentEditPopover({
62
62
  return (
63
63
  <div
64
64
  ref={popoverRef}
65
- className="absolute right-0 top-full z-50 mt-1 w-64 rounded-lg border border-border bg-popover p-2.5 shadow-lg"
65
+ className="absolute end-0 top-full z-50 mt-1 w-64 rounded-lg border border-border bg-popover p-2.5 shadow-lg"
66
66
  >
67
67
  <div className="flex flex-col gap-1.5">
68
68
  <input
@@ -163,7 +163,7 @@ function AgentAddPopover({
163
163
  return (
164
164
  <div
165
165
  ref={popoverRef}
166
- className="absolute right-0 top-full z-50 mt-1 w-64 rounded-lg border border-border bg-popover p-2.5 shadow-lg"
166
+ className="absolute end-0 top-full z-50 mt-1 w-64 rounded-lg border border-border bg-popover p-2.5 shadow-lg"
167
167
  >
168
168
  <div className="flex flex-col gap-1.5">
169
169
  <input
@@ -393,7 +393,7 @@ export function AgentsSection() {
393
393
  <span className="text-[11px] font-medium text-foreground truncate shrink-0">
394
394
  {agent.name}
395
395
  </span>
396
- <span className="flex-1 text-[10px] text-muted-foreground/60 truncate text-right">
396
+ <span className="flex-1 text-[10px] text-muted-foreground/60 truncate text-end">
397
397
  {agent.url}
398
398
  </span>
399
399
  <Tooltip>
@@ -354,12 +354,12 @@ export function AutomationsSection() {
354
354
  </span>
355
355
  </div>
356
356
  {item.scheduleDescription && (
357
- <p className="text-[10px] text-muted-foreground mt-0.5 ml-[17px]">
357
+ <p className="text-[10px] text-muted-foreground mt-0.5 ms-[17px]">
358
358
  {item.scheduleDescription}
359
359
  </p>
360
360
  )}
361
361
  {item.schedule && !item.scheduleDescription && (
362
- <p className="text-[10px] text-muted-foreground mt-0.5 ml-[17px] font-mono">
362
+ <p className="text-[10px] text-muted-foreground mt-0.5 ms-[17px] font-mono">
363
363
  {item.schedule}
364
364
  </p>
365
365
  )}
@@ -430,7 +430,7 @@ export function AutomationsSection() {
430
430
  </div>
431
431
  </div>
432
432
  {item.lastRun && (
433
- <p className="text-[10px] text-muted-foreground mt-1 ml-[17px]">
433
+ <p className="text-[10px] text-muted-foreground mt-1 ms-[17px]">
434
434
  Last run:{" "}
435
435
  {new Date(item.lastRun).toLocaleString(undefined, {
436
436
  month: "short",
@@ -370,7 +370,7 @@ function SecretCard({ secret, onChanged, focusInput }: SecretCardProps) {
370
370
  href={secret.docsUrl}
371
371
  target="_blank"
372
372
  rel="noopener noreferrer"
373
- className="inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[10px] no-underline text-muted-foreground hover:text-foreground ml-auto"
373
+ className="inline-flex items-center gap-1 rounded border border-border px-2 py-1 text-[10px] no-underline text-muted-foreground hover:text-foreground ms-auto"
374
374
  >
375
375
  Get key
376
376
  <IconExternalLink size={10} />
@@ -626,7 +626,7 @@ function AdHocKeysSection() {
626
626
  <option value="user">Personal</option>
627
627
  <option value="workspace">Workspace</option>
628
628
  </select>
629
- <div className="ml-auto flex items-center gap-1.5">
629
+ <div className="ms-auto flex items-center gap-1.5">
630
630
  <button
631
631
  type="button"
632
632
  onClick={resetForm}
@@ -116,7 +116,7 @@ function SettingsSelect({
116
116
  </div>
117
117
  <SelectPrimitive.Root value={value} onValueChange={onValueChange}>
118
118
  <SelectPrimitive.Trigger
119
- className="flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-left text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground"
119
+ className="flex h-9 w-full items-center justify-between rounded-md border border-border bg-background px-3 text-start text-[12px] text-foreground outline-none transition-colors hover:bg-accent/40 data-[placeholder]:text-muted-foreground"
120
120
  aria-label={label}
121
121
  style={CONTROL_STYLE}
122
122
  >
@@ -141,7 +141,7 @@ function SettingsSelect({
141
141
  className="relative flex w-full cursor-pointer select-none items-start gap-2 rounded-md px-8 py-2.5 text-[12px] outline-none data-[highlighted]:bg-accent/60 data-[state=checked]:bg-accent/40"
142
142
  style={CONTROL_STYLE}
143
143
  >
144
- <span className="absolute left-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground">
144
+ <span className="absolute start-2 top-2.5 flex h-4 w-4 items-center justify-center text-muted-foreground">
145
145
  <SelectPrimitive.ItemIndicator>
146
146
  <IconCheck size={14} />
147
147
  </SelectPrimitive.ItemIndicator>
@@ -406,7 +406,7 @@ function UseBuilderCard({
406
406
  type="button"
407
407
  onClick={() => builderFlow.start({ trackingSource, trackingFlow })}
408
408
  disabled={builderFlow.connecting}
409
- className={`block w-full rounded-md border border-border px-3 py-3 text-left no-underline bg-gradient-to-br from-teal-500/10 via-transparent to-transparent hover:border-foreground/30 transition-colors disabled:cursor-wait disabled:opacity-70`}
409
+ className={`block w-full rounded-md border border-border px-3 py-3 text-start no-underline bg-gradient-to-br from-teal-500/10 via-transparent to-transparent hover:border-foreground/30 transition-colors disabled:cursor-wait disabled:opacity-70`}
410
410
  >
411
411
  <div className="flex items-start gap-2.5">
412
412
  <div className="flex h-7 w-7 shrink-0 items-center justify-center rounded-md bg-foreground text-background">
@@ -980,7 +980,7 @@ function LLMSectionInner({
980
980
  <TooltipTrigger asChild>
981
981
  <button
982
982
  onClick={handleDisconnect}
983
- className="ml-auto rounded border border-border px-2.5 py-1 text-[10px] font-medium text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/40"
983
+ className="ms-auto rounded border border-border px-2.5 py-1 text-[10px] font-medium text-muted-foreground hover:bg-destructive/10 hover:text-destructive hover:border-destructive/40"
984
984
  >
985
985
  Disconnect
986
986
  </button>
@@ -1955,9 +1955,7 @@ function CapabilityStatusRow({
1955
1955
  />
1956
1956
  {label}
1957
1957
  </span>
1958
- <span className="min-w-0 truncate text-right text-foreground">
1959
- {value}
1960
- </span>
1958
+ <span className="min-w-0 truncate text-end text-foreground">{value}</span>
1961
1959
  </div>
1962
1960
  );
1963
1961
  }
@@ -35,7 +35,7 @@ export function SettingsSection({
35
35
  <button
36
36
  type="button"
37
37
  onClick={onToggle}
38
- className="flex w-full cursor-pointer items-center justify-between px-3 py-2.5 text-left rounded-lg hover:bg-accent/40 transition-colors"
38
+ className="flex w-full cursor-pointer items-center justify-between px-3 py-2.5 text-start rounded-lg hover:bg-accent/40 transition-colors"
39
39
  >
40
40
  <div className="flex items-center gap-2 min-w-0">
41
41
  <span className="shrink-0 text-muted-foreground">{icon}</span>
@@ -139,7 +139,7 @@ function BucketBars({
139
139
  </span>
140
140
  <span className="shrink-0 text-muted-foreground tabular-nums">
141
141
  {formatSpend(b.cents, billing)}
142
- <span className="ml-1 opacity-60">
142
+ <span className="ms-1 opacity-60">
143
143
  · {formatTokens(b.inputTokens + b.outputTokens)} tok
144
144
  </span>
145
145
  </span>
@@ -268,7 +268,7 @@ export function UsageSection() {
268
268
  {formatSpend(data.totalCents, billing)}
269
269
  </div>
270
270
  </div>
271
- <div className="text-right">
271
+ <div className="text-end">
272
272
  <div className="text-[10px] text-muted-foreground">
273
273
  {data.totalCalls} calls
274
274
  </div>
@@ -350,7 +350,7 @@ export function UsageSection() {
350
350
  {new Date(r.createdAt).toLocaleString()} · {r.model}
351
351
  </div>
352
352
  </div>
353
- <div className="shrink-0 text-right tabular-nums text-muted-foreground">
353
+ <div className="shrink-0 text-end tabular-nums text-muted-foreground">
354
354
  {formatSpend(r.cents, billing)}
355
355
  </div>
356
356
  </div>
@@ -506,7 +506,7 @@ export function VoiceTranscriptionSection() {
506
506
  {showAdvanced ? (
507
507
  <IconChevronDown size={12} />
508
508
  ) : (
509
- <IconChevronRight size={12} />
509
+ <IconChevronRight size={12} className="rtl:-scale-x-100" />
510
510
  )}
511
511
  Add API keys
512
512
  </span>
@@ -763,7 +763,7 @@ function ProviderOption({
763
763
  aria-pressed={selected}
764
764
  aria-disabled={disabled || undefined}
765
765
  // Theme tokens; streaming agent owns layout.
766
- className={`w-full text-left rounded-md border px-2.5 py-2 flex items-start gap-2 ${
766
+ className={`w-full text-start rounded-md border px-2.5 py-2 flex items-start gap-2 ${
767
767
  selected
768
768
  ? "border-primary bg-primary/10"
769
769
  : "border-border bg-accent/30 hover:bg-accent/50"
@@ -944,7 +944,7 @@ function SystemAudioStatus() {
944
944
  <button
945
945
  type="button"
946
946
  onClick={openPrivacy}
947
- className="ml-1 inline-flex items-center gap-1 rounded border border-border px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-accent/40 hover:text-foreground"
947
+ className="ms-1 inline-flex items-center gap-1 rounded border border-border px-1.5 py-0.5 text-[10px] text-muted-foreground hover:bg-accent/40 hover:text-foreground"
948
948
  >
949
949
  <IconLockOpen size={10} />
950
950
  Open System Settings
@@ -1028,7 +1028,7 @@ function AdvancedAccessPopover({
1028
1028
  disabled={!canManage || control.pending}
1029
1029
  onClick={onToggle}
1030
1030
  className={cn(
1031
- "flex w-full items-start gap-3 rounded-md border border-border/70 bg-background px-3 py-2.5 text-left transition-colors hover:bg-accent/45 disabled:cursor-not-allowed disabled:opacity-60",
1031
+ "flex w-full items-start gap-3 rounded-md border border-border/70 bg-background px-3 py-2.5 text-start transition-colors hover:bg-accent/45 disabled:cursor-not-allowed disabled:opacity-60",
1032
1032
  control.checked && "border-border bg-accent/35 text-foreground",
1033
1033
  )}
1034
1034
  >
@@ -1181,7 +1181,7 @@ function MemberAutocomplete({
1181
1181
  aria-hidden
1182
1182
  size={15}
1183
1183
  strokeWidth={1.8}
1184
- className="pointer-events-none absolute left-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"
1184
+ className="pointer-events-none absolute start-2.5 top-1/2 -translate-y-1/2 text-muted-foreground"
1185
1185
  />
1186
1186
  <input
1187
1187
  ref={inputRef}
@@ -1209,14 +1209,14 @@ function MemberAutocomplete({
1209
1209
  }}
1210
1210
  onKeyDown={handleKeyDown}
1211
1211
  autoComplete="off"
1212
- className="h-9 w-full min-w-0 rounded-md border border-input bg-background pl-8 pr-8 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-background"
1212
+ className="h-9 w-full min-w-0 rounded-md border border-input bg-background ps-8 pe-8 text-sm text-foreground placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 focus:ring-offset-background"
1213
1213
  />
1214
1214
  {search.isLoading ? (
1215
1215
  <IconLoader2
1216
1216
  aria-hidden
1217
1217
  size={15}
1218
1218
  strokeWidth={1.8}
1219
- className="pointer-events-none absolute right-2.5 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"
1219
+ className="pointer-events-none absolute end-2.5 top-1/2 -translate-y-1/2 animate-spin text-muted-foreground"
1220
1220
  />
1221
1221
  ) : null}
1222
1222
  </div>
@@ -1377,7 +1377,7 @@ function CopyLinkField({
1377
1377
  const selectContentClass =
1378
1378
  "z-[2100] min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0";
1379
1379
  const selectItemClass =
1380
- "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-sm py-2 pl-8 pr-3 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1380
+ "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-sm py-2 ps-8 pe-3 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
1381
1381
 
1382
1382
  interface ShadSelectItemProps {
1383
1383
  value: string;
@@ -1394,7 +1394,7 @@ function SelectItems({ items }: { items: ShadSelectItemProps[] }) {
1394
1394
  value={it.value}
1395
1395
  className={selectItemClass}
1396
1396
  >
1397
- <span className="absolute left-2 top-2 flex h-4 w-4 items-center justify-center">
1397
+ <span className="absolute start-2 top-2 flex h-4 w-4 items-center justify-center">
1398
1398
  <Select.ItemIndicator>
1399
1399
  <IconCheck size={14} />
1400
1400
  </Select.ItemIndicator>
@@ -1485,7 +1485,7 @@ function VisibilitySelect(props: {
1485
1485
  <Select.Trigger
1486
1486
  className={cn(
1487
1487
  BUTTON_BASE,
1488
- "h-7 px-1 -ml-1 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground",
1488
+ "h-7 px-1 -ms-1 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground",
1489
1489
  )}
1490
1490
  aria-label="General access"
1491
1491
  >
@@ -649,7 +649,7 @@ function CopyField({
649
649
  const selectContentClass =
650
650
  "z-[2100] min-w-[12rem] overflow-hidden rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md";
651
651
  const selectItemClass =
652
- "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-sm py-2 pl-8 pr-3 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
652
+ "relative flex w-full cursor-pointer select-none items-start gap-2 rounded-sm py-2 ps-8 pe-3 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50";
653
653
 
654
654
  function SelectItems({
655
655
  items,
@@ -664,7 +664,7 @@ function SelectItems({
664
664
  value={it.value}
665
665
  className={selectItemClass}
666
666
  >
667
- <span className="absolute left-2 top-2 flex h-4 w-4 items-center justify-center">
667
+ <span className="absolute start-2 top-2 flex h-4 w-4 items-center justify-center">
668
668
  <Select.ItemIndicator>
669
669
  <IconCheck size={14} />
670
670
  </Select.ItemIndicator>
@@ -734,7 +734,7 @@ function VisibilitySelect(props: {
734
734
  aria-label="General access"
735
735
  className={cn(
736
736
  BUTTON_BASE,
737
- "h-7 px-1 -ml-1 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground",
737
+ "h-7 px-1 -ms-1 bg-transparent text-foreground hover:bg-accent hover:text-accent-foreground",
738
738
  )}
739
739
  >
740
740
  <Select.Value>{current.label}</Select.Value>
@@ -1617,20 +1617,37 @@ let cachedHandler;
1617
1617
  // PROCESS_RUN_PATH before delegating. Method, ALL headers (the HMAC
1618
1618
  // Authorization: Bearer MUST survive — the plugin verifies it) and the body are
1619
1619
  // preserved by cloning the incoming Request with only its URL pathname set.
1620
- export default async function handler(request) {
1621
- cachedHandler ??= (await import("./main.mjs")).default;
1622
- const url = new URL(request.url);
1623
- url.pathname = PROCESS_RUN_PATH;
1624
- // Read the body once and pass it through. GET/HEAD have no body.
1625
- const method = request.method || "POST";
1626
- const hasBody = method !== "GET" && method !== "HEAD";
1627
- const body = hasBody ? await request.text() : undefined;
1628
- const rewritten = new Request(url.toString(), {
1629
- method,
1630
- headers: request.headers,
1631
- body,
1632
- });
1633
- return cachedHandler(rewritten);
1620
+ export default async function handler(request, context) {
1621
+ try {
1622
+ cachedHandler ??= (await import("./main.mjs")).default;
1623
+ const url = new URL(request.url);
1624
+ url.pathname = PROCESS_RUN_PATH;
1625
+ // Read the body once and pass it through. GET/HEAD have no body.
1626
+ const method = request.method || "POST";
1627
+ const hasBody = method !== "GET" && method !== "HEAD";
1628
+ const body = hasBody ? await request.text() : undefined;
1629
+ const rewritten = new Request(url.toString(), {
1630
+ method,
1631
+ headers: request.headers,
1632
+ body,
1633
+ });
1634
+ // Netlify Functions v2 invokes the handler as (request, context); the Nitro
1635
+ // netlify handler accepts (request[, context]). Pass context through so a
1636
+ // handler that uses it (e.g. waitUntil) does not trip over an undefined arg
1637
+ // before it ever routes the request.
1638
+ return await cachedHandler(rewritten, context);
1639
+ } catch (err) {
1640
+ // Netlify already returned 202 for this background invocation and DISCARDS
1641
+ // this return, so a throw here is otherwise INVISIBLE — it would only surface
1642
+ // downstream as the reaper's "worker never claimed the run". Log it loudly
1643
+ // for the function log; the FOREGROUND circuit-breaker (production-agent.ts)
1644
+ // is what recovers the run by executing it inline when no worker claims.
1645
+ console.error(
1646
+ "[agent-background] wrapper failed before reaching the route:",
1647
+ (err && err.stack) || err,
1648
+ );
1649
+ throw err;
1650
+ }
1634
1651
  }
1635
1652
 
1636
1653
  export const config = {
@@ -31,7 +31,7 @@
31
31
 
32
32
  .agent-conversation__scroll-bottom {
33
33
  position: absolute;
34
- right: 18px;
34
+ inset-inline-end: 18px;
35
35
  bottom: 92px;
36
36
  z-index: 2;
37
37
  display: flex;
@@ -115,12 +115,12 @@
115
115
 
116
116
  .agent-conversation-markdown ul,
117
117
  .agent-conversation-markdown ol {
118
- padding-left: 20px;
118
+ padding-inline-start: 20px;
119
119
  }
120
120
 
121
121
  .agent-conversation-markdown li {
122
122
  margin: 3px 0;
123
- padding-left: 2px;
123
+ padding-inline-start: 2px;
124
124
  }
125
125
 
126
126
  .agent-conversation-markdown li > p {
@@ -248,7 +248,7 @@
248
248
  }
249
249
 
250
250
  .agent-conversation-tool__summary {
251
- margin-left: auto;
251
+ margin-inline-start: auto;
252
252
  font-size: 11px;
253
253
  }
254
254
 
@@ -410,7 +410,7 @@
410
410
  display: inline-flex;
411
411
  align-items: center;
412
412
  gap: 5px;
413
- margin-left: auto;
413
+ margin-inline-start: auto;
414
414
  color: hsl(var(--muted-foreground));
415
415
  text-decoration: none;
416
416
  }
@@ -496,7 +496,7 @@
496
496
  .agent-markdown ul,
497
497
  .agent-markdown ol {
498
498
  margin: 0.5em 0;
499
- padding-left: 1.5em;
499
+ padding-inline-start: 1.5em;
500
500
  }
501
501
 
502
502
  .agent-markdown li {
@@ -576,8 +576,8 @@
576
576
  }
577
577
 
578
578
  .agent-markdown blockquote {
579
- border-left: 2px solid hsl(var(--border, 0 0% 20%));
580
- padding-left: 0.75em;
579
+ border-inline-start: 2px solid hsl(var(--border, 0 0% 20%));
580
+ padding-inline-start: 0.75em;
581
581
  margin: 0.5em 0;
582
582
  opacity: 0.8;
583
583
  }
@@ -592,7 +592,7 @@
592
592
  .agent-markdown td {
593
593
  border: 1px solid hsl(var(--border, 0 0% 20%));
594
594
  padding: 0.35em 0.65em;
595
- text-align: left;
595
+ text-align: start;
596
596
  }
597
597
 
598
598
  .agent-markdown th {
@@ -608,7 +608,7 @@
608
608
  display: inline-block;
609
609
  width: 0.42em;
610
610
  height: 1em;
611
- margin-left: 0.12em;
611
+ margin-inline-start: 0.12em;
612
612
  border-radius: 999px;
613
613
  background: currentColor;
614
614
  opacity: 0.35;
@@ -642,7 +642,7 @@
642
642
  .plan-code-chrome-float {
643
643
  position: absolute;
644
644
  top: 0.5rem;
645
- right: 0.5rem;
645
+ inset-inline-end: 0.5rem;
646
646
  z-index: 2;
647
647
  }
648
648
 
@@ -917,7 +917,7 @@
917
917
  background: transparent;
918
918
  color: hsl(var(--foreground));
919
919
  font-size: 0.8rem;
920
- text-align: left;
920
+ text-align: start;
921
921
  cursor: pointer;
922
922
  }
923
923
 
@@ -317,7 +317,7 @@
317
317
  .an-rich-md-prose h3.is-empty::before,
318
318
  .an-rich-md-prose h4.is-empty::before {
319
319
  content: attr(data-placeholder);
320
- float: left;
320
+ float: inline-start;
321
321
  color: hsl(var(--muted-foreground));
322
322
  opacity: 0.55;
323
323
  pointer-events: none;
@@ -432,7 +432,7 @@
432
432
  align-items: center;
433
433
  gap: 8px;
434
434
  padding: 6px 10px;
435
- text-align: left;
435
+ text-align: start;
436
436
  background: none;
437
437
  border: none;
438
438
  cursor: pointer;
@@ -19,7 +19,7 @@ export function MobileNav() {
19
19
  <div className="flex h-12 shrink-0 items-center border-b border-border bg-sidebar px-4 md:hidden">
20
20
  <button
21
21
  onClick={() => setOpen(true)}
22
- className="mr-3 p-2.5 -ml-1 rounded-md hover:bg-sidebar-accent/50"
22
+ className="me-3 p-2.5 -ms-1 rounded-md hover:bg-sidebar-accent/50"
23
23
  aria-label={t("navigation.openNavigation")}
24
24
  >
25
25
  <IconMenu className="h-5 w-5 text-foreground" />
@@ -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}
@@ -4,7 +4,7 @@ import { cva, type VariantProps } from "class-variance-authority";
4
4
  import { cn } from "@/lib/utils";
5
5
 
6
6
  const alertVariants = cva(
7
- "relative w-full rounded-lg border p-4 [&>svg~*]:pl-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:left-4 [&>svg]:top-4 [&>svg]:text-foreground",
7
+ "relative w-full rounded-lg border p-4 [&>svg~*]:ps-7 [&>svg+div]:translate-y-[-3px] [&>svg]:absolute [&>svg]:start-4 [&>svg]:top-4 [&>svg]:text-foreground",
8
8
  {
9
9
  variants: {
10
10
  variant: {
@@ -83,7 +83,7 @@ const BreadcrumbSeparator = ({
83
83
  className={cn("[&>svg]:size-3.5", className)}
84
84
  {...props}
85
85
  >
86
- {children ?? <IconChevronRight />}
86
+ {children ?? <IconChevronRight className="rtl:-scale-x-100" />}
87
87
  </li>
88
88
  );
89
89
  BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
@@ -25,11 +25,11 @@ function Calendar({
25
25
  nav: "flex items-center gap-1",
26
26
  button_previous: cn(
27
27
  buttonVariants({ variant: "outline" }),
28
- "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute left-1 top-1 z-10",
28
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute start-1 top-1 z-10",
29
29
  ),
30
30
  button_next: cn(
31
31
  buttonVariants({ variant: "outline" }),
32
- "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute right-1 top-1 z-10",
32
+ "h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100 absolute end-1 top-1 z-10",
33
33
  ),
34
34
  month_grid: "w-full border-collapse",
35
35
  weekdays: "flex",
@@ -47,8 +47,8 @@ function Calendar({
47
47
  outside: "text-muted-foreground opacity-50",
48
48
  disabled: "text-muted-foreground opacity-50",
49
49
  hidden: "invisible",
50
- range_start: "rounded-l-md",
51
- range_end: "rounded-r-md",
50
+ range_start: "rounded-s-md",
51
+ range_end: "rounded-e-md",
52
52
  range_middle:
53
53
  "aria-selected:bg-accent aria-selected:text-accent-foreground",
54
54
  ...classNames,
@@ -56,9 +56,9 @@ function Calendar({
56
56
  components={{
57
57
  Chevron: (props) => {
58
58
  if (props.orientation === "left") {
59
- return <IconChevronLeft className="h-4 w-4" />;
59
+ return <IconChevronLeft className="h-4 w-4 rtl:-scale-x-100" />;
60
60
  }
61
- return <IconChevronRight className="h-4 w-4" />;
61
+ return <IconChevronRight className="h-4 w-4 rtl:-scale-x-100" />;
62
62
  },
63
63
  }}
64
64
  {...props}