@agent-native/core 0.91.2 → 0.92.1

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 (538) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +31 -0
  3. package/corpus/core/docs/content/faq.mdx +17 -0
  4. package/corpus/core/docs/content/notifications.mdx +12 -6
  5. package/corpus/core/package.json +1 -1
  6. package/corpus/core/src/agent/production-agent.ts +140 -46
  7. package/corpus/core/src/agent/tool-search.ts +71 -4
  8. package/corpus/core/src/application-state/store.ts +12 -1
  9. package/corpus/core/src/cli/index.ts +20 -0
  10. package/corpus/core/src/cli/upgrade.ts +798 -0
  11. package/corpus/core/src/client/AssistantChat.tsx +28 -15
  12. package/corpus/core/src/client/HighlightedCodeBlock.tsx +20 -3
  13. package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
  14. package/corpus/core/src/client/agent-chat-adapter.ts +68 -16
  15. package/corpus/core/src/client/chat/message-components.tsx +85 -8
  16. package/corpus/core/src/client/chat/tool-call-display.tsx +355 -144
  17. package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
  18. package/corpus/core/src/client/code-agent-chat-adapter.ts +2 -9
  19. package/corpus/core/src/client/db-admin/TableEditor.tsx +49 -0
  20. package/corpus/core/src/client/db-admin/export-utils.ts +13 -4
  21. package/corpus/core/src/client/db-admin/useAgentSync.ts +72 -0
  22. package/corpus/core/src/client/error-capture.ts +69 -7
  23. package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +5 -1
  24. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +53 -8
  25. package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +5 -1
  26. package/corpus/core/src/client/extensions/portable-extension.ts +1 -0
  27. package/corpus/core/src/client/org/OrgSwitcher.tsx +12 -9
  28. package/corpus/core/src/client/org/TeamPage.tsx +77 -71
  29. package/corpus/core/src/client/session-replay.ts +3 -97
  30. package/corpus/core/src/client/settings/SettingsPanel.tsx +738 -441
  31. package/corpus/core/src/client/settings/SettingsSection.tsx +161 -17
  32. package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
  33. package/corpus/core/src/client/sse-event-processor.ts +29 -2
  34. package/corpus/core/src/db-admin/agent-tools.ts +8 -2
  35. package/corpus/core/src/db-admin/operations.ts +116 -4
  36. package/corpus/core/src/db-admin/routes.ts +1 -0
  37. package/corpus/core/src/db-admin/types.ts +4 -0
  38. package/corpus/core/src/extensions/actions.ts +113 -5
  39. package/corpus/core/src/extensions/html-shell.ts +5 -4
  40. package/corpus/core/src/extensions/routes.ts +10 -0
  41. package/corpus/core/src/navigation/index.ts +1 -1
  42. package/corpus/core/src/notifications/channels.ts +88 -25
  43. package/corpus/core/src/notifications/registry.ts +17 -3
  44. package/corpus/core/src/notifications/types.ts +4 -1
  45. package/corpus/core/src/resources/handlers.ts +10 -8
  46. package/corpus/core/src/server/agent-chat-plugin.ts +7 -3
  47. package/corpus/core/src/server/poll.ts +293 -8
  48. package/corpus/core/src/server/request-context.ts +7 -0
  49. package/corpus/core/src/styles/agent-conversation.css +1 -1
  50. package/corpus/core/src/styles/agent-native.css +27 -0
  51. package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  52. package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  53. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  54. package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  55. package/corpus/core/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  56. package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  57. package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  58. package/corpus/core/src/templates/default/AGENTS.md +14 -5
  59. package/corpus/core/src/templates/default/package.json +2 -1
  60. package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  61. package/corpus/core/src/templates/headless/AGENTS.md +13 -3
  62. package/corpus/core/src/templates/headless/package.json +1 -0
  63. package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  64. package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  65. package/corpus/core/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  66. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  67. package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  68. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  69. package/corpus/core/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  70. package/corpus/core/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  71. package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  72. package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  73. package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
  74. package/corpus/core/src/templates/workspace-root/AGENTS.md +17 -5
  75. package/corpus/core/src/templates/workspace-root/package.json +1 -0
  76. package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +5 -0
  77. package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
  78. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
  79. package/corpus/templates/analytics/.agents/skills/security/SKILL.md +7 -0
  80. package/corpus/templates/analytics/.agents/skills/self-modifying-code/SKILL.md +20 -2
  81. package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +5 -6
  82. package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
  83. package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  84. package/corpus/templates/analytics/AGENTS.md +39 -18
  85. package/corpus/templates/analytics/actions/capture-test-error.ts +4 -0
  86. package/corpus/templates/analytics/actions/get-analytics-alert-rule-defaults.ts +23 -0
  87. package/corpus/templates/analytics/actions/get-error-issue.ts +1 -1
  88. package/corpus/templates/analytics/actions/list-analysis-revisions.ts +40 -0
  89. package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +40 -0
  90. package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +299 -0
  91. package/corpus/templates/analytics/actions/navigate.ts +4 -2
  92. package/corpus/templates/analytics/actions/restore-analysis-revision.ts +43 -0
  93. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +68 -0
  94. package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +14 -0
  95. package/corpus/templates/analytics/actions/save-monitor.ts +15 -1
  96. package/corpus/templates/analytics/actions/view-screen.ts +24 -0
  97. package/corpus/templates/analytics/app/components/analysis/AnalysisHistoryPanel.tsx +181 -0
  98. package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +184 -0
  99. package/corpus/templates/analytics/app/components/dashboard/DataTable.tsx +41 -6
  100. package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +122 -11
  101. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +22 -16
  102. package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
  103. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +27 -21
  104. package/corpus/templates/analytics/app/hooks/use-analysis-revisions.ts +43 -0
  105. package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +110 -0
  106. package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +43 -0
  107. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +8 -3
  108. package/corpus/templates/analytics/app/i18n/zh-TW.ts +64 -2
  109. package/corpus/templates/analytics/app/i18n-data.ts +783 -3
  110. package/corpus/templates/analytics/app/pages/Agents.tsx +359 -19
  111. package/corpus/templates/analytics/app/pages/Settings.tsx +3 -2
  112. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +34 -1
  113. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +28 -0
  114. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +18 -1
  115. package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +7 -10
  116. package/corpus/templates/analytics/app/pages/monitoring/MonitoringPage.tsx +8 -2
  117. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +479 -23
  118. package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +0 -9
  119. package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +11 -0
  120. package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +9 -1
  121. package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +157 -35
  122. package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +17 -2
  123. package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +4 -0
  124. package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +80 -220
  125. package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -99
  126. package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +262 -104
  127. package/corpus/templates/analytics/app/routes/team.tsx +1 -1
  128. package/corpus/templates/analytics/changelog/2026-07-08-admins-can-audit-dashboard-usage-ownership-and-cleanup-signa.md +6 -0
  129. package/corpus/templates/analytics/changelog/2026-07-08-agent-monitoring-stays-available-to-non-admins.md +6 -0
  130. package/corpus/templates/analytics/changelog/2026-07-08-alert-rules-are-easier-to-scan-expand-and-edit-from-settings.md +6 -0
  131. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-forms-remember-last-email-recipients.md +6 -0
  132. package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-rules-can-now-use-per-rule-slack-and-webhook.md +6 -0
  133. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +5 -0
  134. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-tables-keep-their-size-while-loading.md +6 -0
  135. package/corpus/templates/analytics/changelog/2026-07-08-dashboard-usage-now-counts-explorer-dashboard-traffic.md +6 -0
  136. package/corpus/templates/analytics/changelog/2026-07-08-demo-mode-session-emails-are-filtered-and-anonymized.md +6 -0
  137. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-adds-stack-traces-and-frequency-bars.md +6 -0
  138. package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-now-shows-the-latest-occurrence-message-a.md +6 -0
  139. package/corpus/templates/analytics/changelog/2026-07-08-monitoring-errors-only-show-test-action-when-empty.md +6 -0
  140. package/corpus/templates/analytics/changelog/2026-07-08-monitoring-uptime-and-errors-tabs-now-clearly-show-which-view-is-active.md +6 -0
  141. package/corpus/templates/analytics/changelog/2026-07-08-production-session-replay-now-requires-private-blob-storage-.md +6 -0
  142. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-uses-stock-rrweb-sizing-again-so-recorded.md +6 -0
  143. package/corpus/templates/analytics/changelog/2026-07-08-shared-extension-links-now-show-a-clear-message-when-you-do-.md +6 -0
  144. package/corpus/templates/analytics/changelog/2026-07-08-sidebar-dashboard-menus-now-open-above-the-dashboard-canvas.md +6 -0
  145. package/corpus/templates/analytics/changelog/2026-07-08-team-settings-show-access-controls-next-to-member-lists.md +6 -0
  146. package/corpus/templates/analytics/changelog/2026-07-08-uptime-alerting-clarifies-in-app-inbox-vs-email-and-lets-you-paste-slack-or-webhook-urls-per-monitor.md +6 -0
  147. package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-use-a-10-second-request-timeout-by-defau.md +6 -0
  148. package/corpus/templates/analytics/docs/uptime-monitoring.md +13 -11
  149. package/corpus/templates/analytics/server/db/schema-monitoring.ts +5 -1
  150. package/corpus/templates/analytics/server/db/schema.ts +56 -0
  151. package/corpus/templates/analytics/server/lib/analytics-alerts.ts +92 -0
  152. package/corpus/templates/analytics/server/lib/dashboards-store.ts +334 -5
  153. package/corpus/templates/analytics/server/lib/error-capture.ts +231 -36
  154. package/corpus/templates/analytics/server/lib/session-replay.ts +114 -8
  155. package/corpus/templates/analytics/server/lib/uptime-monitors.ts +65 -16
  156. package/corpus/templates/analytics/server/plugins/db.ts +122 -2
  157. package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +1 -0
  158. package/corpus/templates/assets/.agents/skills/actions/SKILL.md +5 -0
  159. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
  160. package/corpus/templates/assets/.agents/skills/security/SKILL.md +7 -0
  161. package/corpus/templates/assets/.agents/skills/self-modifying-code/SKILL.md +20 -2
  162. package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
  163. package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  164. package/corpus/templates/assets/AGENTS.md +4 -0
  165. package/corpus/templates/assets/app/routes/settings.tsx +1 -1
  166. package/corpus/templates/assets/app/routes/team.tsx +1 -1
  167. package/corpus/templates/brain/.agents/skills/actions/SKILL.md +5 -0
  168. package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
  169. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
  170. package/corpus/templates/brain/.agents/skills/security/SKILL.md +7 -0
  171. package/corpus/templates/brain/.agents/skills/self-modifying-code/SKILL.md +20 -2
  172. package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  173. package/corpus/templates/brain/AGENTS.md +4 -0
  174. package/corpus/templates/brain/app/routes/team.tsx +1 -1
  175. package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +5 -0
  176. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
  177. package/corpus/templates/calendar/.agents/skills/security/SKILL.md +7 -0
  178. package/corpus/templates/calendar/.agents/skills/self-modifying-code/SKILL.md +20 -2
  179. package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
  180. package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  181. package/corpus/templates/calendar/AGENTS.md +4 -0
  182. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +11 -2
  183. package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -8
  184. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +7 -1
  185. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -2
  186. package/corpus/templates/calendar/app/lib/popover-click-guard.ts +48 -4
  187. package/corpus/templates/calendar/app/pages/Settings.tsx +1 -1
  188. package/corpus/templates/calendar/app/routes/_app.team.tsx +1 -1
  189. package/corpus/templates/calendar/changelog/2026-07-08-clicking-empty-calendar-space-closes-an-open-event-popover-b.md +6 -0
  190. package/corpus/templates/chat/.agents/skills/actions/SKILL.md +5 -0
  191. package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
  192. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  193. package/corpus/templates/chat/.agents/skills/security/SKILL.md +7 -0
  194. package/corpus/templates/chat/.agents/skills/self-modifying-code/SKILL.md +20 -2
  195. package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  196. package/corpus/templates/chat/AGENTS.md +4 -0
  197. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +1 -1
  198. package/corpus/templates/chat/app/routes/settings.tsx +2 -2
  199. package/corpus/templates/chat/app/routes/team.tsx +1 -1
  200. package/corpus/templates/clips/.agents/skills/actions/SKILL.md +5 -0
  201. package/corpus/templates/clips/.agents/skills/security/SKILL.md +7 -0
  202. package/corpus/templates/clips/.agents/skills/self-modifying-code/SKILL.md +20 -2
  203. package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  204. package/corpus/templates/clips/AGENTS.md +4 -0
  205. package/corpus/templates/clips/actions/finalize-recording.ts +9 -3
  206. package/corpus/templates/clips/actions/set-thumbnail.ts +11 -2
  207. package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +1 -7
  208. package/corpus/templates/clips/app/components/player/player-controls.tsx +21 -13
  209. package/corpus/templates/clips/app/components/player/video-player.tsx +30 -75
  210. package/corpus/templates/clips/app/i18n/ar-SA.ts +6 -5
  211. package/corpus/templates/clips/app/i18n/de-DE.ts +6 -6
  212. package/corpus/templates/clips/app/i18n/en-US.ts +6 -5
  213. package/corpus/templates/clips/app/i18n/es-ES.ts +6 -5
  214. package/corpus/templates/clips/app/i18n/fr-FR.ts +6 -6
  215. package/corpus/templates/clips/app/i18n/hi-IN.ts +6 -5
  216. package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -5
  217. package/corpus/templates/clips/app/i18n/ko-KR.ts +6 -5
  218. package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -5
  219. package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -5
  220. package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -5
  221. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +51 -118
  222. package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-notes-stay-active-from-tray-and-shortcut-controls.md +6 -0
  223. package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-popovers-can-start-notes-and-join-the-meetin.md +6 -0
  224. package/corpus/templates/clips/changelog/2026-07-08-hosted-clip-uploads-now-clear-failed-buffered-chunks.md +6 -0
  225. package/corpus/templates/clips/changelog/2026-07-08-hosted-recording-uploads-now-avoid-sql-chunk-storage.md +6 -0
  226. package/corpus/templates/clips/changelog/2026-07-08-meeting-notes-keep-their-recording-state-when-the-desktop.md +6 -0
  227. package/corpus/templates/clips/changelog/2026-07-08-meeting-recaps-now-keep-summaries-action-items-and-transcrip.md +6 -0
  228. package/corpus/templates/clips/changelog/2026-07-08-meeting-reminder-dropdowns-now-expand-fully-instead-of-being.md +6 -0
  229. package/corpus/templates/clips/changelog/2026-07-08-video-playback-controls-now-match-loom-style-5-second-skips-.md +6 -0
  230. package/corpus/templates/clips/desktop/src/app.tsx +123 -3
  231. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +15 -1
  232. package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -0
  233. package/corpus/templates/clips/desktop/src/styles.css +23 -1
  234. package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +1 -3
  235. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +40 -6
  236. package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -2
  237. package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +3 -5
  238. package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +23 -19
  239. package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +3 -3
  240. package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +0 -1
  241. package/corpus/templates/clips/desktop/src-tauri/src/state.rs +5 -0
  242. package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -6
  243. package/corpus/templates/clips/server/lib/recording-upload-state.ts +63 -0
  244. package/corpus/templates/clips/server/lib/video-storage.ts +4 -0
  245. package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +19 -13
  246. package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +40 -1
  247. package/corpus/templates/content/.agents/skills/actions/SKILL.md +5 -0
  248. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
  249. package/corpus/templates/content/.agents/skills/security/SKILL.md +7 -0
  250. package/corpus/templates/content/.agents/skills/self-modifying-code/SKILL.md +20 -2
  251. package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
  252. package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  253. package/corpus/templates/content/AGENTS.md +4 -0
  254. package/corpus/templates/content/actions/_batch-utils.ts +8 -0
  255. package/corpus/templates/content/actions/_builder-cms-read-client.ts +7 -5
  256. package/corpus/templates/content/actions/_database-source-utils.ts +776 -319
  257. package/corpus/templates/content/actions/_database-utils.ts +6 -1
  258. package/corpus/templates/content/actions/_property-utils.ts +168 -0
  259. package/corpus/templates/content/actions/add-content-database-source-field-property.ts +19 -12
  260. package/corpus/templates/content/actions/bind-content-database-source-field.ts +19 -12
  261. package/corpus/templates/content/actions/delete-document.ts +9 -13
  262. package/corpus/templates/content/actions/refresh-content-database-source.ts +5 -5
  263. package/corpus/templates/content/app/components/editor/body-hydration.ts +35 -11
  264. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +47 -5
  265. package/corpus/templates/content/app/hooks/use-documents.ts +8 -2
  266. package/corpus/templates/content/app/routes/_app.settings.tsx +2 -2
  267. package/corpus/templates/content/app/routes/_app.team.tsx +1 -1
  268. package/corpus/templates/content/changelog/2026-07-08-builder-source-sync-now-completes-reliably-on-hosted-databases.md +6 -0
  269. package/corpus/templates/content/changelog/2026-07-08-fixed-builder-database-sync-so-large-sources-continue-past-t.md +6 -0
  270. package/corpus/templates/content/server/plugins/db.ts +19 -0
  271. package/corpus/templates/design/.agents/skills/actions/SKILL.md +5 -0
  272. package/corpus/templates/design/.agents/skills/security/SKILL.md +7 -0
  273. package/corpus/templates/design/.agents/skills/self-modifying-code/SKILL.md +20 -2
  274. package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  275. package/corpus/templates/design/AGENTS.md +4 -0
  276. package/corpus/templates/design/actions/take-design-screenshot.ts +12 -9
  277. package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -13
  278. package/corpus/templates/design/app/routes/team.tsx +1 -1
  279. package/corpus/templates/design/changelog/2026-07-08-local-images-added-to-designs-now-upload-to-file-storage-ins.md +6 -0
  280. package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +5 -0
  281. package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +7 -0
  282. package/corpus/templates/dispatch/.agents/skills/self-modifying-code/SKILL.md +20 -2
  283. package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  284. package/corpus/templates/dispatch/AGENTS.md +4 -0
  285. package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +1 -1
  286. package/corpus/templates/dispatch/app/routes/settings.tsx +2 -2
  287. package/corpus/templates/dispatch/app/routes/team.tsx +1 -1
  288. package/corpus/templates/forms/.agents/skills/actions/SKILL.md +5 -0
  289. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
  290. package/corpus/templates/forms/.agents/skills/security/SKILL.md +7 -0
  291. package/corpus/templates/forms/.agents/skills/self-modifying-code/SKILL.md +20 -2
  292. package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
  293. package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  294. package/corpus/templates/forms/AGENTS.md +4 -0
  295. package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -2
  296. package/corpus/templates/forms/app/routes/_app.team.tsx +1 -1
  297. package/corpus/templates/forms/shared/navigation.ts +1 -1
  298. package/corpus/templates/macros/.agents/skills/security/SKILL.md +7 -0
  299. package/corpus/templates/macros/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  300. package/corpus/templates/macros/AGENTS.md +4 -0
  301. package/corpus/templates/macros/app/routes/settings.tsx +2 -2
  302. package/corpus/templates/macros/app/routes/team.tsx +1 -1
  303. package/corpus/templates/mail/.agents/skills/actions/SKILL.md +5 -0
  304. package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +1 -1
  305. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
  306. package/corpus/templates/mail/.agents/skills/security/SKILL.md +7 -0
  307. package/corpus/templates/mail/.agents/skills/self-modifying-code/SKILL.md +20 -2
  308. package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
  309. package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  310. package/corpus/templates/mail/AGENTS.md +4 -0
  311. package/corpus/templates/mail/changelog/2026-07-08-mail-attachments-in-hosted-environments-now-require-file-sto.md +6 -0
  312. package/corpus/templates/mail/server/handlers/media.ts +26 -1
  313. package/corpus/templates/mail/server/lib/outgoing-email.ts +24 -1
  314. package/corpus/templates/mail/server/lib/upload-store.ts +2 -1
  315. package/corpus/templates/plan/.agents/skills/actions/SKILL.md +5 -0
  316. package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
  317. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
  318. package/corpus/templates/plan/.agents/skills/security/SKILL.md +7 -0
  319. package/corpus/templates/plan/.agents/skills/self-modifying-code/SKILL.md +20 -2
  320. package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  321. package/corpus/templates/plan/AGENTS.md +4 -0
  322. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +1 -1
  323. package/corpus/templates/plan/app/routes/settings.tsx +2 -2
  324. package/corpus/templates/plan/app/routes/team.tsx +1 -1
  325. package/corpus/templates/plan/changelog/2026-07-08-hosted-plan-images-now-require-connected-storage.md +6 -0
  326. package/corpus/templates/plan/server/lib/plan-assets.ts +33 -4
  327. package/corpus/templates/slides/.agents/skills/actions/SKILL.md +5 -0
  328. package/corpus/templates/slides/.agents/skills/security/SKILL.md +7 -0
  329. package/corpus/templates/slides/.agents/skills/self-modifying-code/SKILL.md +20 -2
  330. package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  331. package/corpus/templates/slides/AGENTS.md +4 -0
  332. package/corpus/templates/slides/actions/generate-image-api.ts +15 -3
  333. package/corpus/templates/slides/app/routes/settings.tsx +2 -2
  334. package/corpus/templates/slides/app/routes/team.tsx +1 -1
  335. package/corpus/templates/slides/changelog/2026-07-08-generated-slide-images-now-return-hosted-file-storage-urls-i.md +6 -0
  336. package/corpus/templates/slides/shared/api.ts +1 -1
  337. package/corpus/templates/videos/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  338. package/corpus/templates/voice/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  339. package/dist/agent/production-agent.d.ts +5 -1
  340. package/dist/agent/production-agent.d.ts.map +1 -1
  341. package/dist/agent/production-agent.js +112 -42
  342. package/dist/agent/production-agent.js.map +1 -1
  343. package/dist/agent/tool-search.d.ts +2 -0
  344. package/dist/agent/tool-search.d.ts.map +1 -1
  345. package/dist/agent/tool-search.js +60 -4
  346. package/dist/agent/tool-search.js.map +1 -1
  347. package/dist/application-state/store.d.ts.map +1 -1
  348. package/dist/application-state/store.js +8 -2
  349. package/dist/application-state/store.js.map +1 -1
  350. package/dist/cli/index.js +19 -0
  351. package/dist/cli/index.js.map +1 -1
  352. package/dist/cli/upgrade.d.ts +100 -0
  353. package/dist/cli/upgrade.d.ts.map +1 -0
  354. package/dist/cli/upgrade.js +678 -0
  355. package/dist/cli/upgrade.js.map +1 -0
  356. package/dist/client/AssistantChat.d.ts.map +1 -1
  357. package/dist/client/AssistantChat.js +25 -14
  358. package/dist/client/AssistantChat.js.map +1 -1
  359. package/dist/client/HighlightedCodeBlock.d.ts +2 -0
  360. package/dist/client/HighlightedCodeBlock.d.ts.map +1 -1
  361. package/dist/client/HighlightedCodeBlock.js +10 -1
  362. package/dist/client/HighlightedCodeBlock.js.map +1 -1
  363. package/dist/client/PoweredByBadge.d.ts +1 -1
  364. package/dist/client/PoweredByBadge.d.ts.map +1 -1
  365. package/dist/client/PoweredByBadge.js +3 -9
  366. package/dist/client/PoweredByBadge.js.map +1 -1
  367. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  368. package/dist/client/agent-chat-adapter.js +60 -13
  369. package/dist/client/agent-chat-adapter.js.map +1 -1
  370. package/dist/client/chat/message-components.d.ts.map +1 -1
  371. package/dist/client/chat/message-components.js +61 -8
  372. package/dist/client/chat/message-components.js.map +1 -1
  373. package/dist/client/chat/tool-call-display.d.ts +12 -0
  374. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  375. package/dist/client/chat/tool-call-display.js +136 -42
  376. package/dist/client/chat/tool-call-display.js.map +1 -1
  377. package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
  378. package/dist/client/chat/widgets/DataTableWidget.js +19 -2
  379. package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
  380. package/dist/client/code-agent-chat-adapter.js +2 -9
  381. package/dist/client/code-agent-chat-adapter.js.map +1 -1
  382. package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
  383. package/dist/client/db-admin/TableEditor.js +19 -2
  384. package/dist/client/db-admin/TableEditor.js.map +1 -1
  385. package/dist/client/db-admin/export-utils.d.ts +2 -0
  386. package/dist/client/db-admin/export-utils.d.ts.map +1 -1
  387. package/dist/client/db-admin/export-utils.js +11 -3
  388. package/dist/client/db-admin/export-utils.js.map +1 -1
  389. package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
  390. package/dist/client/db-admin/useAgentSync.js +63 -0
  391. package/dist/client/db-admin/useAgentSync.js.map +1 -1
  392. package/dist/client/error-capture.d.ts.map +1 -1
  393. package/dist/client/error-capture.js +41 -7
  394. package/dist/client/error-capture.js.map +1 -1
  395. package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
  396. package/dist/client/extensions/EmbeddedExtension.js +3 -1
  397. package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
  398. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  399. package/dist/client/extensions/ExtensionViewer.js +32 -5
  400. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  401. package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
  402. package/dist/client/extensions/InlineExtensionFrame.js +3 -1
  403. package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
  404. package/dist/client/extensions/portable-extension.d.ts.map +1 -1
  405. package/dist/client/extensions/portable-extension.js +1 -0
  406. package/dist/client/extensions/portable-extension.js.map +1 -1
  407. package/dist/client/org/OrgSwitcher.d.ts +1 -1
  408. package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
  409. package/dist/client/org/OrgSwitcher.js +11 -6
  410. package/dist/client/org/OrgSwitcher.js.map +1 -1
  411. package/dist/client/org/TeamPage.d.ts.map +1 -1
  412. package/dist/client/org/TeamPage.js +5 -5
  413. package/dist/client/org/TeamPage.js.map +1 -1
  414. package/dist/client/session-replay.d.ts +0 -8
  415. package/dist/client/session-replay.d.ts.map +1 -1
  416. package/dist/client/session-replay.js +3 -80
  417. package/dist/client/session-replay.js.map +1 -1
  418. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  419. package/dist/client/settings/SettingsPanel.js +89 -33
  420. package/dist/client/settings/SettingsPanel.js.map +1 -1
  421. package/dist/client/settings/SettingsSection.d.ts +19 -4
  422. package/dist/client/settings/SettingsSection.d.ts.map +1 -1
  423. package/dist/client/settings/SettingsSection.js +33 -4
  424. package/dist/client/settings/SettingsSection.js.map +1 -1
  425. package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
  426. package/dist/client/settings/SettingsTabsPage.js +21 -10
  427. package/dist/client/settings/SettingsTabsPage.js.map +1 -1
  428. package/dist/client/sse-event-processor.d.ts +9 -0
  429. package/dist/client/sse-event-processor.d.ts.map +1 -1
  430. package/dist/client/sse-event-processor.js +20 -2
  431. package/dist/client/sse-event-processor.js.map +1 -1
  432. package/dist/db-admin/agent-tools.d.ts.map +1 -1
  433. package/dist/db-admin/agent-tools.js +7 -2
  434. package/dist/db-admin/agent-tools.js.map +1 -1
  435. package/dist/db-admin/operations.d.ts.map +1 -1
  436. package/dist/db-admin/operations.js +90 -4
  437. package/dist/db-admin/operations.js.map +1 -1
  438. package/dist/db-admin/routes.d.ts.map +1 -1
  439. package/dist/db-admin/routes.js +1 -0
  440. package/dist/db-admin/routes.js.map +1 -1
  441. package/dist/db-admin/types.d.ts +4 -0
  442. package/dist/db-admin/types.d.ts.map +1 -1
  443. package/dist/db-admin/types.js.map +1 -1
  444. package/dist/extensions/actions.d.ts.map +1 -1
  445. package/dist/extensions/actions.js +85 -5
  446. package/dist/extensions/actions.js.map +1 -1
  447. package/dist/extensions/html-shell.d.ts +5 -4
  448. package/dist/extensions/html-shell.d.ts.map +1 -1
  449. package/dist/extensions/html-shell.js.map +1 -1
  450. package/dist/extensions/routes.d.ts.map +1 -1
  451. package/dist/extensions/routes.js +8 -0
  452. package/dist/extensions/routes.js.map +1 -1
  453. package/dist/navigation/index.d.ts +1 -1
  454. package/dist/navigation/index.d.ts.map +1 -1
  455. package/dist/navigation/index.js +1 -1
  456. package/dist/navigation/index.js.map +1 -1
  457. package/dist/notifications/channels.d.ts +8 -3
  458. package/dist/notifications/channels.d.ts.map +1 -1
  459. package/dist/notifications/channels.js +61 -22
  460. package/dist/notifications/channels.js.map +1 -1
  461. package/dist/notifications/registry.d.ts.map +1 -1
  462. package/dist/notifications/registry.js +14 -3
  463. package/dist/notifications/registry.js.map +1 -1
  464. package/dist/notifications/types.d.ts +4 -1
  465. package/dist/notifications/types.d.ts.map +1 -1
  466. package/dist/notifications/types.js.map +1 -1
  467. package/dist/resources/handlers.d.ts +5 -0
  468. package/dist/resources/handlers.d.ts.map +1 -1
  469. package/dist/resources/handlers.js +9 -8
  470. package/dist/resources/handlers.js.map +1 -1
  471. package/dist/server/agent-chat-plugin.d.ts +5 -1
  472. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  473. package/dist/server/agent-chat-plugin.js +2 -2
  474. package/dist/server/agent-chat-plugin.js.map +1 -1
  475. package/dist/server/agent-engine-api-key-route.d.ts +1 -1
  476. package/dist/server/poll.d.ts +12 -4
  477. package/dist/server/poll.d.ts.map +1 -1
  478. package/dist/server/poll.js +236 -9
  479. package/dist/server/poll.js.map +1 -1
  480. package/dist/server/request-context.d.ts +7 -0
  481. package/dist/server/request-context.d.ts.map +1 -1
  482. package/dist/server/request-context.js.map +1 -1
  483. package/dist/styles/agent-conversation.css +1 -1
  484. package/dist/styles/agent-native.css +27 -0
  485. package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -0
  486. package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  487. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  488. package/dist/templates/default/.agents/skills/security/SKILL.md +7 -0
  489. package/dist/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  490. package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  491. package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  492. package/dist/templates/default/AGENTS.md +14 -5
  493. package/dist/templates/default/package.json +2 -1
  494. package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  495. package/dist/templates/headless/AGENTS.md +13 -3
  496. package/dist/templates/headless/package.json +1 -0
  497. package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  498. package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  499. package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  500. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  501. package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  502. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  503. package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  504. package/dist/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  505. package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  506. package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  507. package/dist/templates/workspace-core/AGENTS.md +7 -1
  508. package/dist/templates/workspace-root/AGENTS.md +17 -5
  509. package/dist/templates/workspace-root/package.json +1 -0
  510. package/docs/content/faq.mdx +17 -0
  511. package/docs/content/notifications.mdx +12 -6
  512. package/package.json +2 -2
  513. package/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
  514. package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
  515. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  516. package/src/templates/default/.agents/skills/security/SKILL.md +7 -0
  517. package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +20 -2
  518. package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
  519. package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  520. package/src/templates/default/AGENTS.md +14 -5
  521. package/src/templates/default/package.json +2 -1
  522. package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  523. package/src/templates/headless/AGENTS.md +13 -3
  524. package/src/templates/headless/package.json +1 -0
  525. package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
  526. package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
  527. package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
  528. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
  529. package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
  530. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  531. package/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
  532. package/src/templates/workspace-core/.agents/skills/self-modifying-code/SKILL.md +20 -2
  533. package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
  534. package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
  535. package/src/templates/workspace-core/AGENTS.md +7 -1
  536. package/src/templates/workspace-root/AGENTS.md +17 -5
  537. package/src/templates/workspace-root/package.json +1 -0
  538. package/corpus/templates/analytics/changelog/2026-07-08-session-replay-clamps-ultra-wide-viewports-while-keeping-the.md +0 -6
