@agent-native/core 0.134.0 → 0.135.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (493) hide show
  1. package/corpus/README.md +3 -3
  2. package/corpus/core/CHANGELOG.md +113 -0
  3. package/corpus/core/docs/content/template-content-developers.mdx +1 -1
  4. package/corpus/core/package.json +3 -2
  5. package/corpus/core/src/automations/service.ts +41 -4
  6. package/corpus/core/src/cli/mcp-config-writers.ts +27 -21
  7. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +187 -85
  8. package/corpus/core/src/client/agent-page/AutomationDetailsDialog.tsx +208 -0
  9. package/corpus/core/src/client/agent-page/AutomationScheduleDialog.tsx +180 -0
  10. package/corpus/core/src/client/agent-page/TimezoneSelect.tsx +241 -0
  11. package/corpus/core/src/client/agent-page/use-jobs.ts +50 -10
  12. package/corpus/core/src/client/org/OrgSwitcher.tsx +26 -0
  13. package/corpus/core/src/client/settings/AccountSettingsCard.tsx +35 -31
  14. package/corpus/core/src/client/settings/SchedulingTimezoneField.tsx +71 -0
  15. package/corpus/core/src/client/settings/SettingsRow.tsx +113 -0
  16. package/corpus/core/src/client/settings/agent-settings-search.ts +2 -1
  17. package/corpus/core/src/client/settings/index.ts +6 -0
  18. package/corpus/core/src/integrations/identity.ts +2 -12
  19. package/corpus/core/src/jobs/actions/list-automation-runs.ts +33 -0
  20. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +27 -6
  21. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +41 -9
  22. package/corpus/core/src/jobs/background-automation-runner.ts +88 -0
  23. package/corpus/core/src/jobs/cron.ts +52 -6
  24. package/corpus/core/src/jobs/frontmatter.ts +20 -0
  25. package/corpus/core/src/jobs/run-history.ts +242 -0
  26. package/corpus/core/src/jobs/scheduler.ts +73 -18
  27. package/corpus/core/src/jobs/tools.ts +54 -6
  28. package/corpus/core/src/localization/actions/get-localization-preference.ts +2 -2
  29. package/corpus/core/src/localization/actions/set-localization-preference.ts +49 -11
  30. package/corpus/core/src/localization/default-messages.ts +27 -0
  31. package/corpus/core/src/localization/shared.ts +39 -6
  32. package/corpus/core/src/localization/user-timezone.ts +36 -0
  33. package/corpus/core/src/org/app-roles-handlers.ts +1 -9
  34. package/corpus/core/src/org/index.ts +2 -0
  35. package/corpus/core/src/org/membership.ts +18 -0
  36. package/corpus/core/src/review/actions/create-review-comment.ts +4 -1
  37. package/corpus/core/src/review/actions/reply-review-comment.ts +4 -1
  38. package/corpus/core/src/review/index.ts +5 -0
  39. package/corpus/core/src/review/notifications.ts +163 -0
  40. package/corpus/core/src/review/types.ts +7 -0
  41. package/corpus/core/src/server/action-discovery.ts +4 -0
  42. package/corpus/core/src/server/activity-notifications.ts +174 -0
  43. package/corpus/core/src/server/app-name.ts +31 -0
  44. package/corpus/core/src/server/better-auth-instance.ts +4 -4
  45. package/corpus/core/src/server/email-templates.ts +70 -14
  46. package/corpus/core/src/server/email.ts +66 -3
  47. package/corpus/core/src/server/index.ts +10 -0
  48. package/corpus/core/src/sharing/index.ts +5 -0
  49. package/corpus/core/src/sharing/recipients.ts +67 -0
  50. package/corpus/core/src/triggers/actions/list-automations.ts +27 -8
  51. package/corpus/core/src/triggers/actions/manage-automation.ts +17 -6
  52. package/corpus/core/src/triggers/actions.ts +16 -4
  53. package/corpus/core/src/triggers/dispatcher.ts +44 -30
  54. package/corpus/core/src/triggers/routes.ts +19 -6
  55. package/corpus/core/src/vitest-config.ts +68 -0
  56. package/corpus/core/vitest.config.ts +5 -0
  57. package/corpus/templates/analytics/app/pages/Settings.tsx +37 -53
  58. package/corpus/templates/analytics/changelog/2026-08-01-new-error-alerts-now-reach-you-by-email-and-a-scheduled-dash.md +6 -0
  59. package/corpus/templates/analytics/server/jobs/dashboard-report.ts +43 -0
  60. package/corpus/templates/analytics/server/lib/error-capture.ts +5 -1
  61. package/corpus/templates/analytics/vitest.config.ts +16 -12
  62. package/corpus/templates/assets/actions/refresh-generation-run.ts +3 -0
  63. package/corpus/templates/assets/app/components/ui/switch.tsx +1 -0
  64. package/corpus/templates/assets/app/hooks/use-assets-prefs.ts +55 -0
  65. package/corpus/templates/assets/app/i18n-data.ts +30 -0
  66. package/corpus/templates/assets/app/routes/settings.tsx +58 -55
  67. package/corpus/templates/assets/changelog/2026-08-01-get-an-email-when-a-generation-you-started-finishes-or-fails.md +6 -0
  68. package/corpus/templates/assets/server/lib/generation-run-notifications.ts +89 -0
  69. package/corpus/templates/assets/server/lib/video-runs.ts +8 -1
  70. package/corpus/templates/assets/server/routes/_agent-native/assets/user-prefs.get.ts +17 -0
  71. package/corpus/templates/assets/server/routes/_agent-native/assets/user-prefs.put.ts +36 -0
  72. package/corpus/templates/assets/shared/assets-user-prefs.ts +10 -0
  73. package/corpus/templates/assets/vitest.config.ts +16 -12
  74. package/corpus/templates/brain/app/routes/settings.tsx +15 -15
  75. package/corpus/templates/brain/vitest.config.ts +16 -12
  76. package/corpus/templates/calendar/app/pages/Settings.tsx +32 -40
  77. package/corpus/templates/calendar/changelog/2026-08-01-language-and-appearance-now-sit-together-in-one-preferences-.md +6 -0
  78. package/corpus/templates/calendar/vitest.config.ts +16 -12
  79. package/corpus/templates/chat/app/routes/settings.tsx +14 -22
  80. package/corpus/templates/chat/vitest.config.ts +9 -0
  81. package/corpus/templates/clips/.agents/skills/video-editing/SKILL.md +31 -0
  82. package/corpus/templates/clips/AGENTS.md +1 -0
  83. package/corpus/templates/clips/actions/add-comment.ts +12 -1
  84. package/corpus/templates/clips/actions/create-meeting.ts +2 -2
  85. package/corpus/templates/clips/actions/create-recording.ts +2 -2
  86. package/corpus/templates/clips/actions/finalize-recording.ts +42 -6
  87. package/corpus/templates/clips/actions/generate-filmstrip.ts +154 -0
  88. package/corpus/templates/clips/actions/get-recording-player-data.ts +6 -0
  89. package/corpus/templates/clips/actions/import-loom-recording.ts +2 -2
  90. package/corpus/templates/clips/actions/lib/ensure-recording-filmstrip.ts +258 -0
  91. package/corpus/templates/clips/actions/lib/ensure-seekable-video.ts +11 -3
  92. package/corpus/templates/clips/actions/react-to-comment.ts +13 -0
  93. package/corpus/templates/clips/actions/react-to-recording.ts +10 -1
  94. package/corpus/templates/clips/actions/reply-to-comment.ts +12 -1
  95. package/corpus/templates/clips/actions/stitch-recordings.ts +2 -2
  96. package/corpus/templates/clips/app/components/editor/editor-layout.tsx +152 -23
  97. package/corpus/templates/clips/app/components/editor/waveform.tsx +237 -75
  98. package/corpus/templates/clips/app/components/recorder/recorder-engine.ts +23 -1
  99. package/corpus/templates/clips/app/components/settings/ai-setup-section.tsx +441 -0
  100. package/corpus/templates/clips/app/components/settings/slack-section.tsx +329 -0
  101. package/corpus/templates/clips/app/components/settings/types.ts +14 -0
  102. package/corpus/templates/clips/app/components/settings/video-storage-section.tsx +443 -0
  103. package/corpus/templates/clips/app/hooks/use-secret-status.ts +69 -0
  104. package/corpus/templates/clips/app/i18n/en-US.ts +9 -1
  105. package/corpus/templates/clips/app/lib/video-filmstrip.ts +262 -0
  106. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +165 -1351
  107. package/corpus/templates/clips/changelog/2026-07-27-saved-clips-now-resume-from-the-last-uploaded-byte-after-an-.md +6 -0
  108. package/corpus/templates/clips/changelog/2026-07-29-meeting-notes-no-longer-transcribe-the-other-side-twice-when.md +6 -0
  109. package/corpus/templates/clips/changelog/2026-07-31-editor-timeline-now-shows-video-frames-behind-the-waveform-g.md +6 -0
  110. package/corpus/templates/clips/changelog/2026-07-31-email-notifications-now-go-out-when-someone-comments-on-or-r.md +6 -0
  111. package/corpus/templates/clips/changelog/2026-07-31-you-can-now-set-a-default-visibility-for-new-recordings-in-s.md +6 -0
  112. package/corpus/templates/clips/changelog/2026-08-01-email-notifications-for-comments-and-reactions-now-actually-.md +6 -0
  113. package/corpus/templates/clips/changelog/2026-08-03-the-desktop-app-now-opens-directly-beneath-its-tray-icon-on-.md +6 -0
  114. package/corpus/templates/clips/chrome-extension/package.json +1 -0
  115. package/corpus/templates/clips/chrome-extension/vitest.config.ts +9 -0
  116. package/corpus/templates/clips/desktop/package.json +1 -0
  117. package/corpus/templates/clips/desktop/src/app.tsx +17 -1
  118. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +37 -48
  119. package/corpus/templates/clips/desktop/src/lib/recorder.ts +331 -36
  120. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +7 -5
  121. package/corpus/templates/clips/desktop/src/lib/transcription-engine.ts +182 -106
  122. package/corpus/templates/clips/desktop/src/lib/upload-recovery.ts +129 -0
  123. package/corpus/templates/clips/desktop/src/overlays/live-transcript.tsx +43 -14
  124. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +3 -3
  125. package/corpus/templates/clips/desktop/src-tauri/src/echo_guard.rs +443 -0
  126. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +1 -0
  127. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +815 -15
  128. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +61 -11
  129. package/corpus/templates/clips/desktop/src-tauri/src/whisper_speech.rs +125 -16
  130. package/corpus/templates/clips/desktop/vitest.config.ts +9 -0
  131. package/corpus/templates/clips/server/db/schema.ts +17 -0
  132. package/corpus/templates/clips/server/jobs/media-verification.ts +4 -0
  133. package/corpus/templates/clips/server/lib/activity-notifications.ts +185 -0
  134. package/corpus/templates/clips/server/lib/recording-media-cleanup.ts +2 -0
  135. package/corpus/templates/clips/server/lib/recording-upload-state.ts +46 -9
  136. package/corpus/templates/clips/server/lib/recordings.ts +24 -0
  137. package/corpus/templates/clips/server/lib/resumable-session.ts +10 -4
  138. package/corpus/templates/clips/server/lib/transactional-email-templates.ts +109 -0
  139. package/corpus/templates/clips/server/lib/upload-interruption.ts +8 -0
  140. package/corpus/templates/clips/server/lib/upload-lease.ts +50 -4
  141. package/corpus/templates/clips/server/lib/video-filmstrip-sprite.ts +207 -0
  142. package/corpus/templates/clips/server/lib/video-remux.ts +13 -4
  143. package/corpus/templates/clips/server/plugins/db.ts +16 -0
  144. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +4 -0
  145. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/abort.post.ts +123 -36
  146. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +159 -29
  147. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/interrupt.post.ts +197 -0
  148. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/reset-chunks.post.ts +193 -39
  149. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/resume.get.ts +191 -12
  150. package/corpus/templates/clips/shared/clips-ai-prefs.ts +6 -0
  151. package/corpus/templates/clips/shared/feature-flags.ts +12 -0
  152. package/corpus/templates/clips/shared/recording-core.ts +4 -0
  153. package/corpus/templates/clips/vitest.config.ts +23 -19
  154. package/corpus/templates/content/.agents/skills/document-editing/references/databases.md +6 -4
  155. package/corpus/templates/content/actions/_database-membership-lock.ts +25 -0
  156. package/corpus/templates/content/actions/_database-row-batch.ts +6 -2
  157. package/corpus/templates/content/actions/_database-source-utils.ts +289 -129
  158. package/corpus/templates/content/actions/_database-utils.ts +12 -3
  159. package/corpus/templates/content/actions/add-comment.ts +15 -1
  160. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +39 -21
  161. package/corpus/templates/content/actions/attach-content-database-source.ts +4 -1
  162. package/corpus/templates/content/actions/change-content-database-source-role.ts +3 -5
  163. package/corpus/templates/content/actions/duplicate-document-property.ts +59 -46
  164. package/corpus/templates/content/actions/execute-builder-source-execution.ts +77 -71
  165. package/corpus/templates/content/actions/list-documents.ts +1 -0
  166. package/corpus/templates/content/actions/materialize-builder-required-fields.ts +7 -0
  167. package/corpus/templates/content/actions/remove-database-items.ts +183 -0
  168. package/corpus/templates/content/actions/set-document-property.ts +57 -39
  169. package/corpus/templates/content/actions/sync-local-folder-source.ts +7 -0
  170. package/corpus/templates/content/app/components/editor/DocumentEditor.tsx +5 -2
  171. package/corpus/templates/content/app/components/editor/DocumentToolbar.tsx +50 -1
  172. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +471 -329
  173. package/corpus/templates/content/app/components/editor/database/row-access.ts +45 -0
  174. package/corpus/templates/content/app/components/editor/database/shared.tsx +141 -38
  175. package/corpus/templates/content/app/components/ui/switch.tsx +1 -0
  176. package/corpus/templates/content/app/hooks/use-content-database.ts +2 -2
  177. package/corpus/templates/content/app/hooks/use-content-prefs.ts +55 -0
  178. package/corpus/templates/content/app/i18n-data.ts +170 -0
  179. package/corpus/templates/content/app/routes/_app.settings.tsx +47 -18
  180. package/corpus/templates/content/changelog/2026-07-30-breadcrumb-menus-now-hide-internal-system-pages.md +6 -0
  181. package/corpus/templates/content/changelog/2026-07-30-database-rows-can-now-be-removed-without-deleting-their-page.md +6 -0
  182. package/corpus/templates/content/changelog/2026-08-01-get-an-email-when-someone-comments-on-replies-in-or-mentions.md +6 -0
  183. package/corpus/templates/content/parity/eval-scenarios.ts +2 -2
  184. package/corpus/templates/content/parity/matrix.md +1 -1
  185. package/corpus/templates/content/parity/matrix.ts +4 -5
  186. package/corpus/templates/content/server/lib/comment-notifications.ts +146 -0
  187. package/corpus/templates/content/server/routes/_agent-native/content/user-prefs.get.ts +17 -0
  188. package/corpus/templates/content/server/routes/_agent-native/content/user-prefs.put.ts +36 -0
  189. package/corpus/templates/content/shared/api.ts +4 -0
  190. package/corpus/templates/content/shared/content-user-prefs.ts +11 -0
  191. package/corpus/templates/content/vitest.config.ts +20 -16
  192. package/corpus/templates/crm/app/routes/settings.tsx +14 -22
  193. package/corpus/templates/crm/vitest.config.ts +8 -4
  194. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +26 -11
  195. package/corpus/templates/design/actions/take-design-screenshot.ts +7 -0
  196. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +11 -3
  197. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +4 -1
  198. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +54 -17
  199. package/corpus/templates/design/app/components/design/design-canvas/local-runtime.ts +126 -0
  200. package/corpus/templates/design/app/components/templates/TemplatePreview.tsx +2 -0
  201. package/corpus/templates/design/app/pages/Index.tsx +3 -1
  202. package/corpus/templates/design/app/pages/Present.tsx +2 -1
  203. package/corpus/templates/design/app/routes/settings.tsx +14 -22
  204. package/corpus/templates/design/changelog/2026-07-30-a-broken-inline-script-in-a-generated-screen-is-now-caught-o.md +6 -0
  205. package/corpus/templates/design/changelog/2026-07-30-design-html-is-now-validated-with-a-spec-grade-html-parser-i.md +6 -0
  206. package/corpus/templates/design/changelog/2026-07-30-designs-now-load-their-tailwind-and-alpine-runtimes-from-the.md +6 -0
  207. package/corpus/templates/design/changelog/2026-07-30-designs-with-a-broken-alpine-expression-are-now-caught-on-sa.md +6 -0
  208. package/corpus/templates/design/changelog/2026-07-30-editing-a-design-no-longer-strips-its-styling-the-canvas-kep.md +6 -0
  209. package/corpus/templates/design/changelog/2026-08-01-review-comments-replies-and-mentions-now-send-an-email-to-th.md +6 -0
  210. package/corpus/templates/design/package.json +4 -0
  211. package/corpus/templates/design/shared/html-integrity.ts +802 -556
  212. package/corpus/templates/design/vitest.config.ts +18 -12
  213. package/corpus/templates/dispatch/app/routes/settings.tsx +26 -40
  214. package/corpus/templates/dispatch/vitest.config.ts +11 -7
  215. package/corpus/templates/factory/app/routes/settings.tsx +14 -22
  216. package/corpus/templates/factory/vitest.config.ts +9 -0
  217. package/corpus/templates/forms/app/routes/_app.settings.tsx +14 -22
  218. package/corpus/templates/forms/vitest.config.ts +27 -23
  219. package/corpus/templates/macros/app/routes/settings.tsx +14 -22
  220. package/corpus/templates/macros/vitest.config.ts +16 -12
  221. package/corpus/templates/mail/app/pages/SettingsPage.tsx +14 -16
  222. package/corpus/templates/mail/vitest.config.ts +16 -12
  223. package/corpus/templates/plan/app/routes/settings.tsx +30 -44
  224. package/corpus/templates/plan/vitest.config.ts +24 -20
  225. package/corpus/templates/slides/actions/add-slide-comment.ts +12 -1
  226. package/corpus/templates/slides/app/components/ui/switch.tsx +1 -0
  227. package/corpus/templates/slides/app/hooks/use-slides-prefs.ts +55 -0
  228. package/corpus/templates/slides/app/i18n/en-US.ts +4 -0
  229. package/corpus/templates/slides/app/routes/settings.tsx +45 -22
  230. package/corpus/templates/slides/changelog/2026-08-01-get-an-email-when-someone-comments-on-or-replies-in-your-dec.md +6 -0
  231. package/corpus/templates/slides/server/lib/comment-notifications.ts +182 -0
  232. package/corpus/templates/slides/server/routes/_agent-native/slides/user-prefs.get.ts +16 -0
  233. package/corpus/templates/slides/server/routes/_agent-native/slides/user-prefs.put.ts +36 -0
  234. package/corpus/templates/slides/shared/slides-user-prefs.ts +11 -0
  235. package/corpus/templates/slides/vitest.config.ts +17 -13
  236. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +2 -0
  237. package/corpus/templates/tasks/app/routes/settings.tsx +14 -22
  238. package/corpus/templates/tasks/vitest.config.ts +17 -13
  239. package/corpus/toolkit/CHANGELOG.md +9 -0
  240. package/corpus/toolkit/package.json +1 -1
  241. package/corpus/toolkit/vitest.config.ts +3 -0
  242. package/dist/automations/service.d.ts +2 -0
  243. package/dist/automations/service.d.ts.map +1 -1
  244. package/dist/automations/service.js +29 -4
  245. package/dist/automations/service.js.map +1 -1
  246. package/dist/cli/mcp-config-writers.d.ts.map +1 -1
  247. package/dist/cli/mcp-config-writers.js +24 -23
  248. package/dist/cli/mcp-config-writers.js.map +1 -1
  249. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
  250. package/dist/client/agent-page/AgentJobsTab.js +86 -29
  251. package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
  252. package/dist/client/agent-page/AutomationDetailsDialog.d.ts +21 -0
  253. package/dist/client/agent-page/AutomationDetailsDialog.d.ts.map +1 -0
  254. package/dist/client/agent-page/AutomationDetailsDialog.js +33 -0
  255. package/dist/client/agent-page/AutomationDetailsDialog.js.map +1 -0
  256. package/dist/client/agent-page/AutomationScheduleDialog.d.ts +15 -0
  257. package/dist/client/agent-page/AutomationScheduleDialog.d.ts.map +1 -0
  258. package/dist/client/agent-page/AutomationScheduleDialog.js +46 -0
  259. package/dist/client/agent-page/AutomationScheduleDialog.js.map +1 -0
  260. package/dist/client/agent-page/TimezoneSelect.d.ts +17 -0
  261. package/dist/client/agent-page/TimezoneSelect.d.ts.map +1 -0
  262. package/dist/client/agent-page/TimezoneSelect.js +107 -0
  263. package/dist/client/agent-page/TimezoneSelect.js.map +1 -0
  264. package/dist/client/agent-page/use-jobs.d.ts +20 -7
  265. package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
  266. package/dist/client/agent-page/use-jobs.js +24 -4
  267. package/dist/client/agent-page/use-jobs.js.map +1 -1
  268. package/dist/client/org/OrgSwitcher.d.ts +8 -1
  269. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  270. package/dist/client/org/OrgSwitcher.js +8 -2
  271. package/dist/client/org/OrgSwitcher.js.map +1 -1
  272. package/dist/client/settings/AccountSettingsCard.d.ts.map +1 -1
  273. package/dist/client/settings/AccountSettingsCard.js +10 -9
  274. package/dist/client/settings/AccountSettingsCard.js.map +1 -1
  275. package/dist/client/settings/SchedulingTimezoneField.d.ts +10 -0
  276. package/dist/client/settings/SchedulingTimezoneField.d.ts.map +1 -0
  277. package/dist/client/settings/SchedulingTimezoneField.js +30 -0
  278. package/dist/client/settings/SchedulingTimezoneField.js.map +1 -0
  279. package/dist/client/settings/SettingsRow.d.ts +36 -0
  280. package/dist/client/settings/SettingsRow.d.ts.map +1 -0
  281. package/dist/client/settings/SettingsRow.js +15 -0
  282. package/dist/client/settings/SettingsRow.js.map +1 -0
  283. package/dist/client/settings/agent-settings-search.d.ts.map +1 -1
  284. package/dist/client/settings/agent-settings-search.js +1 -1
  285. package/dist/client/settings/agent-settings-search.js.map +1 -1
  286. package/dist/client/settings/index.d.ts +1 -0
  287. package/dist/client/settings/index.d.ts.map +1 -1
  288. package/dist/client/settings/index.js +1 -0
  289. package/dist/client/settings/index.js.map +1 -1
  290. package/dist/collab/struct-routes.d.ts +1 -1
  291. package/dist/file-upload/actions/upload-image.d.ts +1 -1
  292. package/dist/integrations/identity.d.ts.map +1 -1
  293. package/dist/integrations/identity.js +2 -11
  294. package/dist/integrations/identity.js.map +1 -1
  295. package/dist/jobs/actions/list-automation-runs.d.ts +8 -0
  296. package/dist/jobs/actions/list-automation-runs.d.ts.map +1 -0
  297. package/dist/jobs/actions/list-automation-runs.js +29 -0
  298. package/dist/jobs/actions/list-automation-runs.js.map +1 -0
  299. package/dist/jobs/actions/list-recurring-jobs.d.ts +2 -0
  300. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
  301. package/dist/jobs/actions/list-recurring-jobs.js +20 -7
  302. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
  303. package/dist/jobs/actions/manage-recurring-job.d.ts +2 -0
  304. package/dist/jobs/actions/manage-recurring-job.js +30 -9
  305. package/dist/jobs/actions/manage-recurring-job.js.map +1 -1
  306. package/dist/jobs/background-automation-runner.d.ts.map +1 -1
  307. package/dist/jobs/background-automation-runner.js +60 -0
  308. package/dist/jobs/background-automation-runner.js.map +1 -1
  309. package/dist/jobs/cron.d.ts +16 -2
  310. package/dist/jobs/cron.d.ts.map +1 -1
  311. package/dist/jobs/cron.js +43 -6
  312. package/dist/jobs/cron.js.map +1 -1
  313. package/dist/jobs/frontmatter.d.ts +12 -0
  314. package/dist/jobs/frontmatter.d.ts.map +1 -1
  315. package/dist/jobs/frontmatter.js +8 -0
  316. package/dist/jobs/frontmatter.js.map +1 -1
  317. package/dist/jobs/run-history.d.ts +56 -0
  318. package/dist/jobs/run-history.d.ts.map +1 -0
  319. package/dist/jobs/run-history.js +169 -0
  320. package/dist/jobs/run-history.js.map +1 -0
  321. package/dist/jobs/scheduler.d.ts.map +1 -1
  322. package/dist/jobs/scheduler.js +51 -18
  323. package/dist/jobs/scheduler.js.map +1 -1
  324. package/dist/jobs/tools.d.ts.map +1 -1
  325. package/dist/jobs/tools.js +37 -6
  326. package/dist/jobs/tools.js.map +1 -1
  327. package/dist/localization/actions/get-localization-preference.d.ts +1 -2
  328. package/dist/localization/actions/get-localization-preference.d.ts.map +1 -1
  329. package/dist/localization/actions/get-localization-preference.js.map +1 -1
  330. package/dist/localization/actions/set-localization-preference.d.ts +3 -3
  331. package/dist/localization/actions/set-localization-preference.d.ts.map +1 -1
  332. package/dist/localization/actions/set-localization-preference.js +33 -8
  333. package/dist/localization/actions/set-localization-preference.js.map +1 -1
  334. package/dist/localization/default-messages.d.ts +25 -0
  335. package/dist/localization/default-messages.d.ts.map +1 -1
  336. package/dist/localization/default-messages.js +25 -0
  337. package/dist/localization/default-messages.js.map +1 -1
  338. package/dist/localization/shared.d.ts +16 -1
  339. package/dist/localization/shared.d.ts.map +1 -1
  340. package/dist/localization/shared.js +22 -4
  341. package/dist/localization/shared.js.map +1 -1
  342. package/dist/localization/user-timezone.d.ts +11 -0
  343. package/dist/localization/user-timezone.d.ts.map +1 -0
  344. package/dist/localization/user-timezone.js +31 -0
  345. package/dist/localization/user-timezone.js.map +1 -0
  346. package/dist/notifications/routes.d.ts +2 -2
  347. package/dist/observability/routes.d.ts +1 -1
  348. package/dist/org/app-roles-handlers.d.ts.map +1 -1
  349. package/dist/org/app-roles-handlers.js +1 -8
  350. package/dist/org/app-roles-handlers.js.map +1 -1
  351. package/dist/org/index.d.ts +1 -0
  352. package/dist/org/index.d.ts.map +1 -1
  353. package/dist/org/index.js +1 -0
  354. package/dist/org/index.js.map +1 -1
  355. package/dist/org/membership.d.ts +6 -0
  356. package/dist/org/membership.d.ts.map +1 -0
  357. package/dist/org/membership.js +16 -0
  358. package/dist/org/membership.js.map +1 -0
  359. package/dist/provider-api/actions/custom-provider-registration.d.ts +10 -10
  360. package/dist/provider-api/actions/provider-api.d.ts +8 -8
  361. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  362. package/dist/resources/handlers.d.ts +1 -1
  363. package/dist/review/actions/create-review-comment.d.ts +32 -1
  364. package/dist/review/actions/create-review-comment.d.ts.map +1 -1
  365. package/dist/review/actions/create-review-comment.js +3 -1
  366. package/dist/review/actions/create-review-comment.js.map +1 -1
  367. package/dist/review/actions/reply-review-comment.d.ts +32 -1
  368. package/dist/review/actions/reply-review-comment.d.ts.map +1 -1
  369. package/dist/review/actions/reply-review-comment.js +3 -1
  370. package/dist/review/actions/reply-review-comment.js.map +1 -1
  371. package/dist/review/index.d.ts +1 -0
  372. package/dist/review/index.d.ts.map +1 -1
  373. package/dist/review/index.js +1 -0
  374. package/dist/review/index.js.map +1 -1
  375. package/dist/review/notifications.d.ts +24 -0
  376. package/dist/review/notifications.d.ts.map +1 -0
  377. package/dist/review/notifications.js +123 -0
  378. package/dist/review/notifications.js.map +1 -0
  379. package/dist/review/types.d.ts +5 -0
  380. package/dist/review/types.d.ts.map +1 -1
  381. package/dist/review/types.js.map +1 -1
  382. package/dist/server/action-discovery.d.ts.map +1 -1
  383. package/dist/server/action-discovery.js +4 -0
  384. package/dist/server/action-discovery.js.map +1 -1
  385. package/dist/server/activity-notifications.d.ts +61 -0
  386. package/dist/server/activity-notifications.d.ts.map +1 -0
  387. package/dist/server/activity-notifications.js +103 -0
  388. package/dist/server/activity-notifications.js.map +1 -0
  389. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  390. package/dist/server/app-name.d.ts +18 -0
  391. package/dist/server/app-name.d.ts.map +1 -1
  392. package/dist/server/app-name.js +31 -0
  393. package/dist/server/app-name.js.map +1 -1
  394. package/dist/server/better-auth-instance.js +4 -4
  395. package/dist/server/better-auth-instance.js.map +1 -1
  396. package/dist/server/email-templates.d.ts +12 -0
  397. package/dist/server/email-templates.d.ts.map +1 -1
  398. package/dist/server/email-templates.js +57 -14
  399. package/dist/server/email-templates.js.map +1 -1
  400. package/dist/server/email.d.ts +12 -0
  401. package/dist/server/email.d.ts.map +1 -1
  402. package/dist/server/email.js +52 -5
  403. package/dist/server/email.js.map +1 -1
  404. package/dist/server/index.d.ts +1 -0
  405. package/dist/server/index.d.ts.map +1 -1
  406. package/dist/server/index.js +1 -0
  407. package/dist/server/index.js.map +1 -1
  408. package/dist/sharing/index.d.ts +1 -0
  409. package/dist/sharing/index.d.ts.map +1 -1
  410. package/dist/sharing/index.js +1 -0
  411. package/dist/sharing/index.js.map +1 -1
  412. package/dist/sharing/recipients.d.ts +31 -0
  413. package/dist/sharing/recipients.d.ts.map +1 -0
  414. package/dist/sharing/recipients.js +40 -0
  415. package/dist/sharing/recipients.js.map +1 -0
  416. package/dist/templates/chat/app/routes/settings.tsx +14 -22
  417. package/dist/templates/chat/vitest.config.ts +9 -0
  418. package/dist/triggers/actions/list-automations.d.ts +2 -0
  419. package/dist/triggers/actions/list-automations.d.ts.map +1 -1
  420. package/dist/triggers/actions/list-automations.js +19 -8
  421. package/dist/triggers/actions/list-automations.js.map +1 -1
  422. package/dist/triggers/actions/manage-automation.d.ts +6 -0
  423. package/dist/triggers/actions/manage-automation.js +12 -6
  424. package/dist/triggers/actions/manage-automation.js.map +1 -1
  425. package/dist/triggers/actions.d.ts.map +1 -1
  426. package/dist/triggers/actions.js +15 -4
  427. package/dist/triggers/actions.js.map +1 -1
  428. package/dist/triggers/dispatcher.d.ts.map +1 -1
  429. package/dist/triggers/dispatcher.js +19 -17
  430. package/dist/triggers/dispatcher.js.map +1 -1
  431. package/dist/triggers/routes.d.ts.map +1 -1
  432. package/dist/triggers/routes.js +6 -6
  433. package/dist/triggers/routes.js.map +1 -1
  434. package/dist/vitest-config.d.ts +10 -0
  435. package/dist/vitest-config.d.ts.map +1 -0
  436. package/dist/vitest-config.js +55 -0
  437. package/dist/vitest-config.js.map +1 -0
  438. package/docs/content/template-content-developers.mdx +1 -1
  439. package/package.json +5 -4
  440. package/src/automations/service.ts +41 -4
  441. package/src/cli/mcp-config-writers.ts +27 -21
  442. package/src/client/agent-page/AgentJobsTab.tsx +187 -85
  443. package/src/client/agent-page/AutomationDetailsDialog.tsx +208 -0
  444. package/src/client/agent-page/AutomationScheduleDialog.tsx +180 -0
  445. package/src/client/agent-page/TimezoneSelect.tsx +241 -0
  446. package/src/client/agent-page/use-jobs.ts +50 -10
  447. package/src/client/org/OrgSwitcher.tsx +26 -0
  448. package/src/client/settings/AccountSettingsCard.tsx +35 -31
  449. package/src/client/settings/SchedulingTimezoneField.tsx +71 -0
  450. package/src/client/settings/SettingsRow.tsx +113 -0
  451. package/src/client/settings/agent-settings-search.ts +2 -1
  452. package/src/client/settings/index.ts +6 -0
  453. package/src/integrations/identity.ts +2 -12
  454. package/src/jobs/actions/list-automation-runs.ts +33 -0
  455. package/src/jobs/actions/list-recurring-jobs.ts +27 -6
  456. package/src/jobs/actions/manage-recurring-job.ts +41 -9
  457. package/src/jobs/background-automation-runner.ts +88 -0
  458. package/src/jobs/cron.ts +52 -6
  459. package/src/jobs/frontmatter.ts +20 -0
  460. package/src/jobs/run-history.ts +242 -0
  461. package/src/jobs/scheduler.ts +73 -18
  462. package/src/jobs/tools.ts +54 -6
  463. package/src/localization/actions/get-localization-preference.ts +2 -2
  464. package/src/localization/actions/set-localization-preference.ts +49 -11
  465. package/src/localization/default-messages.ts +27 -0
  466. package/src/localization/shared.ts +39 -6
  467. package/src/localization/user-timezone.ts +36 -0
  468. package/src/org/app-roles-handlers.ts +1 -9
  469. package/src/org/index.ts +2 -0
  470. package/src/org/membership.ts +18 -0
  471. package/src/review/actions/create-review-comment.ts +4 -1
  472. package/src/review/actions/reply-review-comment.ts +4 -1
  473. package/src/review/index.ts +5 -0
  474. package/src/review/notifications.ts +163 -0
  475. package/src/review/types.ts +7 -0
  476. package/src/server/action-discovery.ts +4 -0
  477. package/src/server/activity-notifications.ts +174 -0
  478. package/src/server/app-name.ts +31 -0
  479. package/src/server/better-auth-instance.ts +4 -4
  480. package/src/server/email-templates.ts +70 -14
  481. package/src/server/email.ts +66 -3
  482. package/src/server/index.ts +10 -0
  483. package/src/sharing/index.ts +5 -0
  484. package/src/sharing/recipients.ts +67 -0
  485. package/src/templates/chat/app/routes/settings.tsx +14 -22
  486. package/src/templates/chat/vitest.config.ts +9 -0
  487. package/src/triggers/actions/list-automations.ts +27 -8
  488. package/src/triggers/actions/manage-automation.ts +17 -6
  489. package/src/triggers/actions.ts +16 -4
  490. package/src/triggers/dispatcher.ts +44 -30
  491. package/src/triggers/routes.ts +19 -6
  492. package/src/vitest-config.ts +68 -0
  493. package/corpus/templates/content/actions/delete-database-items.ts +0 -89