@@ -51,6 +51,13 @@ export default defineAction({
51
51
 
52
52
  The legacy `parameters:` field (plain JSON Schema) has no runtime validation — do not use it for new code.
53
53
 
54
+ ## Large Payloads
55
+
56
+ Do not accept or persist unbounded base64/file blobs through actions, SQL writes,
57
+ or `application_state`. Route uploads through the file-upload provider and store
58
+ references. This prevents database bloat, slow hot paths, and accidental secret
59
+ or customer-data embedding inside binary payloads.
60
+
54
61
  ## SQL Injection
55
62
 
56
63
  Never concatenate user input into SQL strings. Use Drizzle ORM's query builder (always safe) or parameterized queries:
@@ -28,7 +28,19 @@ Not all modifications are equal. Use this to decide what level of care is needed
28
28
  | 1: Data | Files in `data/` | JSON state, generated content, markdown | Nothing — these are routine |
29
29
  | 2: Source | App code | Components, routes, styles, scripts | Run `pnpm typecheck && pnpm lint` |
30
30
  | 3: Config | Project config | `package.json`, `tsconfig.json`, `vite.config.*` | Ask for explicit approval first |
31
- | 4: Off limits | Secrets and framework | `.env`, `@agent-native/core` internals | Never modify these |
31
+ | 4: Off limits | Secrets and framework | `.env`, `@agent-native/*` packages & overrides | Never modify these |
32
+
33
+ Tier 4 includes **all** of the following — not only editing package source:
34
+
35
+ - Files under `node_modules/@agent-native/*` (core, dispatch, scheduling, …)
36
+ - `pnpm.overrides`, `overrides`, `resolutions`, or `patchedDependencies` that
37
+ target any `@agent-native/*` package
38
+ - Local patches, vendored copies, or invented "dispatch/core behavior"
39
+ shims meant to paper over a version skew or failed upgrade
40
+
41
+ When an older branch needs current packages, use **`agent-native upgrade`**
42
+ (see the `upgrade-agent-native` skill). If upgrade or typecheck fails, fix
43
+ **app** code or stop and ask — do not patch the framework.
32
44
 
33
45
  ## Git Checkpoint Pattern
34
46
 
@@ -74,13 +86,19 @@ inline strings in components.
74
86
  ## Don't
75
87
 
76
88
  - Don't modify `.env` files or files containing secrets
77
- - Don't modify `@agent-native/core` package internals
89
+ - Don't modify `@agent-native/core`, `@agent-native/dispatch`, or other
90
+ `@agent-native/*` package internals (including under `node_modules`)
91
+ - Don't add `pnpm.overrides` / `patchedDependencies` / `resolutions` for
92
+ `@agent-native/*` to "make the app run" after a version bump
93
+ - Don't invent local dispatch/core behavior overrides when upgrade fails —
94
+ run `npx @agent-native/core@latest upgrade`, then fix app-level errors only
78
95
  - Don't modify `.agents/skills/` or `AGENTS.md` unless explicitly requested
79
96
  - Don't skip the typecheck/lint step after editing source code
80
97
  - Don't make source changes without a git checkpoint to roll back to
81
98
 
82
99
  ## Related Skills
83
100
 
101
+ - **upgrade-agent-native** — supported path to bring an older app/workspace current
84
102
  - **storing-data** — Tier 1 modifications (data files) are the safest and most common
85
103
  - **actions** — The agent can create or modify actions to add new capabilities
86
104
  - **delegate-to-agent** — Self-modification requests come through the agent chat
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: upgrade-agent-native
3
+ description: >-
4
+ Bring an older Agent Native app or workspace current. Use when updating
5
+ @agent-native/core, fixing a broken upgrade, or when tempted to patch or
6
+ override core/dispatch packages to make an old branch run.
7
+ scope: dev
8
+ metadata:
9
+ internal: true
10
+ ---
11
+
12
+ # Upgrade Agent Native
13
+
14
+ ## Rule
15
+
16
+ When an older Agent Native app/branch needs to run on current packages, use
17
+ `agent-native upgrade`. Never "fix" upgrade breakage with
18
+ `pnpm.overrides`, `patchedDependencies`, `resolutions`, local patches, or
19
+ edits under `node_modules/@agent-native/*` — especially not against
20
+ `@agent-native/core` or `@agent-native/dispatch`.
21
+
22
+ ## Why
23
+
24
+ Agents often respond to a failed core bump by inventing framework patches and
25
+ dispatch behavior overrides. That hides the real app-level break, drifts from
26
+ upstream, and makes the next upgrade worse. The supported path is bump →
27
+ install → refresh scaffold skills → verify, then fix **app** code only.
28
+
29
+ ## How
30
+
31
+ 1. **Doctor first (optional but recommended)**
32
+
33
+ ```bash
34
+ npx @agent-native/core@latest upgrade check
35
+ ```
36
+
37
+ This reports framework overrides/patches and pending `@agent-native/*`
38
+ bumps. If overrides/patches are present, remove them before continuing.
39
+
40
+ 2. **Run the upgrade**
41
+
42
+ ```bash
43
+ npx @agent-native/core@latest upgrade
44
+ ```
45
+
46
+ Or from an already-installed CLI: `pnpm exec agent-native upgrade` /
47
+ `agent-native upgrade`.
48
+
49
+ What it does:
50
+
51
+ - Blocks (unless `--force`) when `@agent-native/*` overrides/patches exist
52
+ - Rewrites non-local `@agent-native/*` dependency pins to `latest`
53
+ - Runs the package manager install
54
+ - Runs `skills update scaffold --project`
55
+ - Runs `typecheck` when the project has that script
56
+
57
+ 3. **If upgrade or typecheck fails**
58
+
59
+ - Read the concrete error
60
+ - Fix **app** source, actions, config, or env — not framework packages
61
+ - Re-run `agent-native upgrade` or `pnpm typecheck`
62
+ - Stop and ask the user if you cannot fix the app-level error
63
+
64
+ 4. **Dry-run / partial runs**
65
+
66
+ ```bash
67
+ agent-native upgrade --dry-run
68
+ agent-native upgrade --skip-verify
69
+ agent-native upgrade --skip-install # package.json bumps only
70
+ ```
71
+
72
+ ## Don't
73
+
74
+ - Don't add `pnpm.overrides`, `overrides`, `resolutions`, or
75
+ `patchedDependencies` for any `@agent-native/*` package
76
+ - Don't edit `node_modules/@agent-native/core` or
77
+ `node_modules/@agent-native/dispatch`
78
+ - Don't invent local "dispatch behavior" shims to paper over version skew
79
+ - Don't keep iterating with more framework patches after a failed install
80
+ - Don't skip `skills update scaffold --project` after a core bump (the
81
+ upgrade command does this for you)
82
+
83
+ ## Related Skills
84
+
85
+ - **self-modifying-code** — Tier 4: framework packages are off limits
86
+ - **agent-native-docs** — version-matched docs after the bump
87
+ - **portability** — keep app code provider-agnostic across upgrades
@@ -9,6 +9,10 @@ Detailed media, meeting, dictation, editing, and sharing rules live in
9
9
 
10
10
  ## Core Rules
11
11
 
12
+ - Store large file/blob payloads in configured file/blob storage, not SQL: no
13
+ base64, `data:` URLs, images, video/audio, PDFs, ZIPs, screenshots,
14
+ thumbnails, or replay chunks in app tables, `application_state`, `settings`,
15
+ or `resources`; persist URLs, ids, or handles instead.
12
16
  - Never hardcode API keys, tokens, webhook URLs, signing secrets, private Builder/internal data, customer data, or credential-looking literals. Use secrets/OAuth/runtime configuration and obvious placeholders in examples.
13
17
  - Use actions for recording metadata, transcripts, cleanup, summaries, chapters,
14
18
  comments, spaces/folders, meetings, and sharing. Do not bypass access helpers.
@@ -483,8 +483,9 @@ export default defineAction({
483
483
  // server-side half of the 70 GB memory leak — each failed finalize
484
484
  // orphaned one recording's worth of chunks, and with base64 overhead
485
485
  // a 30-minute recording is ~1.5 GB per corpse. Missing storage is the
486
- // exception: those chunks stay recoverable until the user connects a
487
- // provider and this action runs again.
486
+ // exception: local-dev storage gaps can keep chunks recoverable until the
487
+ // user connects a provider and this action runs again. Hosted SQL must
488
+ // never retain scratch video blobs.
488
489
  let chunkKeysToPurge: string[] = [];
489
490
  try {
490
491
  const [existing] = await db
@@ -1123,7 +1124,12 @@ export default defineAction({
1123
1124
  try {
1124
1125
  await verifyServedMediaUrl(upload.url);
1125
1126
  } catch (err) {
1126
- chunkKeysToPurge = [];
1127
+ if (!requiresConfiguredVideoStorage()) {
1128
+ // Local dev can keep scratch chunks so the user can retry after fixing
1129
+ // a local storage/server issue. Hosted SQL must not keep video blobs in
1130
+ // application_state after a provider returned an unservable URL.
1131
+ chunkKeysToPurge = [];
1132
+ }
1127
1133
  const failureReason = err instanceof Error ? err.message : String(err);
1128
1134
  await failStoredButUnservableRecording({
1129
1135
  id,
@@ -28,9 +28,12 @@ import { z } from "zod";
28
28
  import { parseEdits, serializeEdits } from "../app/lib/timestamp-mapping.js";
29
29
  import { getDb, schema } from "../server/db/index.js";
30
30
  import { getCurrentOwnerEmail } from "../server/lib/recordings.js";
31
+ import { requiresConfiguredVideoStorage } from "../server/lib/video-storage.js";
31
32
  import { assertNativeRecordingMedia } from "./lib/native-media.js";
32
33
 
33
34
  const MAX_CAS_ATTEMPTS = 5;
35
+ const THUMBNAIL_STORAGE_REQUIRED_REASON =
36
+ "Thumbnail storage is not connected yet. Connect Builder.io or configure S3-compatible storage to save thumbnails.";
34
37
 
35
38
  function decodeDataUrl(dataUrl: string): { bytes: Uint8Array; mime: string } {
36
39
  const match = /^data:([^;]+);base64,(.+)$/.exec(dataUrl);
@@ -118,7 +121,10 @@ export default defineAction({
118
121
  ownerEmail,
119
122
  recordAsset: false,
120
123
  });
121
- const url = uploaded?.url ?? args.dataUrl; // fall back to inline storage
124
+ if (!uploaded?.url && requiresConfiguredVideoStorage()) {
125
+ throw new Error(THUMBNAIL_STORAGE_REQUIRED_REASON);
126
+ }
127
+ const url = uploaded?.url ?? args.dataUrl; // Local SQL fallback only.
122
128
  basePatch.thumbnailUrl = url;
123
129
  thumbnailPatch = { kind: "url", value: url };
124
130
  } else if (args.kind === "frame") {
@@ -137,7 +143,10 @@ export default defineAction({
137
143
  ownerEmail,
138
144
  recordAsset: false,
139
145
  });
140
- const url = uploaded?.url ?? args.dataUrl;
146
+ if (!uploaded?.url && requiresConfiguredVideoStorage()) {
147
+ throw new Error(THUMBNAIL_STORAGE_REQUIRED_REASON);
148
+ }
149
+ const url = uploaded?.url ?? args.dataUrl; // Local SQL fallback only.
141
150
  basePatch.animatedThumbnailUrl = url;
142
151
  basePatch.animatedThumbnailEnabled = true;
143
152
  gifPatch = {
@@ -1,5 +1,4 @@
1
1
  import { useT } from "@agent-native/core/client";
2
- import { IconWand } from "@tabler/icons-react";
3
2
  import { useEffect, useLayoutEffect, useRef, useState } from "react";
4
3
 
5
4
  import { Textarea } from "@/components/ui/textarea";
@@ -279,10 +278,5 @@ function AiBulletsBlock({
279
278
  /* -------------------------------------------------------------------------- */
280
279
 
281
280
  function AiTabIndicator() {
282
- return (
283
- <div className="flex items-center gap-1 text-[10px] uppercase tracking-wide text-muted-foreground/60 opacity-0 group-hover:opacity-100 transition-opacity">
284
- <IconWand className="h-3 w-3" />
285
- <span>AI</span>
286
- </div>
287
- );
281
+ return null;
288
282
  }
@@ -36,7 +36,7 @@ import { cn } from "@/lib/utils";
36
36
  import { Scrubber, msToClock } from "./scrubber";
37
37
 
38
38
  export const SPEED_OPTIONS = PLAYBACK_SPEED_OPTIONS;
39
- export const PLAYER_SEEK_STEP_MS = 15_000;
39
+ export const PLAYER_SEEK_STEP_MS = 5_000;
40
40
 
41
41
  export interface PlayerControlsProps {
42
42
  isPlaying: boolean;
@@ -120,14 +120,6 @@ export function PlayerControls(props: PlayerControlsProps) {
120
120
  />
121
121
 
122
122
  <div className="flex min-w-0 items-center gap-1.5 text-white">
123
- <IconBtn
124
- onClick={() => onSeekRelative(-PLAYER_SEEK_STEP_MS)}
125
- tooltip="Back 15 seconds"
126
- ariaLabel="Back 15 seconds"
127
- >
128
- <SkipIcon direction="back" />
129
- </IconBtn>
130
-
131
123
  <IconBtn
132
124
  onClick={onPlayPause}
133
125
  tooltip={isPlaying ? "Pause (K)" : "Play (K)"}
@@ -140,15 +132,24 @@ export function PlayerControls(props: PlayerControlsProps) {
140
132
  )}
141
133
  </IconBtn>
142
134
 
135
+ <IconBtn
136
+ onClick={() => onSeekRelative(-PLAYER_SEEK_STEP_MS)}
137
+ tooltip="Back 5 seconds"
138
+ ariaLabel="Back 5 seconds"
139
+ >
140
+ <SkipIcon direction="back" />
141
+ </IconBtn>
142
+
143
143
  <IconBtn
144
144
  onClick={() => onSeekRelative(PLAYER_SEEK_STEP_MS)}
145
- tooltip="Forward 15 seconds"
146
- ariaLabel="Forward 15 seconds"
145
+ tooltip="Forward 5 seconds"
146
+ ariaLabel="Forward 5 seconds"
147
147
  >
148
148
  <SkipIcon direction="forward" />
149
149
  </IconBtn>
150
150
 
151
151
  <div
152
+ data-player-ui
152
153
  className="relative flex shrink-0 items-center"
153
154
  onMouseEnter={() => setVolumePopoverOpen(true)}
154
155
  onMouseLeave={() => setVolumePopoverOpen(false)}
@@ -158,6 +159,7 @@ export function PlayerControls(props: PlayerControlsProps) {
158
159
  <Popover open={volumePopoverOpen} onOpenChange={setVolumePopoverOpen}>
159
160
  <PopoverTrigger asChild>
160
161
  <button
162
+ data-player-ui
161
163
  type="button"
162
164
  onClick={onToggleMute}
163
165
  className="flex h-8 w-8 shrink-0 items-center justify-center rounded-md text-white hover:bg-white/10"
@@ -171,6 +173,7 @@ export function PlayerControls(props: PlayerControlsProps) {
171
173
  </button>
172
174
  </PopoverTrigger>
173
175
  <PopoverContent
176
+ data-player-ui
174
177
  side="top"
175
178
  align="center"
176
179
  sideOffset={8}
@@ -219,7 +222,10 @@ export function PlayerControls(props: PlayerControlsProps) {
219
222
  <Tooltip>
220
223
  <TooltipTrigger asChild>
221
224
  <DropdownMenuTrigger asChild>
222
- <button className="h-8 shrink-0 rounded-md px-2 text-xs font-medium tabular-nums hover:bg-white/10">
225
+ <button
226
+ data-player-ui
227
+ className="h-8 shrink-0 rounded-md px-2 text-xs font-medium tabular-nums hover:bg-white/10"
228
+ >
223
229
  {speed}x
224
230
  </button>
225
231
  </DropdownMenuTrigger>
@@ -227,6 +233,7 @@ export function PlayerControls(props: PlayerControlsProps) {
227
233
  <TooltipContent>{t("playerControls.playbackSpeed")}</TooltipContent>
228
234
  </Tooltip>
229
235
  <DropdownMenuContent
236
+ data-player-ui
230
237
  align="end"
231
238
  side="top"
232
239
  className="min-w-[90px]"
@@ -298,6 +305,7 @@ function IconBtn({
298
305
  <Tooltip>
299
306
  <TooltipTrigger asChild>
300
307
  <button
308
+ data-player-ui
301
309
  onClick={onClick}
302
310
  aria-label={ariaLabel ?? tooltip}
303
311
  className={cn(
@@ -319,7 +327,7 @@ function SkipIcon({ direction }: { direction: "back" | "forward" }) {
319
327
  <IconPlayerSkipForward
320
328
  className={cn("h-5 w-5", direction === "back" && "rotate-180")}
321
329
  />
322
- <span className="absolute text-[7px] font-bold leading-none">15</span>
330
+ <span className="absolute text-[7px] font-bold leading-none">5</span>
323
331
  </span>
324
332
  );
325
333
  }
@@ -8,11 +8,7 @@ import {
8
8
  LOOM_START_MS_QUERY_PARAM,
9
9
  loomEmbedUrlWithTimestamp,
10
10
  } from "@shared/loom";
11
- import {
12
- IconBolt,
13
- IconPlayerPlay,
14
- IconPlayerSkipForward,
15
- } from "@tabler/icons-react";
11
+ import { IconBolt, IconPlayerPlay } from "@tabler/icons-react";
16
12
  import {
17
13
  forwardRef,
18
14
  useCallback,
@@ -51,11 +47,7 @@ import { cn } from "@/lib/utils";
51
47
 
52
48
  import { CaptionsOverlay } from "./captions-overlay";
53
49
  import { CtaButton } from "./cta-button";
54
- import {
55
- PLAYER_SEEK_STEP_MS,
56
- PlayerControls,
57
- SPEED_OPTIONS,
58
- } from "./player-controls";
50
+ import { PlayerControls, SPEED_OPTIONS } from "./player-controls";
59
51
 
60
52
  function resolveLocalUrl(url: string | null | undefined): string | undefined {
61
53
  if (!url) return undefined;
@@ -571,6 +563,17 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
571
563
  requestPlay();
572
564
  }, [isPlaying, pauseVideo, requestPlay]);
573
565
 
566
+ const activateVideoSurface = useCallback(() => {
567
+ const v = videoRef.current;
568
+ if (!v) return;
569
+ if (!v.paused || isPlaying) {
570
+ pauseVideo();
571
+ } else {
572
+ requestPlay();
573
+ }
574
+ bumpControls();
575
+ }, [bumpControls, isPlaying, pauseVideo, requestPlay]);
576
+
574
577
  const handlePlayerPointerDown = useCallback(
575
578
  (e: React.PointerEvent<HTMLDivElement>) => {
576
579
  if (
@@ -607,10 +610,9 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
607
610
 
608
611
  e.preventDefault();
609
612
  suppressNextClickRef.current = true;
610
- togglePlayback();
611
- bumpControls();
613
+ activateVideoSurface();
612
614
  },
613
- [bumpControls, isLoomEmbed, togglePlayback],
615
+ [activateVideoSurface, isLoomEmbed],
614
616
  );
615
617
 
616
618
  const handlePlayerPointerCancel = useCallback(
@@ -1109,10 +1111,11 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
1109
1111
  suppressNextClickRef.current = false;
1110
1112
  return;
1111
1113
  }
1112
- // Clicking the video toggles play but not when clicking controls.
1114
+ // Clicking the video surface toggles playback, but actual controls
1115
+ // keep their own behavior.
1113
1116
  if (isPlayerUiTarget(e.target)) return;
1114
1117
  if (isLoomEmbed) return;
1115
- togglePlayback();
1118
+ activateVideoSurface();
1116
1119
  }}
1117
1120
  >
1118
1121
  {isLoomEmbed && loomIframeSrc ? (
@@ -1397,7 +1400,6 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
1397
1400
  requestPlay();
1398
1401
  }}
1399
1402
  onSpeedChange={applySpeed}
1400
- onSeekRelative={seekByMs}
1401
1403
  menuPortalContainer={fullscreenMenuContainer}
1402
1404
  />
1403
1405
  ) : null}
@@ -1442,7 +1444,6 @@ export const VideoPlayer = forwardRef<VideoPlayerHandle, VideoPlayerProps>(
1442
1444
  {/* Controls */}
1443
1445
  {!hideChrome && !isLoomEmbed ? (
1444
1446
  <div
1445
- data-player-ui
1446
1447
  className={cn(
1447
1448
  "absolute inset-x-0 bottom-0 z-20 transition-opacity duration-200",
1448
1449
  showControls ? "opacity-100" : "opacity-0 pointer-events-none",
@@ -1511,7 +1512,6 @@ function CenterPlaybackOverlay({
1511
1512
  playError,
1512
1513
  onPlay,
1513
1514
  onSpeedChange,
1514
- onSeekRelative,
1515
1515
  menuPortalContainer,
1516
1516
  }: {
1517
1517
  mode: "loading" | "ready";
@@ -1521,7 +1521,6 @@ function CenterPlaybackOverlay({
1521
1521
  playError: string | null;
1522
1522
  onPlay: () => void;
1523
1523
  onSpeedChange: (rate: number) => void;
1524
- onSeekRelative: (deltaMs: number) => void;
1525
1524
  menuPortalContainer?: HTMLElement | null;
1526
1525
  }) {
1527
1526
  const t = useT();
@@ -1546,30 +1545,18 @@ function CenterPlaybackOverlay({
1546
1545
  </div>
1547
1546
  ) : (
1548
1547
  <>
1549
- <div className="flex items-center gap-[clamp(0.75rem,4cqw,1.5rem)]">
1550
- <CenterSeekButton
1551
- direction="back"
1552
- ariaLabel="Back 15 seconds"
1553
- onClick={() => onSeekRelative(-PLAYER_SEEK_STEP_MS)}
1554
- />
1555
- <button
1556
- data-player-ui
1557
- type="button"
1558
- aria-label={t("videoPlayer.playClip")}
1559
- onClick={(e) => {
1560
- e.stopPropagation();
1561
- onPlay();
1562
- }}
1563
- className="pointer-events-auto flex h-[clamp(3rem,13cqw,6rem)] w-[clamp(3rem,13cqw,6rem)] items-center justify-center rounded-full bg-white text-black shadow-2xl ring-1 ring-white/35 transition-transform duration-150 hover:scale-105 hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-black"
1564
- >
1565
- <IconPlayerPlay className="ml-[6%] h-[clamp(1.5rem,6.5cqw,3rem)] w-[clamp(1.5rem,6.5cqw,3rem)] fill-current" />
1566
- </button>
1567
- <CenterSeekButton
1568
- direction="forward"
1569
- ariaLabel="Forward 15 seconds"
1570
- onClick={() => onSeekRelative(PLAYER_SEEK_STEP_MS)}
1571
- />
1572
- </div>
1548
+ <button
1549
+ data-player-ui
1550
+ type="button"
1551
+ aria-label={t("videoPlayer.playClip")}
1552
+ onClick={(e) => {
1553
+ e.stopPropagation();
1554
+ onPlay();
1555
+ }}
1556
+ className="pointer-events-auto flex h-[clamp(3rem,13cqw,6rem)] w-[clamp(3rem,13cqw,6rem)] items-center justify-center rounded-full bg-white text-black shadow-2xl ring-1 ring-white/35 transition-transform duration-150 hover:scale-105 hover:bg-white focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-black"
1557
+ >
1558
+ <IconPlayerPlay className="ml-[6%] h-[clamp(1.5rem,6.5cqw,3rem)] w-[clamp(1.5rem,6.5cqw,3rem)] fill-current" />
1559
+ </button>
1573
1560
 
1574
1561
  <div
1575
1562
  data-player-ui
@@ -1634,38 +1621,6 @@ function CenterPlaybackOverlay({
1634
1621
  );
1635
1622
  }
1636
1623
 
1637
- function CenterSeekButton({
1638
- direction,
1639
- ariaLabel,
1640
- onClick,
1641
- }: {
1642
- direction: "back" | "forward";
1643
- ariaLabel: string;
1644
- onClick: () => void;
1645
- }) {
1646
- return (
1647
- <button
1648
- data-player-ui
1649
- type="button"
1650
- aria-label={ariaLabel}
1651
- onClick={(e) => {
1652
- e.stopPropagation();
1653
- onClick();
1654
- }}
1655
- className="pointer-events-auto flex h-[clamp(2.5rem,9cqw,4rem)] w-[clamp(2.5rem,9cqw,4rem)] items-center justify-center rounded-full bg-black/70 text-white shadow-xl ring-1 ring-white/20 backdrop-blur-md transition-transform duration-150 hover:scale-105 hover:bg-black/80 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-black"
1656
- >
1657
- <span className="relative flex h-[clamp(1.25rem,4.5cqw,2rem)] w-[clamp(1.25rem,4.5cqw,2rem)] items-center justify-center">
1658
- <IconPlayerSkipForward
1659
- className={cn("h-full w-full", direction === "back" && "rotate-180")}
1660
- />
1661
- <span className="absolute text-[clamp(0.45rem,1.8cqw,0.7rem)] font-bold leading-none">
1662
- 15
1663
- </span>
1664
- </span>
1665
- </button>
1666
- );
1667
- }
1668
-
1669
1624
  /**
1670
1625
  * Clamp a millisecond seek target to a value the browser will actually accept.
1671
1626
  *
@@ -307,7 +307,7 @@ const messages = {
307
307
  unassigned: "غير معين",
308
308
  them: "هم",
309
309
  me: "أنا",
310
- regeneratingNotes: "تجديد الملاحظات - يتم الاحتفاظ بالملاحظات الخاصة بك",
310
+ regeneratingNotes: "جارٍ إعادة إنشاء الملخص",
311
311
  meetingRemoved: "تمت إزالة الاجتماع",
312
312
  couldNotRemoveMeeting: "تعذرت إزالة الاجتماع",
313
313
  couldNotLoadMeeting: "تعذر تحميل هذا الاجتماع.",
@@ -315,8 +315,8 @@ const messages = {
315
315
  couldNotCopyTranscript: "تعذر نسخ النص",
316
316
  allMeetings: "جميع الاجتماعات",
317
317
  live: "يعيش",
318
- generatingNotesInline: "جارٍ إنشاء الملاحظات…",
319
- regenerateNotes: "إعادة إنشاء الملاحظات",
318
+ generatingNotesInline: "جارٍ إنشاء الملخص…",
319
+ regenerateNotes: "إعادة إنشاء الملخص",
320
320
  share: "يشارك",
321
321
  meetingOptions: "خيارات الاجتماع",
322
322
  removeMeeting: "إزالة الاجتماع",
@@ -329,12 +329,13 @@ const messages = {
329
329
  desktopHint:
330
330
  "لبدء الملاحظات، افتح Clips Desktop من شريط القوائم واختر Start Meeting Notes، أو انقر على Start notes عند ظهور التذكير. يلتقط Clips الميكروفون وصوت النظام ويكتب النص هنا.",
331
331
  getDesktopApp: "احصل على تطبيق سطح المكتب",
332
- generateNotesFailed: "تعذر إنشاء الملاحظات. حاول ثانية.",
332
+ generateNotesFailed: "تعذر إنشاء الملخص. حاول ثانية.",
333
333
  attendee_one: "الحضور {{count}}",
334
334
  attendee_other: "الحضور {{count}}",
335
335
  joinCall: "الانضمام إلى المكالمة",
336
336
  myNotes: "ملاحظاتي",
337
337
  aiNotes: "تلاحظ منظمة العفو الدولية",
338
+ summary: "الملخص",
338
339
  actionItems: "عناصر العمل",
339
340
  working: "عمل…",
340
341
  noActionItems:
@@ -907,7 +908,7 @@ const messages = {
907
908
  unavailable: "هذا الاجتماع خاص أو لم يعد متاحًا.",
908
909
  tryClips: "جرّب Clips",
909
910
  attendees: "{{count}} حاضرون",
910
- noAiNotes: "لم يتم إنشاء ملاحظات الذكاء الاصطناعي لهذا الاجتماع بعد.",
911
+ noAiNotes: "لم يتم إنشاء ملخص لهذا الاجتماع بعد.",
911
912
  summary: "الملخص",
912
913
  keyPoints: "النقاط الرئيسية",
913
914
  actionItems: "عناصر العمل",
@@ -323,8 +323,7 @@ const messages = {
323
323
  unassigned: "Nicht zugewiesen",
324
324
  them: "Ihnen",
325
325
  me: "Mich",
326
- regeneratingNotes:
327
- "Notizen neu generieren – Ihre eigenen Notizen bleiben erhalten",
326
+ regeneratingNotes: "Zusammenfassung wird neu generiert",
328
327
  meetingRemoved: "Besprechung entfernt",
329
328
  couldNotRemoveMeeting: "Das Meeting konnte nicht entfernt werden",
330
329
  couldNotLoadMeeting: "Dieses Meeting konnte nicht geladen werden.",
@@ -332,8 +331,8 @@ const messages = {
332
331
  couldNotCopyTranscript: "Das Transkript konnte nicht kopiert werden",
333
332
  allMeetings: "Alle Treffen",
334
333
  live: "Übersetzt: Live",
335
- generatingNotesInline: "Notizen erstellen…",
336
- regenerateNotes: "Notizen neu generieren",
334
+ generatingNotesInline: "Zusammenfassung wird erstellt…",
335
+ regenerateNotes: "Zusammenfassung neu generieren",
337
336
  share: "Aktie",
338
337
  meetingOptions: "Besprechungsmöglichkeiten",
339
338
  removeMeeting: "Besprechung entfernen",
@@ -347,12 +346,13 @@ const messages = {
347
346
  "Um Notizen zu starten, öffnen Sie Clips Desktop über die Menüleiste und wählen Sie Start Meeting Notes, oder klicken Sie auf Start notes, wenn die Erinnerung erscheint. Clips erfasst Mikrofon und Systemaudio und schreibt das Transkript hier.",
348
347
  getDesktopApp: "Holen Sie sich die Desktop-App",
349
348
  generateNotesFailed:
350
- "Notizen konnten nicht generiert werden. Versuchen Sie es erneut.",
349
+ "Zusammenfassung konnte nicht generiert werden. Versuchen Sie es erneut.",
351
350
  attendee_one: "{{count}}-Teilnehmer",
352
351
  attendee_other: "{{count}}-Teilnehmer",
353
352
  joinCall: "Nehmen Sie am Anruf teil",
354
353
  myNotes: "Meine Notizen",
355
354
  aiNotes: "KI-Notizen",
355
+ summary: "Zusammenfassung",
356
356
  actionItems: "Aktionselemente",
357
357
  working: "Arbeiten…",
358
358
  noActionItems:
@@ -933,7 +933,7 @@ Alle sichtbaren Änderungen für Clips-Nutzer werden hier dokumentiert. Du kanns
933
933
  unavailable: "Dieses Meeting ist privat oder nicht mehr verfügbar.",
934
934
  tryClips: "Clips ausprobieren",
935
935
  attendees: "{{count}} Teilnehmer",
936
- noAiNotes: "Für dieses Meeting wurden noch keine KI-Notizen generiert.",
936
+ noAiNotes: "Für dieses Meeting wurde noch keine Zusammenfassung generiert.",
937
937
  summary: "Zusammenfassung",
938
938
  keyPoints: "Kernpunkte",
939
939
  actionItems: "Aufgaben",
@@ -309,7 +309,7 @@ const messages = {
309
309
  unassigned: "Unassigned",
310
310
  them: "Them",
311
311
  me: "Me",
312
- regeneratingNotes: "Regenerating notes — your own notes are kept",
312
+ regeneratingNotes: "Regenerating summary",
313
313
  meetingRemoved: "Meeting removed",
314
314
  couldNotRemoveMeeting: "Couldn't remove meeting",
315
315
  couldNotLoadMeeting: "Couldn't load this meeting.",
@@ -317,8 +317,8 @@ const messages = {
317
317
  couldNotCopyTranscript: "Couldn't copy transcript",
318
318
  allMeetings: "All meetings",
319
319
  live: "Live",
320
- generatingNotesInline: "Generating notes…",
321
- regenerateNotes: "Regenerate notes",
320
+ generatingNotesInline: "Generating summary…",
321
+ regenerateNotes: "Regenerate summary",
322
322
  share: "Share",
323
323
  meetingOptions: "Meeting options",
324
324
  removeMeeting: "Remove meeting",
@@ -331,12 +331,13 @@ const messages = {
331
331
  desktopHint:
332
332
  "To start notes, open Clips Desktop from the menu bar and choose Start Meeting Notes, or click Start notes when the reminder appears. Clips captures mic + system audio and writes the transcript here.",
333
333
  getDesktopApp: "Get desktop app",
334
- generateNotesFailed: "Couldn't generate notes. Try again.",
334
+ generateNotesFailed: "Couldn't generate summary. Try again.",
335
335
  attendee_one: "{{count}} attendee",
336
336
  attendee_other: "{{count}} attendees",
337
337
  joinCall: "Join call",
338
338
  myNotes: "My notes",
339
339
  aiNotes: "AI notes",
340
+ summary: "Summary",
340
341
  actionItems: "Action items",
341
342
  working: "Working…",
342
343
  noActionItems:
@@ -902,7 +903,7 @@ All notable user-facing changes to Clips are documented here. Open it any time f
902
903
  unavailable: "This meeting is private or no longer available.",
903
904
  tryClips: "Try Clips",
904
905
  attendees: "{{count}} attendees",
905
- noAiNotes: "AI notes haven't been generated yet for this meeting.",
906
+ noAiNotes: "A summary hasn't been generated yet for this meeting.",
906
907
  summary: "Summary",
907
908
  keyPoints: "Key points",
908
909
  actionItems: "Action items",