@@ -92,6 +92,9 @@ const databaseMessages = {
92
92
  failedToDeleteRow: "Failed to delete row",
93
93
  failedToDeleteSelectedRows: "Failed to delete selected rows",
94
94
  failedToDuplicateEverySelectedRow: "Failed to duplicate every selected row",
95
+ failedToRemoveEverySelectedRowFromDatabase:
96
+ "Failed to remove every selected row from the database",
97
+ failedToRemoveRowFromDatabase: "Failed to remove row from database",
95
98
  failedToDuplicateRow: "Failed to duplicate row",
96
99
  failedToMoveCard: "Failed to move card",
97
100
  failedToMoveRow: "Failed to move row",
@@ -100,6 +103,15 @@ const databaseMessages = {
100
103
  failedToSaveView: "Failed to save view",
101
104
  failedToUpdateCheckbox: "Failed to update checkbox",
102
105
  failedToUpdateEverySelectedRow: "Failed to update every selected row",
106
+ removeSelectedRowsFromDatabaseQuestion: "Remove selected rows from database?",
107
+ removeSelectedRowsFromDatabaseDescription:
108
+ "The selected pages will remain available in Files and any other databases. Values belonging only to this database will be removed.",
109
+ removeFromDatabase: "Remove from database",
110
+ removeFromDatabaseQuestion: "Remove from database?",
111
+ removeFromDatabaseDescription:
112
+ "“{{title}}” will remain available in Files and any other databases. Values belonging only to this database will be removed.",
113
+ remove: "Remove",
114
+ removing: "Removing...",
103
115
  filter: "Filter",
104
116
  filterBy: "Filter by...",
105
117
  addAdvancedFilter: "Add advanced filter",
@@ -598,6 +610,17 @@ const databaseMessagesByLocale = {
598
610
  failedToDeleteRow: "删除行失败",
599
611
  failedToDeleteSelectedRows: "删除所选行失败",
600
612
  failedToDuplicateEverySelectedRow: "未能复制所有选中行",
613
+ failedToRemoveEverySelectedRowFromDatabase: "无法从数据库中移除所有选中行",
614
+ failedToRemoveRowFromDatabase: "无法从数据库中移除该行",
615
+ removeSelectedRowsFromDatabaseQuestion: "从数据库中移除选中行?",
616
+ removeSelectedRowsFromDatabaseDescription:
617
+ "所选页面仍可在“文件”和其他数据库中使用。仅属于此数据库的值将被移除。",
618
+ removeFromDatabase: "从数据库中移除",
619
+ removeFromDatabaseQuestion: "从数据库中移除?",
620
+ removeFromDatabaseDescription:
621
+ "“{{title}}”仍可在“文件”和其他数据库中使用。仅属于此数据库的值将被移除。",
622
+ remove: "移除",
623
+ removing: "正在移除...",
601
624
  failedToDuplicateRow: "复制行失败",
602
625
  failedToMoveCard: "移动卡片失败",
603
626
  failedToMoveRow: "移动行失败",
@@ -819,6 +842,20 @@ const databaseMessagesByLocale = {
819
842
  "No se pudieron eliminar las filas seleccionadas",
820
843
  failedToDuplicateEverySelectedRow:
821
844
  "No se pudieron duplicar todas las filas seleccionadas",
845
+ failedToRemoveEverySelectedRowFromDatabase:
846
+ "No se pudieron quitar todas las filas seleccionadas de la base de datos",
847
+ failedToRemoveRowFromDatabase:
848
+ "No se pudo quitar la fila de la base de datos",
849
+ removeSelectedRowsFromDatabaseQuestion:
850
+ "¿Quitar las filas seleccionadas de la base de datos?",
851
+ removeSelectedRowsFromDatabaseDescription:
852
+ "Las páginas seleccionadas seguirán disponibles en Archivos y en otras bases de datos. Se quitarán los valores que solo pertenecen a esta base de datos.",
853
+ removeFromDatabase: "Quitar de la base de datos",
854
+ removeFromDatabaseQuestion: "¿Quitar de la base de datos?",
855
+ removeFromDatabaseDescription:
856
+ "“{{title}}” seguirá disponible en Archivos y en otras bases de datos. Se quitarán los valores que solo pertenecen a esta base de datos.",
857
+ remove: "Quitar",
858
+ removing: "Quitando...",
822
859
  failedToDuplicateRow: "No se pudo duplicar la fila",
823
860
  failedToMoveCard: "No se pudo mover la tarjeta",
824
861
  failedToMoveRow: "No se pudo mover la fila",
@@ -1043,6 +1080,20 @@ const databaseMessagesByLocale = {
1043
1080
  "Échec de la suppression des lignes sélectionnées",
1044
1081
  failedToDuplicateEverySelectedRow:
1045
1082
  "Impossible de dupliquer toutes les lignes sélectionnées",
1083
+ failedToRemoveEverySelectedRowFromDatabase:
1084
+ "Impossible de retirer toutes les lignes sélectionnées de la base de données",
1085
+ failedToRemoveRowFromDatabase:
1086
+ "Impossible de retirer la ligne de la base de données",
1087
+ removeSelectedRowsFromDatabaseQuestion:
1088
+ "Retirer les lignes sélectionnées de la base de données ?",
1089
+ removeSelectedRowsFromDatabaseDescription:
1090
+ "Les pages sélectionnées resteront disponibles dans Fichiers et dans les autres bases de données. Les valeurs propres à cette base de données seront supprimées.",
1091
+ removeFromDatabase: "Retirer de la base de données",
1092
+ removeFromDatabaseQuestion: "Retirer de la base de données ?",
1093
+ removeFromDatabaseDescription:
1094
+ "« {{title}} » restera disponible dans Fichiers et dans les autres bases de données. Les valeurs propres à cette base de données seront supprimées.",
1095
+ remove: "Retirer",
1096
+ removing: "Suppression...",
1046
1097
  failedToDuplicateRow: "Échec de la duplication de la ligne",
1047
1098
  failedToMoveCard: "Échec du déplacement de la carte",
1048
1099
  failedToMoveRow: "Échec du déplacement de la ligne",
@@ -1267,6 +1318,20 @@ const databaseMessagesByLocale = {
1267
1318
  "Ausgewählte Zeilen konnten nicht gelöscht werden",
1268
1319
  failedToDuplicateEverySelectedRow:
1269
1320
  "Nicht jede ausgewählte Zeile konnte dupliziert werden",
1321
+ failedToRemoveEverySelectedRowFromDatabase:
1322
+ "Nicht alle ausgewählten Zeilen konnten aus der Datenbank entfernt werden",
1323
+ failedToRemoveRowFromDatabase:
1324
+ "Die Zeile konnte nicht aus der Datenbank entfernt werden",
1325
+ removeSelectedRowsFromDatabaseQuestion:
1326
+ "Ausgewählte Zeilen aus der Datenbank entfernen?",
1327
+ removeSelectedRowsFromDatabaseDescription:
1328
+ "Die ausgewählten Seiten bleiben unter Dateien und in anderen Datenbanken verfügbar. Werte, die nur zu dieser Datenbank gehören, werden entfernt.",
1329
+ removeFromDatabase: "Aus Datenbank entfernen",
1330
+ removeFromDatabaseQuestion: "Aus der Datenbank entfernen?",
1331
+ removeFromDatabaseDescription:
1332
+ "„{{title}}“ bleibt unter Dateien und in anderen Datenbanken verfügbar. Werte, die nur zu dieser Datenbank gehören, werden entfernt.",
1333
+ remove: "Entfernen",
1334
+ removing: "Wird entfernt...",
1270
1335
  failedToDuplicateRow: "Zeile konnte nicht dupliziert werden",
1271
1336
  failedToMoveCard: "Karte konnte nicht verschoben werden",
1272
1337
  failedToMoveRow: "Zeile konnte nicht verschoben werden",
@@ -1486,6 +1551,19 @@ const databaseMessagesByLocale = {
1486
1551
  failedToDeleteSelectedRows: "選択した行を削除できませんでした",
1487
1552
  failedToDuplicateEverySelectedRow:
1488
1553
  "選択したすべての行を複製できませんでした",
1554
+ failedToRemoveEverySelectedRowFromDatabase:
1555
+ "選択したすべての行をデータベースから削除できませんでした",
1556
+ failedToRemoveRowFromDatabase: "行をデータベースから削除できませんでした",
1557
+ removeSelectedRowsFromDatabaseQuestion:
1558
+ "選択した行をデータベースから削除しますか?",
1559
+ removeSelectedRowsFromDatabaseDescription:
1560
+ "選択したページは引き続きファイルや他のデータベースで利用できます。このデータベースにのみ属する値は削除されます。",
1561
+ removeFromDatabase: "データベースから削除",
1562
+ removeFromDatabaseQuestion: "データベースから削除しますか?",
1563
+ removeFromDatabaseDescription:
1564
+ "「{{title}}」は引き続きファイルや他のデータベースで利用できます。このデータベースにのみ属する値は削除されます。",
1565
+ remove: "削除",
1566
+ removing: "削除中...",
1489
1567
  failedToDuplicateRow: "行を複製できませんでした",
1490
1568
  failedToMoveCard: "カードを移動できませんでした",
1491
1569
  failedToMoveRow: "行を移動できませんでした",
@@ -1701,6 +1779,19 @@ const databaseMessagesByLocale = {
1701
1779
  failedToDeleteRow: "행을 삭제하지 못했습니다",
1702
1780
  failedToDeleteSelectedRows: "선택한 행을 삭제하지 못했습니다",
1703
1781
  failedToDuplicateEverySelectedRow: "선택한 모든 행을 복제하지 못했습니다",
1782
+ failedToRemoveEverySelectedRowFromDatabase:
1783
+ "선택한 모든 행을 데이터베이스에서 제거하지 못했습니다",
1784
+ failedToRemoveRowFromDatabase: "행을 데이터베이스에서 제거하지 못했습니다",
1785
+ removeSelectedRowsFromDatabaseQuestion:
1786
+ "선택한 행을 데이터베이스에서 제거할까요?",
1787
+ removeSelectedRowsFromDatabaseDescription:
1788
+ "선택한 페이지는 파일 및 다른 데이터베이스에서 계속 사용할 수 있습니다. 이 데이터베이스에만 속한 값은 제거됩니다.",
1789
+ removeFromDatabase: "데이터베이스에서 제거",
1790
+ removeFromDatabaseQuestion: "데이터베이스에서 제거할까요?",
1791
+ removeFromDatabaseDescription:
1792
+ "“{{title}}”은(는) 파일 및 다른 데이터베이스에서 계속 사용할 수 있습니다. 이 데이터베이스에만 속한 값은 제거됩니다.",
1793
+ remove: "제거",
1794
+ removing: "제거 중...",
1704
1795
  failedToDuplicateRow: "행을 복제하지 못했습니다",
1705
1796
  failedToMoveCard: "카드를 이동하지 못했습니다",
1706
1797
  failedToMoveRow: "행을 이동하지 못했습니다",
@@ -1922,6 +2013,20 @@ const databaseMessagesByLocale = {
1922
2013
  failedToDeleteSelectedRows: "Falha ao excluir linhas selecionadas",
1923
2014
  failedToDuplicateEverySelectedRow:
1924
2015
  "Falha ao duplicar todas as linhas selecionadas",
2016
+ failedToRemoveEverySelectedRowFromDatabase:
2017
+ "Não foi possível remover todas as linhas selecionadas do banco de dados",
2018
+ failedToRemoveRowFromDatabase:
2019
+ "Não foi possível remover a linha do banco de dados",
2020
+ removeSelectedRowsFromDatabaseQuestion:
2021
+ "Remover as linhas selecionadas do banco de dados?",
2022
+ removeSelectedRowsFromDatabaseDescription:
2023
+ "As páginas selecionadas continuarão disponíveis em Arquivos e em outros bancos de dados. Os valores que pertencem somente a este banco de dados serão removidos.",
2024
+ removeFromDatabase: "Remover do banco de dados",
2025
+ removeFromDatabaseQuestion: "Remover do banco de dados?",
2026
+ removeFromDatabaseDescription:
2027
+ "“{{title}}” continuará disponível em Arquivos e em outros bancos de dados. Os valores que pertencem somente a este banco de dados serão removidos.",
2028
+ remove: "Remover",
2029
+ removing: "Removendo...",
1925
2030
  failedToDuplicateRow: "Falha ao duplicar linha",
1926
2031
  failedToMoveCard: "Falha ao mover cartão",
1927
2032
  failedToMoveRow: "Falha ao mover linha",
@@ -2135,6 +2240,18 @@ const databaseMessagesByLocale = {
2135
2240
  failedToDeleteRow: "पंक्ति हटाने में विफल",
2136
2241
  failedToDeleteSelectedRows: "चुनी गई पंक्तियां हटाने में विफल",
2137
2242
  failedToDuplicateEverySelectedRow: "हर चुनी गई पंक्ति डुप्लिकेट नहीं हो सकी",
2243
+ failedToRemoveEverySelectedRowFromDatabase:
2244
+ "डेटाबेस से सभी चुनी गई पंक्तियां नहीं हटाई जा सकीं",
2245
+ failedToRemoveRowFromDatabase: "डेटाबेस से पंक्ति नहीं हटाई जा सकी",
2246
+ removeSelectedRowsFromDatabaseQuestion: "चुनी गई पंक्तियां डेटाबेस से हटाएं?",
2247
+ removeSelectedRowsFromDatabaseDescription:
2248
+ "चुने गए पेज फ़ाइलें और अन्य डेटाबेस में उपलब्ध रहेंगे। केवल इस डेटाबेस से संबंधित मान हटा दिए जाएंगे।",
2249
+ removeFromDatabase: "डेटाबेस से हटाएं",
2250
+ removeFromDatabaseQuestion: "डेटाबेस से हटाएं?",
2251
+ removeFromDatabaseDescription:
2252
+ "“{{title}}” फ़ाइलें और अन्य डेटाबेस में उपलब्ध रहेगा। केवल इस डेटाबेस से संबंधित मान हटा दिए जाएंगे।",
2253
+ remove: "हटाएं",
2254
+ removing: "हटाया जा रहा है...",
2138
2255
  failedToDuplicateRow: "पंक्ति डुप्लिकेट करने में विफल",
2139
2256
  failedToMoveCard: "कार्ड ले जाने में विफल",
2140
2257
  failedToMoveRow: "पंक्ति ले जाने में विफल",
@@ -2343,6 +2460,19 @@ const databaseMessagesByLocale = {
2343
2460
  failedToDeleteRow: "فشل حذف الصف",
2344
2461
  failedToDeleteSelectedRows: "فشل حذف الصفوف المحددة",
2345
2462
  failedToDuplicateEverySelectedRow: "تعذر تكرار كل الصفوف المحددة",
2463
+ failedToRemoveEverySelectedRowFromDatabase:
2464
+ "تعذرت إزالة كل الصفوف المحددة من قاعدة البيانات",
2465
+ failedToRemoveRowFromDatabase: "تعذرت إزالة الصف من قاعدة البيانات",
2466
+ removeSelectedRowsFromDatabaseQuestion:
2467
+ "هل تريد إزالة الصفوف المحددة من قاعدة البيانات؟",
2468
+ removeSelectedRowsFromDatabaseDescription:
2469
+ "ستظل الصفحات المحددة متاحة في الملفات وقواعد البيانات الأخرى. ستُزال القيم التي تخص قاعدة البيانات هذه فقط.",
2470
+ removeFromDatabase: "إزالة من قاعدة البيانات",
2471
+ removeFromDatabaseQuestion: "هل تريد الإزالة من قاعدة البيانات؟",
2472
+ removeFromDatabaseDescription:
2473
+ "سيظل “{{title}}” متاحا في الملفات وقواعد البيانات الأخرى. ستُزال القيم التي تخص قاعدة البيانات هذه فقط.",
2474
+ remove: "إزالة",
2475
+ removing: "جار الإزالة...",
2346
2476
  failedToDuplicateRow: "فشل تكرار الصف",
2347
2477
  failedToMoveCard: "فشل نقل البطاقة",
2348
2478
  failedToMoveRow: "فشل نقل الصف",
@@ -2925,6 +3055,10 @@ const enUS = {
2925
3055
  metaTitle: "Settings - Content",
2926
3056
  title: "Settings",
2927
3057
  description: "Language and workspace preferences for Content.",
3058
+ emailNotifications: "Email notifications",
3059
+ emailNotificationsDescription:
3060
+ "Get an email when someone comments on, replies in, or mentions you on your document.",
3061
+ saveFailed: "Failed to save",
2928
3062
  languageTitle: "Language",
2929
3063
  languageDescription:
2930
3064
  "Choose the interface language. This preference is saved for your account.",
@@ -9003,6 +9137,10 @@ export const messagesByLocale = {
9003
9137
  settings: {
9004
9138
  title: "设置",
9005
9139
  description: "Content 的语言和工作区偏好设置。",
9140
+ emailNotifications: "邮件通知",
9141
+ emailNotificationsDescription:
9142
+ "当有人评论你的文档、在讨论串中回复或提到你时,收到邮件通知。",
9143
+ saveFailed: "保存失败",
9006
9144
  languageTitle: "语言",
9007
9145
  languageDescription: "选择界面语言。此偏好会保存到你的账户。",
9008
9146
  languageLabel: "界面语言",
@@ -9195,6 +9333,10 @@ export const messagesByLocale = {
9195
9333
  settings: {
9196
9334
  title: "Ajustes",
9197
9335
  description: "Preferencias de idioma y espacio de trabajo para Content.",
9336
+ emailNotifications: "Notificaciones por correo",
9337
+ emailNotificationsDescription:
9338
+ "Recibe un correo cuando alguien comente, responda o te mencione en tu documento.",
9339
+ saveFailed: "No se pudo guardar",
9198
9340
  languageTitle: "Idioma",
9199
9341
  languageDescription:
9200
9342
  "Elige el idioma de la interfaz. Esta preferencia se guarda en tu cuenta.",
@@ -9394,6 +9536,10 @@ export const messagesByLocale = {
9394
9536
  settings: {
9395
9537
  title: "Paramètres",
9396
9538
  description: "Préférences de langue et d’espace de travail pour Content.",
9539
+ emailNotifications: "Notifications par e-mail",
9540
+ emailNotificationsDescription:
9541
+ "Recevez un e-mail lorsqu’une personne commente, répond ou vous mentionne dans votre document.",
9542
+ saveFailed: "Échec de l’enregistrement",
9397
9543
  languageTitle: "Langue",
9398
9544
  languageDescription:
9399
9545
  "Choisissez la langue de l’interface. Cette préférence est enregistrée dans votre compte.",
@@ -9591,6 +9737,10 @@ export const messagesByLocale = {
9591
9737
  settings: {
9592
9738
  title: "Einstellungen",
9593
9739
  description: "Sprach- und Arbeitsbereichseinstellungen für Content.",
9740
+ emailNotifications: "E-Mail-Benachrichtigungen",
9741
+ emailNotificationsDescription:
9742
+ "Erhalte eine E-Mail, wenn jemand dein Dokument kommentiert, antwortet oder dich erwähnt.",
9743
+ saveFailed: "Speichern fehlgeschlagen",
9594
9744
  languageTitle: "Sprache",
9595
9745
  languageDescription:
9596
9746
  "Wähle die Sprache der Oberfläche. Diese Einstellung wird in deinem Konto gespeichert.",
@@ -9787,6 +9937,10 @@ export const messagesByLocale = {
9787
9937
  settings: {
9788
9938
  title: "設定",
9789
9939
  description: "Content の言語とワークスペース設定。",
9940
+ emailNotifications: "メール通知",
9941
+ emailNotificationsDescription:
9942
+ "誰かがあなたのドキュメントにコメント、返信、またはあなたにメンションしたときにメールを受け取ります。",
9943
+ saveFailed: "保存に失敗しました",
9790
9944
  languageTitle: "言語",
9791
9945
  languageDescription:
9792
9946
  "インターフェース言語を選択します。この設定はアカウントに保存されます。",
@@ -9975,6 +10129,10 @@ export const messagesByLocale = {
9975
10129
  settings: {
9976
10130
  title: "설정",
9977
10131
  description: "Content의 언어 및 워크스페이스 환경설정입니다.",
10132
+ emailNotifications: "이메일 알림",
10133
+ emailNotificationsDescription:
10134
+ "누군가 내 문서에 댓글을 달거나 답글을 남기거나 나를 멘션하면 이메일을 받습니다.",
10135
+ saveFailed: "저장 실패",
9978
10136
  languageTitle: "언어",
9979
10137
  languageDescription:
9980
10138
  "인터페이스 언어를 선택하세요. 이 기본 설정은 계정에 저장됩니다.",
@@ -10169,6 +10327,10 @@ export const messagesByLocale = {
10169
10327
  settings: {
10170
10328
  title: "Configurações",
10171
10329
  description: "Preferências de idioma e espaço de trabalho do Content.",
10330
+ emailNotifications: "Notificações por e-mail",
10331
+ emailNotificationsDescription:
10332
+ "Receba um e-mail quando alguém comentar, responder ou mencionar você no seu documento.",
10333
+ saveFailed: "Falha ao salvar",
10172
10334
  languageTitle: "Idioma",
10173
10335
  languageDescription:
10174
10336
  "Escolha o idioma da interface. Essa preferência é salva na sua conta.",
@@ -10356,6 +10518,10 @@ export const messagesByLocale = {
10356
10518
  settings: {
10357
10519
  title: "सेटिंग्स",
10358
10520
  description: "Content के लिए भाषा और कार्यस्थान प्राथमिकताएं।",
10521
+ emailNotifications: "ईमेल सूचनाएँ",
10522
+ emailNotificationsDescription:
10523
+ "जब कोई आपके दस्तावेज़ पर टिप्पणी करे, जवाब दे या आपका उल्लेख करे तो ईमेल पाएँ।",
10524
+ saveFailed: "सहेजने में विफल",
10359
10525
  languageTitle: "भाषा",
10360
10526
  languageDescription: "इंटरफ़ेस भाषा चुनें। यह पसंद आपके खाते में सहेजी जाती है।",
10361
10527
  languageLabel: "इंटरफ़ेस भाषा",
@@ -10542,6 +10708,10 @@ export const messagesByLocale = {
10542
10708
  settings: {
10543
10709
  title: "الإعدادات",
10544
10710
  description: "تفضيلات اللغة ومساحة العمل في Content.",
10711
+ emailNotifications: "إشعارات البريد الإلكتروني",
10712
+ emailNotificationsDescription:
10713
+ "احصل على بريد إلكتروني عندما يعلّق شخص على مستندك أو يرد أو يذكرك.",
10714
+ saveFailed: "فشل الحفظ",
10545
10715
  languageTitle: "اللغة",
10546
10716
  languageDescription: "اختر لغة الواجهة. يتم حفظ هذا التفضيل في حسابك.",
10547
10717
  languageLabel: "لغة الواجهة",
@@ -3,6 +3,8 @@ import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
3
3
  import { TeamPage } from "@agent-native/core/client/org";
4
4
  import {
5
5
  AccountSettingsCard,
6
+ SettingsGroup,
7
+ SettingsRow,
6
8
  SettingsTabsPage,
7
9
  useAgentSettingsTabs,
8
10
  type SettingsSearchEntry,
@@ -10,8 +12,10 @@ import {
10
12
  import { CreativeContextSettingsLink } from "@agent-native/creative-context/client";
11
13
  import { useSetPageTitle } from "@agent-native/toolkit/app-shell";
12
14
  import { useMemo } from "react";
15
+ import { toast } from "sonner";
13
16
 
14
- import { Label } from "@/components/ui/label";
17
+ import { Switch } from "@/components/ui/switch";
18
+ import { useContentPrefs } from "@/hooks/use-content-prefs";
15
19
  import { messagesByLocale } from "@/i18n-data";
16
20
 
17
21
  import changelog from "../../CHANGELOG.md?raw";
@@ -24,6 +28,7 @@ export default function SettingsRoute() {
24
28
  const t = useT();
25
29
  const agentSettingsTabs = useAgentSettingsTabs();
26
30
  useSetPageTitle(t("settings.title"));
31
+ const { prefs, loading: prefsLoading, save: savePrefs } = useContentPrefs();
27
32
 
28
33
  const generalSearchEntries = useMemo<SettingsSearchEntry[]>(
29
34
  () => [
@@ -33,6 +38,12 @@ export default function SettingsRoute() {
33
38
  keywords: "language locale translation i18n",
34
39
  hash: "language",
35
40
  },
41
+ {
42
+ id: "content-notifications",
43
+ label: t("settings.emailNotifications"),
44
+ keywords: "email notifications comments replies mentions alerts",
45
+ hash: "notifications",
46
+ },
36
47
  ],
37
48
  [t],
38
49
  );
@@ -52,23 +63,41 @@ export default function SettingsRoute() {
52
63
 
53
64
  <CreativeContextSettingsLink />
54
65
 
55
- <section
56
- id="language"
57
- className="scroll-mt-16 rounded-lg border border-border bg-card p-5"
58
- >
59
- <div className="space-y-1">
60
- <h2 className="text-base font-semibold">
61
- {t("settings.languageTitle")}
62
- </h2>
63
- <p className="text-sm leading-6 text-muted-foreground">
64
- {t("settings.languageDescription")}
65
- </p>
66
- </div>
67
- <div className="mt-4 max-w-xs space-y-1.5">
68
- <Label>{t("settings.languageLabel")}</Label>
69
- <LanguagePicker label={t("settings.languageLabel")} />
70
- </div>
71
- </section>
66
+ <SettingsGroup>
67
+ <SettingsRow
68
+ id="language"
69
+ label={t("settings.languageTitle")}
70
+ description={t("settings.languageDescription")}
71
+ control={
72
+ <div className="w-56">
73
+ <LanguagePicker label={t("settings.languageLabel")} />
74
+ </div>
75
+ }
76
+ />
77
+ <SettingsRow
78
+ id="notifications"
79
+ label={t("settings.emailNotifications")}
80
+ description={t("settings.emailNotificationsDescription")}
81
+ control={
82
+ <Switch
83
+ aria-label={t("settings.emailNotifications")}
84
+ checked={prefs.emailNotifications !== false}
85
+ disabled={prefsLoading}
86
+ onCheckedChange={(checked) => {
87
+ savePrefs({ emailNotifications: checked }).catch(
88
+ (err) => {
89
+ toast.error(
90
+ err instanceof Error
91
+ ? err.message
92
+ : t("settings.saveFailed"),
93
+ );
94
+ },
95
+ );
96
+ }}
97
+ />
98
+ }
99
+ />
100
+ </SettingsGroup>
72
101
  </main>
73
102
  }
74
103
  team={
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-30
4
+ ---
5
+
6
+ Breadcrumb menus now show only relevant page peers instead of internal system pages, with reliable keyboard selection between pages.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: fixed
3
+ date: 2026-07-30
4
+ ---
5
+
6
+ Database rows can now be removed without deleting their pages, and bulk actions only appear when you have permission.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: added
3
+ date: 2026-08-01
4
+ ---
5
+
6
+ Get an email when someone comments on, replies in, or mentions you on your document, with a new toggle in Settings
@@ -22,12 +22,12 @@ export const parityEvalScenarios: ParityEvalScenario[] = [
22
22
  "Using fixture Content database rows only, duplicate multiple selected rows and delete multiple selected rows through the action surface. Report the ordered duplicated item/document IDs, deleted IDs, and the verified remaining row count. Do not loop single-row duplicate or document delete actions for the multi-row operations.",
23
23
  successSignals: [
24
24
  "Uses duplicate-database-items once for the multi-row duplicate.",
25
- "Uses delete-database-items once for the multi-row delete.",
25
+ "Uses remove-database-items once for multi-row membership removal.",
26
26
  "Reports ordered duplicated item and document IDs.",
27
27
  "Reports deleted IDs and verified remaining row count.",
28
28
  "Does not use private provider credentials.",
29
29
  ],
30
- expectedTools: ["duplicate-database-items", "delete-database-items"],
30
+ expectedTools: ["duplicate-database-items", "remove-database-items"],
31
31
  },
32
32
  {
33
33
  id: "database-source-scope",
@@ -9,7 +9,7 @@ This generated matrix tracks whether high-value Content UI operations use the sa
9
9
  | database.lifecycle-and-trash | database | Create, soft-delete, restore, list, and inspect content databases | action-backed | `create-content-database`, `create-inline-content-database`, `delete-content-database`, `get-content-database`, `list-content-databases`, `list-trashed-content-databases`, `restore-content-database` | `app/components/editor/SlashCommandMenu.tsx`, `app/hooks/use-content-database.ts`, `app/hooks/use-documents.ts` | Database pages and database records are created, read, soft-deleted, restored, and listed. | - | - | P0 | covered | `actions/content-database-lifecycle.db.test.ts` | `database-source-scope` | - |
10
10
  | database.private-preview-drafts | database | Persist and reconcile a user's private database-page preview draft | action-backed | `get-preview-document-draft`, `update-preview-document-draft` | `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-documents.ts` | A user's private preview draft is read, saved, conflict-checked, or deleted without changing the shared database page until the normal save flow applies it. | These per-user editor-state actions are intentionally hidden from agent tools because preview drafts are a private UI recovery mechanism. | - | P1 | covered | `actions/preview-document-draft.db.test.ts` | - | - |
11
11
  | database.properties-and-view-config | database | Configure properties, values, ordering, and saved views | action-backed | `configure-document-property`, `delete-document-property`, `duplicate-document-property`, `get-content-database-personal-view`, `list-document-properties`, `reorder-document-property`, `set-document-property`, `update-content-database-personal-view`, `update-content-database-view` | `app/components/editor/DocumentProperties.tsx`, `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-document-properties.ts` | Property schemas, property values, property order, filters, sorts, grouping, hidden columns, view type, and view settings are stored. | - | - | P0 | covered | `actions/bind-content-database-source-field.db.test.ts`, `actions/content-database-source-actions.test.ts`, `actions/resync-content-database-source.db.test.ts` | `database-source-scope` | - |
12
- | database.rows | database | Add, duplicate, move, open, and delete database rows | action-backed | `add-database-item`, `delete-database-items`, `delete-document`, `duplicate-database-items`, `duplicate-database-item`, `move-database-item`, `set-document-property` | `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx` | Database row backing documents and row ordering are created, duplicated, moved, edited, and deleted. | - | - | P0 | covered | `actions/database-row-batch-actions.db.test.ts`, `parity/__tests__/database-row-batch-reliability.test.ts` | `database-bulk-row-reliability` | - |
12
+ | database.rows | database | Add, duplicate, move, open, edit, and remove database rows | action-backed | `add-database-item`, `remove-database-items`, `duplicate-database-items`, `duplicate-database-item`, `move-database-item`, `set-document-property` | `app/components/editor/DocumentDatabase.tsx`, `app/components/editor/database/DatabaseView.tsx` | Database row memberships and ordering are created, duplicated, moved, edited, and removed without deleting the backing page. | - | - | P0 | covered | `actions/database-row-batch-actions.db.test.ts`, `parity/__tests__/database-row-batch-reliability.test.ts` | `database-bulk-row-reliability` | - |
13
13
  | database.table-query-page | database | Query one constrained page while retaining database metadata | action-backed | `query-content-database-items` | `app/components/editor/database/DatabaseView.tsx`, `app/hooks/use-content-database.ts` | - | This UI-only bounded projection is intentionally hidden with agentTool: false; agents use get-content-database for the complete database contract. | - | P0 | covered | `actions/content-database-lifecycle.db.test.ts`, `app/hooks/use-content-database.test.ts` | - | - |
14
14
  | editor.agent-assist-prompts | editor | Ask AI from slash generation or comment context | client-assist | - | `app/components/editor/SlashCommandMenu.tsx`, `app/components/editor/CommentsSidebar.tsx` | No direct durable mutation; the prompt asks the agent to use document actions when it decides to write. | - | - | P1 | none | - | - | - |
15
15
  | editor.client-formatting-and-insertions | editor | Rich text formatting, selection state, slash block insertion, and copy actions | client-only-ephemeral | - | `app/components/editor/BubbleToolbar.tsx`, `app/components/editor/SlashCommandMenu.tsx`, `app/components/editor/DocumentToolbar.tsx` | - | - | - | P1 | none | - | - | - |
@@ -311,20 +311,19 @@ export const parityMatrix: ParityRow[] = [
311
311
  {
312
312
  id: "database.rows",
313
313
  surface: "database",
314
- label: "Add, duplicate, move, open, and delete database rows",
314
+ label: "Add, duplicate, move, open, edit, and remove database rows",
315
315
  uiEntrypoints: [
316
316
  "app/components/editor/DocumentDatabase.tsx",
317
317
  "app/components/editor/database/DatabaseView.tsx",
318
318
  ],
319
319
  durableEffect:
320
- "Database row backing documents and row ordering are created, duplicated, moved, edited, and deleted.",
320
+ "Database row memberships and ordering are created, duplicated, moved, edited, and removed without deleting the backing page.",
321
321
  uiImplementation:
322
- "Row controls call row actions; selected-row duplicate/delete call bounded batch actions, while bulk property edits remain a later reliability slice.",
322
+ "Row controls call row actions; selected-row duplicate/removal call bounded batch actions, while bulk property edits remain a later reliability slice.",
323
323
  status: "action-backed",
324
324
  actions: [
325
325
  "add-database-item",
326
- "delete-database-items",
327
- "delete-document",
326
+ "remove-database-items",
328
327
  "duplicate-database-items",
329
328
  "duplicate-database-item",
330
329
  "move-database-item",