@agent-native/core 0.130.1 → 0.131.2

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 (909) hide show
  1. package/corpus/README.md +2 -2
  2. package/corpus/core/CHANGELOG.md +57 -0
  3. package/corpus/core/docs/content/agent-surfaces.mdx +4 -4
  4. package/corpus/core/docs/content/automations.mdx +61 -12
  5. package/corpus/core/docs/content/deployment.mdx +11 -4
  6. package/corpus/core/docs/content/extensions.mdx +39 -33
  7. package/corpus/core/docs/content/recurring-jobs.mdx +41 -19
  8. package/corpus/core/docs/content/template-dispatch-operations.mdx +19 -7
  9. package/corpus/core/package.json +3 -1
  10. package/corpus/core/src/action.ts +55 -0
  11. package/corpus/core/src/agent/engine/builder-engine.ts +8 -4
  12. package/corpus/core/src/agent/production-agent.ts +175 -100
  13. package/corpus/core/src/agent/tool-search.ts +36 -0
  14. package/corpus/core/src/automations/service.ts +506 -0
  15. package/corpus/core/src/browser-context/index.ts +392 -0
  16. package/corpus/core/src/client/AgentPanel.tsx +2 -1
  17. package/corpus/core/src/client/FeedbackButton.tsx +37 -4
  18. package/corpus/core/src/client/MultiTabAssistantChat.tsx +21 -0
  19. package/corpus/core/src/client/agent-chat.ts +31 -3
  20. package/corpus/core/src/client/agent-page/AgentJobsTab.tsx +438 -310
  21. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +4 -4
  22. package/corpus/core/src/client/agent-page/use-jobs.ts +7 -0
  23. package/corpus/core/src/client/analytics-session.ts +13 -0
  24. package/corpus/core/src/client/extensions/ExtensionViewer.tsx +67 -0
  25. package/corpus/core/src/client/settings/AutomationsSection.tsx +27 -499
  26. package/corpus/core/src/client/settings/SettingsPanel.tsx +32 -11
  27. package/corpus/core/src/client/settings/index.ts +2 -0
  28. package/corpus/core/src/client/use-agent-chat.ts +35 -3
  29. package/corpus/core/src/client/use-chat-threads.ts +8 -25
  30. package/corpus/core/src/deploy/build.ts +2 -0
  31. package/corpus/core/src/deploy/workspace-deploy.ts +2 -0
  32. package/corpus/core/src/extensions/actions.ts +115 -3
  33. package/corpus/core/src/extensions/fetch-tool.ts +11 -0
  34. package/corpus/core/src/extensions/routes.ts +16 -1
  35. package/corpus/core/src/extensions/web-content.ts +96 -1
  36. package/corpus/core/src/integrations/computer-supervision.ts +33 -1
  37. package/corpus/core/src/integrations/index.ts +6 -0
  38. package/corpus/core/src/integrations/integration-durable-dispatch-config.ts +10 -0
  39. package/corpus/core/src/integrations/integration-durable-dispatch.ts +4 -0
  40. package/corpus/core/src/integrations/plugin.ts +94 -41
  41. package/corpus/core/src/integrations/remote-browser-actions.ts +621 -0
  42. package/corpus/core/src/jobs/actions/list-recurring-jobs.ts +5 -7
  43. package/corpus/core/src/jobs/actions/manage-recurring-job.ts +3 -7
  44. package/corpus/core/src/jobs/background-automation-runner.ts +437 -0
  45. package/corpus/core/src/jobs/frontmatter.ts +308 -0
  46. package/corpus/core/src/jobs/scheduler.ts +89 -598
  47. package/corpus/core/src/jobs/tools.ts +22 -3
  48. package/corpus/core/src/localization/default-messages.ts +45 -45
  49. package/corpus/core/src/mcp-client/index.ts +6 -0
  50. package/corpus/core/src/notifications/actions.ts +5 -0
  51. package/corpus/core/src/progress/actions.ts +5 -0
  52. package/corpus/core/src/provider-api/actions/github-repo-files.ts +11 -0
  53. package/corpus/core/src/provider-api/actions/provider-api.ts +13 -0
  54. package/corpus/core/src/server/action-discovery.ts +7 -0
  55. package/corpus/core/src/server/agent-chat/browser-team-tools.ts +126 -3
  56. package/corpus/core/src/server/agent-chat/framework-prompts.ts +7 -11
  57. package/corpus/core/src/server/agent-chat/plugin-options.ts +3 -3
  58. package/corpus/core/src/server/agent-chat/script-entries.ts +52 -1
  59. package/corpus/core/src/server/agent-chat-plugin.ts +25 -5
  60. package/corpus/core/src/server/attribution.ts +22 -0
  61. package/corpus/core/src/server/auth.ts +20 -6
  62. package/corpus/core/src/server/better-auth-instance.ts +10 -2
  63. package/corpus/core/src/server/core-routes-plugin.ts +10 -1
  64. package/corpus/core/src/server/csrf.ts +25 -0
  65. package/corpus/core/src/server/email-template.ts +43 -13
  66. package/corpus/core/src/server/google-oauth.ts +21 -1
  67. package/corpus/core/src/server/onboarding-html.ts +18 -0
  68. package/corpus/core/src/server/prompts/framework-core-compact.ts +3 -3
  69. package/corpus/core/src/server/prompts/framework-core.ts +3 -3
  70. package/corpus/core/src/server/prompts/shared-rules.ts +3 -3
  71. package/corpus/core/src/settings/index.ts +1 -0
  72. package/corpus/core/src/shared/analytics-anonymous-id.ts +35 -0
  73. package/corpus/core/src/sharing/actions/share-resource.ts +26 -4
  74. package/corpus/core/src/sharing/index.ts +1 -0
  75. package/corpus/core/src/sharing/registry.ts +23 -0
  76. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  77. package/corpus/core/src/templates/default/app/i18n/ar-SA.ts +26 -0
  78. package/corpus/core/src/templates/default/app/i18n/de-DE.ts +28 -0
  79. package/corpus/core/src/templates/default/app/i18n/en-US.ts +27 -0
  80. package/corpus/core/src/templates/default/app/i18n/es-ES.ts +28 -0
  81. package/corpus/core/src/templates/default/app/i18n/fr-FR.ts +28 -0
  82. package/corpus/core/src/templates/default/app/i18n/hi-IN.ts +25 -0
  83. package/corpus/core/src/templates/default/app/i18n/ja-JP.ts +27 -0
  84. package/corpus/core/src/templates/default/app/i18n/ko-KR.ts +27 -0
  85. package/corpus/core/src/templates/default/app/i18n/pt-BR.ts +27 -0
  86. package/corpus/core/src/templates/default/app/i18n/zh-CN.ts +24 -0
  87. package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +24 -0
  88. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  89. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  90. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  91. package/corpus/core/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  92. package/corpus/core/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  93. package/corpus/core/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  94. package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  95. package/corpus/core/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  96. package/corpus/core/src/tracking/providers.ts +1 -0
  97. package/corpus/core/src/tracking/registry.ts +2 -1
  98. package/corpus/core/src/tracking/types.ts +1 -0
  99. package/corpus/core/src/triggers/actions/list-automations.ts +43 -44
  100. package/corpus/core/src/triggers/actions/manage-automation.ts +17 -48
  101. package/corpus/core/src/triggers/actions.ts +218 -127
  102. package/corpus/core/src/triggers/dispatcher.ts +181 -367
  103. package/corpus/core/src/triggers/routes.ts +84 -27
  104. package/corpus/core/src/triggers/types.ts +9 -23
  105. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  106. package/corpus/templates/analytics/actions/install-dashboard-template.ts +13 -4
  107. package/corpus/templates/analytics/actions/rename-dashboard.ts +8 -3
  108. package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +8 -3
  109. package/corpus/templates/analytics/actions/update-dashboard.ts +22 -5
  110. package/corpus/templates/analytics/app/components/dashboard/DashboardPanelSkeleton.tsx +7 -1
  111. package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +1 -82
  112. package/corpus/templates/analytics/app/components/layout/NewDashboardDialog.tsx +4 -4
  113. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +23 -13
  114. package/corpus/templates/analytics/app/global.css +21 -0
  115. package/corpus/templates/analytics/app/i18n-data.ts +165 -101
  116. package/corpus/templates/analytics/app/lib/custom-block-promotion.ts +62 -0
  117. package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +17 -2
  118. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/PanelEditorDialog.tsx +3 -1
  119. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +77 -12
  120. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/dashboard-save-queue.ts +34 -0
  121. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +42 -26
  122. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/types.ts +15 -0
  123. package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +1 -1
  124. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  125. package/corpus/templates/analytics/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-dashboard.md +6 -0
  126. package/corpus/templates/analytics/changelog/2026-07-29-custom-dashboard-blocks-now-identify-one-off-agent-patches-a.md +6 -0
  127. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-deletions-now-save-in-order-so-removed-rows-.md +6 -0
  128. package/corpus/templates/analytics/changelog/2026-07-29-dashboard-chart-loaders-are-easier-to-see-and-animate-more-s.md +6 -0
  129. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-now-query-connected-analytics-sources-while-ke.md +6 -0
  130. package/corpus/templates/analytics/changelog/2026-07-29-plan-mode-can-use-clips-as-read-only-prompt-context.md +6 -0
  131. package/corpus/templates/analytics/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  132. package/corpus/templates/analytics/changelog/2026-07-29-signup-entry-pages-now-show-the-first-page-viewed-before-eac.md +6 -0
  133. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +26 -1
  134. package/corpus/templates/analytics/server/lib/agent-chat-plan-mode.ts +0 -33
  135. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +13 -3
  136. package/corpus/templates/analytics/server/lib/dashboard-catalog.ts +9 -1
  137. package/corpus/templates/analytics/server/lib/first-party-analytics.ts +44 -1
  138. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +96 -16
  139. package/corpus/templates/analytics/server/plugins/agent-chat.ts +18 -27
  140. package/corpus/templates/analytics/server/plugins/core-routes.ts +1 -0
  141. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  142. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +4 -8
  143. package/corpus/templates/assets/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  144. package/corpus/templates/assets/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-the-workspace.md +6 -0
  145. package/corpus/templates/assets/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  146. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  147. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +3 -7
  148. package/corpus/templates/brain/app/root.tsx +0 -3
  149. package/corpus/templates/brain/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  150. package/corpus/templates/brain/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-brain.md +6 -0
  151. package/corpus/templates/brain/changelog/2026-07-29-extensions-are-no-longer-shown-as-a-default-command-menu-des.md +6 -0
  152. package/corpus/templates/brain/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  153. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  154. package/corpus/templates/calendar/.agents/skills/event-management/SKILL.md +25 -5
  155. package/corpus/templates/calendar/AGENTS.md +5 -0
  156. package/corpus/templates/calendar/actions/create-event.ts +43 -13
  157. package/corpus/templates/calendar/actions/event-action-helpers.ts +131 -1
  158. package/corpus/templates/calendar/actions/manage-event-draft.ts +65 -2
  159. package/corpus/templates/calendar/app/components/calendar/CreateEventDialog.tsx +437 -258
  160. package/corpus/templates/calendar/app/components/calendar/DayView.tsx +19 -3
  161. package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +24 -0
  162. package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +15 -2
  163. package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -5
  164. package/corpus/templates/calendar/app/hooks/use-events.ts +44 -5
  165. package/corpus/templates/calendar/app/i18n-data.ts +50 -0
  166. package/corpus/templates/calendar/app/lib/all-day-layout.ts +9 -2
  167. package/corpus/templates/calendar/app/lib/event-form-initialization.ts +4 -8
  168. package/corpus/templates/calendar/app/lib/event-form-utils.ts +30 -8
  169. package/corpus/templates/calendar/app/lib/location-suggestions.ts +36 -0
  170. package/corpus/templates/calendar/app/lib/out-of-office.ts +87 -1
  171. package/corpus/templates/calendar/app/pages/CalendarView.tsx +68 -13
  172. package/corpus/templates/calendar/changelog/2026-07-26-out-of-office-events-now-default-to-full-days-with-a-ready.md +6 -0
  173. package/corpus/templates/calendar/changelog/2026-07-29-recent-calendar-locations-now-appear-as-address-suggestions-.md +6 -0
  174. package/corpus/templates/calendar/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  175. package/corpus/templates/calendar/server/lib/find-time.ts +29 -5
  176. package/corpus/templates/calendar/shared/api.ts +2 -0
  177. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  178. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  179. package/corpus/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  180. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  181. package/corpus/templates/clips/app/components/editor/editor-toolbar.tsx +3 -1
  182. package/corpus/templates/clips/app/components/library/library-layout.tsx +2 -6
  183. package/corpus/templates/clips/app/components/meetings/day-header.tsx +1 -1
  184. package/corpus/templates/clips/app/components/meetings/transcript-bubbles.tsx +1 -22
  185. package/corpus/templates/clips/app/components/workspace/branding-editor.tsx +26 -1
  186. package/corpus/templates/clips/app/components/workspace/organization-identity-card.tsx +107 -0
  187. package/corpus/templates/clips/app/i18n/en-US.ts +3 -4
  188. package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +0 -10
  189. package/corpus/templates/clips/app/routes/_app.settings._index.tsx +23 -51
  190. package/corpus/templates/clips/app/routes/share.meeting.$meetingId.tsx +1 -8
  191. package/corpus/templates/clips/changelog/2026-07-29-clearing-all-recording-edits-no-longer-leaves-the-editor-unr.md +6 -0
  192. package/corpus/templates/clips/changelog/2026-07-29-clip-share-emails-now-open-with-who-shared-the-clip-add-a-su.md +6 -0
  193. package/corpus/templates/clips/changelog/2026-07-29-finished-meeting-pills-now-have-a-clear-close-button.md +6 -0
  194. package/corpus/templates/clips/changelog/2026-07-29-fixed-system-audio-recordings-picking-up-your-microphone-in-.md +6 -0
  195. package/corpus/templates/clips/changelog/2026-07-29-meeting-cards-no-longer-flicker-or-disappear-when-hovered-in.md +6 -0
  196. package/corpus/templates/clips/changelog/2026-07-29-organization-name-logo-brand-color-and-default-visibility-no.md +6 -0
  197. package/corpus/templates/clips/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  198. package/corpus/templates/clips/changelog/2026-07-29-the-desktop-camera-preview-now-closes-after-a-recording-fin.md +6 -0
  199. package/corpus/templates/clips/changelog/2026-07-29-transcript-lines-on-the-meeting-page-no-longer-jump-to-the-r.md +6 -0
  200. package/corpus/templates/clips/changelog/2026-07-29-when-a-meeting-wraps-up-the-recording-pill-now-shows-a-green.md +6 -0
  201. package/corpus/templates/clips/desktop/src/app.tsx +14 -15
  202. package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +6 -3
  203. package/corpus/templates/clips/desktop/src/lib/bubble-session.ts +11 -0
  204. package/corpus/templates/clips/desktop/src/lib/recorder.ts +9 -4
  205. package/corpus/templates/clips/desktop/src/lib/transcription-capture.ts +11 -0
  206. package/corpus/templates/clips/desktop/src/overlays/recording-pill.tsx +112 -32
  207. package/corpus/templates/clips/desktop/src/styles.css +42 -2
  208. package/corpus/templates/clips/server/db/index.ts +6 -0
  209. package/corpus/templates/clips/server/jobs/transactional-emails.ts +47 -23
  210. package/corpus/templates/clips/server/lib/share-email-hero.ts +33 -0
  211. package/corpus/templates/clips/server/lib/transactional-email-store.ts +16 -6
  212. package/corpus/templates/clips/shared/clips-ai-prefs.ts +0 -1
  213. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  214. package/corpus/templates/content/.agents/skills/content-product-development/SKILL.md +103 -0
  215. package/corpus/templates/content/.agents/skills/content-product-development/references/verification.md +57 -0
  216. package/corpus/templates/content/AGENTS.md +2 -0
  217. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -6
  218. package/corpus/templates/content/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  219. package/corpus/templates/content/docs/product/README.md +115 -0
  220. package/corpus/templates/content/docs/product/architecture.md +98 -0
  221. package/corpus/templates/content/docs/product/capabilities/content.access.page-database.md +76 -0
  222. package/corpus/templates/content/docs/product/capabilities/content.access.row-private.md +75 -0
  223. package/corpus/templates/content/docs/product/capabilities/content.access.safe-aggregate.md +75 -0
  224. package/corpus/templates/content/docs/product/capabilities/content.access.visibility-closure.md +79 -0
  225. package/corpus/templates/content/docs/product/capabilities/content.action.button.md +67 -0
  226. package/corpus/templates/content/docs/product/capabilities/content.agent.action-parity.md +73 -0
  227. package/corpus/templates/content/docs/product/capabilities/content.agent.audience-safe.md +91 -0
  228. package/corpus/templates/content/docs/product/capabilities/content.agent.automation.md +67 -0
  229. package/corpus/templates/content/docs/product/capabilities/content.agent.expression-authoring.md +71 -0
  230. package/corpus/templates/content/docs/product/capabilities/content.agent.presence.md +103 -0
  231. package/corpus/templates/content/docs/product/capabilities/content.agent.resource-consent.md +90 -0
  232. package/corpus/templates/content/docs/product/capabilities/content.agent.skill-catalog.md +67 -0
  233. package/corpus/templates/content/docs/product/capabilities/content.api.cms.md +70 -0
  234. package/corpus/templates/content/docs/product/capabilities/content.author.code.md +71 -0
  235. package/corpus/templates/content/docs/product/capabilities/content.author.document-editor.md +71 -0
  236. package/corpus/templates/content/docs/product/capabilities/content.author.footnotes.md +71 -0
  237. package/corpus/templates/content/docs/product/capabilities/content.author.math.md +71 -0
  238. package/corpus/templates/content/docs/product/capabilities/content.author.media.md +71 -0
  239. package/corpus/templates/content/docs/product/capabilities/content.author.mermaid.md +71 -0
  240. package/corpus/templates/content/docs/product/capabilities/content.automation.scheduled.md +67 -0
  241. package/corpus/templates/content/docs/product/capabilities/content.capture.enrich.md +75 -0
  242. package/corpus/templates/content/docs/product/capabilities/content.command.fabric.md +67 -0
  243. package/corpus/templates/content/docs/product/capabilities/content.comment.page-owned.md +75 -0
  244. package/corpus/templates/content/docs/product/capabilities/content.diff.ai-assist.md +75 -0
  245. package/corpus/templates/content/docs/product/capabilities/content.diff.filtered-review.md +79 -0
  246. package/corpus/templates/content/docs/product/capabilities/content.diff.in-place.md +80 -0
  247. package/corpus/templates/content/docs/product/capabilities/content.discussion.page.md +80 -0
  248. package/corpus/templates/content/docs/product/capabilities/content.embed.host-grant.md +70 -0
  249. package/corpus/templates/content/docs/product/capabilities/content.embed.mcp-app.md +69 -0
  250. package/corpus/templates/content/docs/product/capabilities/content.embed.surface.md +74 -0
  251. package/corpus/templates/content/docs/product/capabilities/content.event.committed.md +85 -0
  252. package/corpus/templates/content/docs/product/capabilities/content.expression.cached-result.md +71 -0
  253. package/corpus/templates/content/docs/product/capabilities/content.expression.catalog.md +71 -0
  254. package/corpus/templates/content/docs/product/capabilities/content.expression.language.md +76 -0
  255. package/corpus/templates/content/docs/product/capabilities/content.feedback.signal.md +67 -0
  256. package/corpus/templates/content/docs/product/capabilities/content.form.shared-engine.md +72 -0
  257. package/corpus/templates/content/docs/product/capabilities/content.history.queryable.md +79 -0
  258. package/corpus/templates/content/docs/product/capabilities/content.home.global.md +80 -0
  259. package/corpus/templates/content/docs/product/capabilities/content.job.durable.md +76 -0
  260. package/corpus/templates/content/docs/product/capabilities/content.knowledge.graph.md +67 -0
  261. package/corpus/templates/content/docs/product/capabilities/content.knowledge.links.md +67 -0
  262. package/corpus/templates/content/docs/product/capabilities/content.knowledge.search.md +67 -0
  263. package/corpus/templates/content/docs/product/capabilities/content.layout.responsive.md +80 -0
  264. package/corpus/templates/content/docs/product/capabilities/content.navigation.sidebar.md +86 -0
  265. package/corpus/templates/content/docs/product/capabilities/content.notification.source.md +71 -0
  266. package/corpus/templates/content/docs/product/capabilities/content.object.block.md +76 -0
  267. package/corpus/templates/content/docs/product/capabilities/content.object.blocks-field.md +79 -0
  268. package/corpus/templates/content/docs/product/capabilities/content.object.database.md +92 -0
  269. package/corpus/templates/content/docs/product/capabilities/content.object.multi-membership.md +75 -0
  270. package/corpus/templates/content/docs/product/capabilities/content.object.page.md +76 -0
  271. package/corpus/templates/content/docs/product/capabilities/content.object.reference.md +75 -0
  272. package/corpus/templates/content/docs/product/capabilities/content.object.transclusion.md +75 -0
  273. package/corpus/templates/content/docs/product/capabilities/content.organization.teams.md +71 -0
  274. package/corpus/templates/content/docs/product/capabilities/content.portability.pdf-export.md +78 -0
  275. package/corpus/templates/content/docs/product/capabilities/content.portability.roundtrip.md +154 -0
  276. package/corpus/templates/content/docs/product/capabilities/content.portability.source-representation.md +70 -0
  277. package/corpus/templates/content/docs/product/capabilities/content.portability.vault-export.md +80 -0
  278. package/corpus/templates/content/docs/product/capabilities/content.presentation.mode.md +76 -0
  279. package/corpus/templates/content/docs/product/capabilities/content.preset.catalog.md +71 -0
  280. package/corpus/templates/content/docs/product/capabilities/content.property.actor.md +75 -0
  281. package/corpus/templates/content/docs/product/capabilities/content.property.catalog.md +76 -0
  282. package/corpus/templates/content/docs/product/capabilities/content.property.constraints.md +75 -0
  283. package/corpus/templates/content/docs/product/capabilities/content.property.guarded-change.md +76 -0
  284. package/corpus/templates/content/docs/product/capabilities/content.property.location.md +71 -0
  285. package/corpus/templates/content/docs/product/capabilities/content.property.typed.md +71 -0
  286. package/corpus/templates/content/docs/product/capabilities/content.publish.public.md +75 -0
  287. package/corpus/templates/content/docs/product/capabilities/content.publish.reading.md +74 -0
  288. package/corpus/templates/content/docs/product/capabilities/content.query.object.md +114 -0
  289. package/corpus/templates/content/docs/product/capabilities/content.reader.documents.md +69 -0
  290. package/corpus/templates/content/docs/product/capabilities/content.reader.surface.md +75 -0
  291. package/corpus/templates/content/docs/product/capabilities/content.relationship.edge.md +183 -0
  292. package/corpus/templates/content/docs/product/capabilities/content.renderer.artifact-block.md +71 -0
  293. package/corpus/templates/content/docs/product/capabilities/content.renderer.custom-block.md +81 -0
  294. package/corpus/templates/content/docs/product/capabilities/content.renderer.graph.md +71 -0
  295. package/corpus/templates/content/docs/product/capabilities/content.renderer.typed.md +92 -0
  296. package/corpus/templates/content/docs/product/capabilities/content.research.annotation.md +75 -0
  297. package/corpus/templates/content/docs/product/capabilities/content.research.citation.md +70 -0
  298. package/corpus/templates/content/docs/product/capabilities/content.review.code.md +67 -0
  299. package/corpus/templates/content/docs/product/capabilities/content.revision.suggestions.md +76 -0
  300. package/corpus/templates/content/docs/product/capabilities/content.rule.deterministic.md +79 -0
  301. package/corpus/templates/content/docs/product/capabilities/content.schedule.constraints.md +81 -0
  302. package/corpus/templates/content/docs/product/capabilities/content.security.private-vault.md +71 -0
  303. package/corpus/templates/content/docs/product/capabilities/content.share.views.md +140 -0
  304. package/corpus/templates/content/docs/product/capabilities/content.source.adapters.md +154 -0
  305. package/corpus/templates/content/docs/product/capabilities/content.source.builder-codec.md +70 -0
  306. package/corpus/templates/content/docs/product/capabilities/content.source.catalog.md +149 -0
  307. package/corpus/templates/content/docs/product/capabilities/content.source.file-folder.md +71 -0
  308. package/corpus/templates/content/docs/product/capabilities/content.source.local-bridge.md +156 -0
  309. package/corpus/templates/content/docs/product/capabilities/content.source.local-project.md +70 -0
  310. package/corpus/templates/content/docs/product/capabilities/content.source.page-link.md +70 -0
  311. package/corpus/templates/content/docs/product/capabilities/content.source.row-union.md +69 -0
  312. package/corpus/templates/content/docs/product/capabilities/content.source.spaces-files.md +75 -0
  313. package/corpus/templates/content/docs/product/capabilities/content.source.sync-policy.md +161 -0
  314. package/corpus/templates/content/docs/product/capabilities/content.system.dependencies.md +80 -0
  315. package/corpus/templates/content/docs/product/capabilities/content.system.my-tasks.md +75 -0
  316. package/corpus/templates/content/docs/product/capabilities/content.system.project-status.md +77 -0
  317. package/corpus/templates/content/docs/product/capabilities/content.system.research-workspace.md +80 -0
  318. package/corpus/templates/content/docs/product/capabilities/content.system.task-project.md +76 -0
  319. package/corpus/templates/content/docs/product/capabilities/content.template.governance.md +76 -0
  320. package/corpus/templates/content/docs/product/capabilities/content.template.graph.md +76 -0
  321. package/corpus/templates/content/docs/product/capabilities/content.template.item-body.md +71 -0
  322. package/corpus/templates/content/docs/product/capabilities/content.template.update.md +71 -0
  323. package/corpus/templates/content/docs/product/capabilities/content.time.types.md +85 -0
  324. package/corpus/templates/content/docs/product/capabilities/content.version.branching.md +151 -0
  325. package/corpus/templates/content/docs/product/capabilities/content.version.field-history.md +103 -0
  326. package/corpus/templates/content/docs/product/capabilities/content.view.canvas.md +94 -0
  327. package/corpus/templates/content/docs/product/capabilities/content.view.chart.md +91 -0
  328. package/corpus/templates/content/docs/product/capabilities/content.view.dynamic-create.md +137 -0
  329. package/corpus/templates/content/docs/product/capabilities/content.view.fast-capture.md +82 -0
  330. package/corpus/templates/content/docs/product/capabilities/content.view.graph.md +95 -0
  331. package/corpus/templates/content/docs/product/capabilities/content.view.grouping-aggregation.md +83 -0
  332. package/corpus/templates/content/docs/product/capabilities/content.view.map.md +77 -0
  333. package/corpus/templates/content/docs/product/capabilities/content.view.personal-state.md +99 -0
  334. package/corpus/templates/content/docs/product/capabilities/content.view.pivot.md +76 -0
  335. package/corpus/templates/content/docs/product/capabilities/content.view.query.md +106 -0
  336. package/corpus/templates/content/docs/product/capabilities/content.view.renderer-conformance.md +77 -0
  337. package/corpus/templates/content/docs/product/capabilities/content.view.scale.md +77 -0
  338. package/corpus/templates/content/docs/product/capabilities/content.view.source-query.md +159 -0
  339. package/corpus/templates/content/docs/product/capabilities/content.view.timeline.md +86 -0
  340. package/corpus/templates/content/docs/product/capabilities/content.view.tree.md +77 -0
  341. package/corpus/templates/content/docs/product/capabilities/content.workspace.multi-scope.md +80 -0
  342. package/corpus/templates/content/docs/product/capabilities/content.workspace.session-restore.md +76 -0
  343. package/corpus/templates/content/docs/product/capabilities/content.workspace.view-instance.md +76 -0
  344. package/corpus/templates/content/docs/product/capabilities/content.workspace.working-set.md +77 -0
  345. package/corpus/templates/content/docs/product/chapters/content.chapter.capture-research.md +20 -0
  346. package/corpus/templates/content/docs/product/chapters/content.chapter.connected-sources.md +20 -0
  347. package/corpus/templates/content/docs/product/chapters/content.chapter.consensus.md +19 -0
  348. package/corpus/templates/content/docs/product/chapters/content.chapter.durable-home.md +21 -0
  349. package/corpus/templates/content/docs/product/chapters/content.chapter.publishing-portability.md +21 -0
  350. package/corpus/templates/content/docs/product/chapters/content.chapter.working-systems.md +27 -0
  351. package/corpus/templates/content/docs/product/encyclopedia.md +559 -0
  352. package/corpus/templates/content/docs/product/features/content.feature.bring-your-local-work.md +39 -0
  353. package/corpus/templates/content/docs/product/features/content.feature.build-living-dashboards.md +34 -0
  354. package/corpus/templates/content/docs/product/features/content.feature.build-new-surfaces.md +33 -0
  355. package/corpus/templates/content/docs/product/features/content.feature.capture-into-action.md +34 -0
  356. package/corpus/templates/content/docs/product/features/content.feature.cite-what-you-found.md +34 -0
  357. package/corpus/templates/content/docs/product/features/content.feature.collaborate-in-context.md +59 -0
  358. package/corpus/templates/content/docs/product/features/content.feature.collect-structured-input.md +38 -0
  359. package/corpus/templates/content/docs/product/features/content.feature.connect-your-sources.md +38 -0
  360. package/corpus/templates/content/docs/product/features/content.feature.data-that-keeps-itself-right.md +45 -0
  361. package/corpus/templates/content/docs/product/features/content.feature.durable-foundations.md +48 -0
  362. package/corpus/templates/content/docs/product/features/content.feature.evolve-systems-safely.md +38 -0
  363. package/corpus/templates/content/docs/product/features/content.feature.explore-alternatives-safely.md +39 -0
  364. package/corpus/templates/content/docs/product/features/content.feature.find-your-place-again.md +40 -0
  365. package/corpus/templates/content/docs/product/features/content.feature.keep-your-private-vault-private.md +39 -0
  366. package/corpus/templates/content/docs/product/features/content.feature.living-references.md +38 -0
  367. package/corpus/templates/content/docs/product/features/content.feature.make-the-workspace-yours.md +40 -0
  368. package/corpus/templates/content/docs/product/features/content.feature.move-without-starting-over.md +38 -0
  369. package/corpus/templates/content/docs/product/features/content.feature.plan-work-across-time.md +39 -0
  370. package/corpus/templates/content/docs/product/features/content.feature.publish-with-confidence.md +43 -0
  371. package/corpus/templates/content/docs/product/features/content.feature.put-your-organizations-know-how-to-work.md +38 -0
  372. package/corpus/templates/content/docs/product/features/content.feature.read-and-annotate-anything.md +38 -0
  373. package/corpus/templates/content/docs/product/features/content.feature.review-changes-in-place.md +39 -0
  374. package/corpus/templates/content/docs/product/features/content.feature.run-projects-your-way.md +44 -0
  375. package/corpus/templates/content/docs/product/features/content.feature.see-your-information-your-way.md +44 -0
  376. package/corpus/templates/content/docs/product/features/content.feature.share-how-your-organization-works.md +38 -0
  377. package/corpus/templates/content/docs/product/features/content.feature.sketch-connections-keep-whats-true.md +39 -0
  378. package/corpus/templates/content/docs/product/features/content.feature.take-the-whole-vault-with-you.md +39 -0
  379. package/corpus/templates/content/docs/product/features/content.feature.trust-your-connected-sources.md +40 -0
  380. package/corpus/templates/content/docs/product/features/content.feature.understand-what-your-data-says.md +39 -0
  381. package/corpus/templates/content/docs/product/features/content.feature.when-this-happens-that-follows.md +43 -0
  382. package/corpus/templates/content/docs/product/features/content.feature.work-across-every-workspace.md +37 -0
  383. package/corpus/templates/content/docs/product/features/content.feature.work-on-content-inside-another-application.md +37 -0
  384. package/corpus/templates/content/docs/product/roadmap.md +878 -0
  385. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  386. package/corpus/templates/crm/app/components/layout/CrmSidebar.tsx +1 -7
  387. package/corpus/templates/crm/app/i18n/en-US.ts +4 -0
  388. package/corpus/templates/crm/app/routes/settings.tsx +33 -8
  389. package/corpus/templates/crm/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  390. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  391. package/corpus/templates/design/.generated/bridge/editor-chrome.generated.ts +133 -63
  392. package/corpus/templates/design/.generated/bridge/embedded-wheel.generated.ts +19 -2
  393. package/corpus/templates/design/app/components/design/DesignCanvas.tsx +51 -14
  394. package/corpus/templates/design/app/components/design/DesignExtensionsPanel.tsx +41 -26
  395. package/corpus/templates/design/app/components/design/MultiScreenCanvas.tsx +22 -4
  396. package/corpus/templates/design/app/components/design/bridge/editor-chrome.bridge.ts +216 -116
  397. package/corpus/templates/design/app/components/design/bridge/embedded-wheel.bridge.ts +21 -2
  398. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbench.tsx +5 -1
  399. package/corpus/templates/design/app/components/design/code-workbench/CodeWorkbenchLoader.tsx +10 -2
  400. package/corpus/templates/design/app/components/design/code-workbench/code-workbench-shell.ts +2 -0
  401. package/corpus/templates/design/app/components/design/code-workbench/explorer/ExplorerView.tsx +60 -55
  402. package/corpus/templates/design/app/components/design/design-canvas/content-size-report.ts +88 -2
  403. package/corpus/templates/design/app/components/design/multi-screen/board-surface-html.ts +3 -2
  404. package/corpus/templates/design/app/components/design/types.ts +4 -0
  405. package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -5
  406. package/corpus/templates/design/app/pages/design-editor/clipboard-layer-source.ts +28 -0
  407. package/corpus/templates/design/app/pages/design-editor/clone-and-pen-edit.ts +117 -0
  408. package/corpus/templates/design/app/pages/design-editor/code-layer-state.ts +3 -1
  409. package/corpus/templates/design/app/pages/design-editor/pending-edits.ts +120 -74
  410. package/corpus/templates/design/app/pages/design-editor/pending-structure-verification.ts +11 -0
  411. package/corpus/templates/design/app/pages/design-editor/react-semantic-handoff.ts +2 -0
  412. package/corpus/templates/design/app/pages/design-editor/source-location.ts +1 -1
  413. package/corpus/templates/design/changelog/2026-07-29-copy-rendered-ui-between-live-local-apps-and-design-files-wh.md +6 -0
  414. package/corpus/templates/design/changelog/2026-07-29-design-boards-stay-dark-and-viewport-height-content-keeps-it.md +6 -0
  415. package/corpus/templates/design/changelog/2026-07-29-design-frames-no-longer-grow-continuously-when-their-content.md +6 -0
  416. package/corpus/templates/design/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  417. package/corpus/templates/design/changelog/2026-07-29-the-code-panel-and-apply-design-update-control-now-use-clear.md +6 -0
  418. package/corpus/templates/design/changelog/2026-07-29-the-tools-panel-now-keeps-extension-creation-and-discovery-h.md +6 -0
  419. package/corpus/templates/design/shared/source-mode.ts +7 -1
  420. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  421. package/corpus/templates/dispatch/app/i18n-data.ts +171 -0
  422. package/corpus/templates/dispatch/app/routes/browser-chat.tsx +4 -0
  423. package/corpus/templates/dispatch/app/routes/browser-connect.tsx +4 -0
  424. package/corpus/templates/dispatch/changelog/2026-07-29-browser-chat-can-securely-connect-the-agent-native-chrome-ex.md +6 -0
  425. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  426. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -6
  427. package/corpus/templates/forms/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  428. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  429. package/corpus/templates/macros/app/components/layout/AppLayout.tsx +1 -5
  430. package/corpus/templates/macros/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  431. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  432. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +1 -9
  433. package/corpus/templates/mail/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  434. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  435. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +3 -7
  436. package/corpus/templates/plan/app/pages/PlansPage.tsx +2 -2
  437. package/corpus/templates/plan/changelog/2026-07-29-chat-history-now-closes-smoothly-and-stays-ready-when-you-re.md +6 -0
  438. package/corpus/templates/plan/changelog/2026-07-29-chat-history-stays-visible-when-you-return-to-ask-plan.md +6 -0
  439. package/corpus/templates/plan/changelog/2026-07-29-fixed-plan-pages-crashing-when-recent-activity-is-unavailabl.md +6 -0
  440. package/corpus/templates/plan/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  441. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  442. package/corpus/templates/slides/.agents/skills/create-deck/SKILL.md +60 -4
  443. package/corpus/templates/slides/.agents/skills/design-systems/SKILL.md +20 -0
  444. package/corpus/templates/slides/.agents/skills/slide-editing/SKILL.md +30 -1
  445. package/corpus/templates/slides/.agents/skills/slide-images/SKILL.md +3 -1
  446. package/corpus/templates/slides/AGENTS.md +22 -24
  447. package/corpus/templates/slides/actions/check-image-gen.ts +8 -2
  448. package/corpus/templates/slides/actions/create-deck.ts +4 -12
  449. package/corpus/templates/slides/actions/export-pptx.ts +25 -3
  450. package/corpus/templates/slides/actions/generate-image-api.ts +4 -2
  451. package/corpus/templates/slides/actions/generate-slides-ai.ts +1 -1
  452. package/corpus/templates/slides/actions/get-deck-reference-context.ts +136 -0
  453. package/corpus/templates/slides/actions/get-workspace-defaults.ts +55 -0
  454. package/corpus/templates/slides/actions/image-gen-status.ts +10 -1
  455. package/corpus/templates/slides/actions/import-file.ts +53 -38
  456. package/corpus/templates/slides/actions/list-decks.ts +2 -0
  457. package/corpus/templates/slides/actions/patch-deck.ts +2 -0
  458. package/corpus/templates/slides/actions/set-workspace-defaults.ts +50 -0
  459. package/corpus/templates/slides/actions/view-screen.ts +6 -0
  460. package/corpus/templates/slides/app/components/comments/SlideCommentsPanel.tsx +1 -1
  461. package/corpus/templates/slides/app/components/deck/DeckCard.tsx +67 -3
  462. package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +40 -8
  463. package/corpus/templates/slides/app/components/design-system/DesignSystemCard.tsx +33 -8
  464. package/corpus/templates/slides/app/components/editor/EditorSidebar.tsx +6 -2
  465. package/corpus/templates/slides/app/components/editor/EditorToolbar.tsx +114 -128
  466. package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +2 -1
  467. package/corpus/templates/slides/app/components/editor/ImageGenPanel.tsx +1 -1
  468. package/corpus/templates/slides/app/components/editor/SlideEditor.tsx +1193 -267
  469. package/corpus/templates/slides/app/components/editor/SlideStyleInspector.tsx +302 -102
  470. package/corpus/templates/slides/app/components/editor/rich-text-selection.ts +270 -0
  471. package/corpus/templates/slides/app/components/editor/slide-escape-arbiter.ts +34 -0
  472. package/corpus/templates/slides/app/components/editor/slide-object-interactions.ts +368 -0
  473. package/corpus/templates/slides/app/components/editor/slide-presence.ts +13 -0
  474. package/corpus/templates/slides/app/components/layout/AgentWorkIndicator.tsx +23 -3
  475. package/corpus/templates/slides/app/components/layout/Layout.tsx +39 -6
  476. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -6
  477. package/corpus/templates/slides/app/components/layout/layout-route-policy.ts +23 -0
  478. package/corpus/templates/slides/app/components/visual-editor/DrawOverlay.tsx +0 -2
  479. package/corpus/templates/slides/app/context/DeckContext.tsx +2 -0
  480. package/corpus/templates/slides/app/global.css +60 -0
  481. package/corpus/templates/slides/app/hooks/use-agent-generating.ts +76 -5
  482. package/corpus/templates/slides/app/hooks/use-workspace-defaults.ts +26 -0
  483. package/corpus/templates/slides/app/i18n/en-US.ts +38 -3
  484. package/corpus/templates/slides/app/lib/generation-state.ts +13 -3
  485. package/corpus/templates/slides/app/lib/slide-image-replacement.ts +27 -6
  486. package/corpus/templates/slides/app/lib/text-tool-shortcut.ts +62 -0
  487. package/corpus/templates/slides/app/pages/DeckEditor.tsx +197 -83
  488. package/corpus/templates/slides/app/pages/DesignSystems.tsx +95 -0
  489. package/corpus/templates/slides/app/pages/Index.tsx +348 -53
  490. package/corpus/templates/slides/changelog/2026-07-28-pick-an-existing-deck-as-a-style-reference-when-creating-a-n.md +6 -0
  491. package/corpus/templates/slides/changelog/2026-07-29-ai-editing-status-is-now-quieter-and-only-shows-slide-presen.md +6 -0
  492. package/corpus/templates/slides/changelog/2026-07-29-design-systems-and-reference-decks-are-easier-to-choose-toge.md +6 -0
  493. package/corpus/templates/slides/changelog/2026-07-29-generated-decks-now-receive-a-concise-relevant-title-before-.md +6 -0
  494. package/corpus/templates/slides/changelog/2026-07-29-new-deck-prompts-reuse-empty-chats.md +6 -0
  495. package/corpus/templates/slides/changelog/2026-07-29-new-deck-setup-now-stays-in-the-editor-with-closable-style-a.md +6 -0
  496. package/corpus/templates/slides/changelog/2026-07-29-selected-words-and-text-runs-can-now-be-styled-independently.md +6 -0
  497. package/corpus/templates/slides/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  498. package/corpus/templates/slides/changelog/2026-07-29-slide-annotation-tools-are-clearer-and-escape-now-exits-anno.md +6 -0
  499. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-now-opens-with-the-app-navigation-collapsed-fo.md +6 -0
  500. package/corpus/templates/slides/changelog/2026-07-29-slide-editing-stays-visually-clean-on-hover-without-a-canvas.md +6 -0
  501. package/corpus/templates/slides/changelog/2026-07-29-slides-now-appear-one-by-one-while-ai-builds-a-deck-with-ste.md +6 -0
  502. package/corpus/templates/slides/changelog/2026-07-29-text-boxes-now-select-move-duplicate-resize-and-style-like-a.md +6 -0
  503. package/corpus/templates/slides/changelog/2026-07-29-untitled-decks-now-use-a-clearer-this-deck-label-in-the-agen.md +6 -0
  504. package/corpus/templates/slides/server/handlers/image-providers/builder.ts +305 -0
  505. package/corpus/templates/slides/server/handlers/image-providers/index.ts +6 -3
  506. package/corpus/templates/slides/server/plugins/agent-chat.ts +1 -0
  507. package/corpus/templates/slides/server/workspace-defaults.ts +169 -0
  508. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  509. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +31 -8
  510. package/corpus/templates/tasks/app/i18n/en-US.ts +7 -0
  511. package/corpus/templates/tasks/app/routes/settings.tsx +25 -2
  512. package/corpus/templates/tasks/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  513. package/corpus/toolkit/CHANGELOG.md +15 -0
  514. package/corpus/toolkit/README.md +2 -2
  515. package/corpus/toolkit/package.json +1 -1
  516. package/corpus/toolkit/src/app-shell/sidebar-footer-actions.tsx +0 -3
  517. package/corpus/toolkit/src/chat-history.css +1 -0
  518. package/corpus/toolkit/src/composer/ComposerPlusMenu.tsx +35 -14
  519. package/corpus/toolkit/src/composer/PromptComposer.tsx +6 -0
  520. package/corpus/toolkit/src/composer/TiptapComposer.tsx +11 -3
  521. package/corpus/toolkit/src/design-tweaks/visual-style-controls.tsx +64 -11
  522. package/dist/action.d.ts +44 -0
  523. package/dist/action.d.ts.map +1 -1
  524. package/dist/action.js +9 -0
  525. package/dist/action.js.map +1 -1
  526. package/dist/agent/engine/builder-engine.js +6 -4
  527. package/dist/agent/engine/builder-engine.js.map +1 -1
  528. package/dist/agent/production-agent.d.ts +11 -1
  529. package/dist/agent/production-agent.d.ts.map +1 -1
  530. package/dist/agent/production-agent.js +131 -90
  531. package/dist/agent/production-agent.js.map +1 -1
  532. package/dist/agent/tool-search.d.ts +4 -0
  533. package/dist/agent/tool-search.d.ts.map +1 -1
  534. package/dist/agent/tool-search.js +30 -0
  535. package/dist/agent/tool-search.js.map +1 -1
  536. package/dist/automations/service.d.ts +85 -0
  537. package/dist/automations/service.d.ts.map +1 -0
  538. package/dist/automations/service.js +332 -0
  539. package/dist/automations/service.js.map +1 -0
  540. package/dist/browser-context/index.d.ts +579 -0
  541. package/dist/browser-context/index.d.ts.map +1 -0
  542. package/dist/browser-context/index.js +331 -0
  543. package/dist/browser-context/index.js.map +1 -0
  544. package/dist/client/AgentPanel.d.ts.map +1 -1
  545. package/dist/client/AgentPanel.js +1 -1
  546. package/dist/client/AgentPanel.js.map +1 -1
  547. package/dist/client/FeedbackButton.d.ts +6 -2
  548. package/dist/client/FeedbackButton.d.ts.map +1 -1
  549. package/dist/client/FeedbackButton.js +20 -3
  550. package/dist/client/FeedbackButton.js.map +1 -1
  551. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  552. package/dist/client/MultiTabAssistantChat.js +19 -2
  553. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  554. package/dist/client/agent-chat.d.ts +15 -0
  555. package/dist/client/agent-chat.d.ts.map +1 -1
  556. package/dist/client/agent-chat.js +13 -3
  557. package/dist/client/agent-chat.js.map +1 -1
  558. package/dist/client/agent-page/AgentJobsTab.d.ts +1 -0
  559. package/dist/client/agent-page/AgentJobsTab.d.ts.map +1 -1
  560. package/dist/client/agent-page/AgentJobsTab.js +186 -98
  561. package/dist/client/agent-page/AgentJobsTab.js.map +1 -1
  562. package/dist/client/agent-page/AgentTabsPage.js +4 -4
  563. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  564. package/dist/client/agent-page/use-jobs.d.ts +7 -0
  565. package/dist/client/agent-page/use-jobs.d.ts.map +1 -1
  566. package/dist/client/agent-page/use-jobs.js.map +1 -1
  567. package/dist/client/analytics-session.d.ts.map +1 -1
  568. package/dist/client/analytics-session.js +13 -0
  569. package/dist/client/analytics-session.js.map +1 -1
  570. package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
  571. package/dist/client/extensions/ExtensionViewer.js +29 -6
  572. package/dist/client/extensions/ExtensionViewer.js.map +1 -1
  573. package/dist/client/settings/AutomationsSection.d.ts +0 -9
  574. package/dist/client/settings/AutomationsSection.d.ts.map +1 -1
  575. package/dist/client/settings/AutomationsSection.js +9 -168
  576. package/dist/client/settings/AutomationsSection.js.map +1 -1
  577. package/dist/client/settings/SettingsPanel.d.ts +9 -1
  578. package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
  579. package/dist/client/settings/SettingsPanel.js +19 -11
  580. package/dist/client/settings/SettingsPanel.js.map +1 -1
  581. package/dist/client/settings/index.d.ts +1 -1
  582. package/dist/client/settings/index.d.ts.map +1 -1
  583. package/dist/client/settings/index.js +1 -1
  584. package/dist/client/settings/index.js.map +1 -1
  585. package/dist/client/use-agent-chat.d.ts.map +1 -1
  586. package/dist/client/use-agent-chat.js +20 -3
  587. package/dist/client/use-agent-chat.js.map +1 -1
  588. package/dist/client/use-chat-threads.d.ts.map +1 -1
  589. package/dist/client/use-chat-threads.js +4 -17
  590. package/dist/client/use-chat-threads.js.map +1 -1
  591. package/dist/collab/struct-routes.d.ts +1 -1
  592. package/dist/deploy/build.d.ts.map +1 -1
  593. package/dist/deploy/build.js +2 -1
  594. package/dist/deploy/build.js.map +1 -1
  595. package/dist/deploy/workspace-deploy.d.ts.map +1 -1
  596. package/dist/deploy/workspace-deploy.js +2 -1
  597. package/dist/deploy/workspace-deploy.js.map +1 -1
  598. package/dist/extensions/actions.d.ts.map +1 -1
  599. package/dist/extensions/actions.js +82 -6
  600. package/dist/extensions/actions.js.map +1 -1
  601. package/dist/extensions/fetch-tool.d.ts.map +1 -1
  602. package/dist/extensions/fetch-tool.js +11 -0
  603. package/dist/extensions/fetch-tool.js.map +1 -1
  604. package/dist/extensions/routes.d.ts +5 -1
  605. package/dist/extensions/routes.d.ts.map +1 -1
  606. package/dist/extensions/routes.js +7 -1
  607. package/dist/extensions/routes.js.map +1 -1
  608. package/dist/extensions/web-content.d.ts +1 -0
  609. package/dist/extensions/web-content.d.ts.map +1 -1
  610. package/dist/extensions/web-content.js +82 -1
  611. package/dist/extensions/web-content.js.map +1 -1
  612. package/dist/integrations/computer-supervision.d.ts.map +1 -1
  613. package/dist/integrations/computer-supervision.js +22 -1
  614. package/dist/integrations/computer-supervision.js.map +1 -1
  615. package/dist/integrations/index.d.ts +3 -2
  616. package/dist/integrations/index.d.ts.map +1 -1
  617. package/dist/integrations/index.js +3 -2
  618. package/dist/integrations/index.js.map +1 -1
  619. package/dist/integrations/integration-durable-dispatch-config.d.ts +2 -0
  620. package/dist/integrations/integration-durable-dispatch-config.d.ts.map +1 -1
  621. package/dist/integrations/integration-durable-dispatch-config.js +4 -0
  622. package/dist/integrations/integration-durable-dispatch-config.js.map +1 -1
  623. package/dist/integrations/integration-durable-dispatch.d.ts +2 -2
  624. package/dist/integrations/integration-durable-dispatch.d.ts.map +1 -1
  625. package/dist/integrations/integration-durable-dispatch.js +2 -2
  626. package/dist/integrations/integration-durable-dispatch.js.map +1 -1
  627. package/dist/integrations/plugin.d.ts.map +1 -1
  628. package/dist/integrations/plugin.js +84 -39
  629. package/dist/integrations/plugin.js.map +1 -1
  630. package/dist/integrations/remote-browser-actions.d.ts +7 -0
  631. package/dist/integrations/remote-browser-actions.d.ts.map +1 -0
  632. package/dist/integrations/remote-browser-actions.js +482 -0
  633. package/dist/integrations/remote-browser-actions.js.map +1 -0
  634. package/dist/jobs/actions/list-recurring-jobs.d.ts.map +1 -1
  635. package/dist/jobs/actions/list-recurring-jobs.js +4 -6
  636. package/dist/jobs/actions/list-recurring-jobs.js.map +1 -1
  637. package/dist/jobs/actions/manage-recurring-job.js +3 -6
  638. package/dist/jobs/actions/manage-recurring-job.js.map +1 -1
  639. package/dist/jobs/background-automation-runner.d.ts +76 -0
  640. package/dist/jobs/background-automation-runner.d.ts.map +1 -0
  641. package/dist/jobs/background-automation-runner.js +288 -0
  642. package/dist/jobs/background-automation-runner.js.map +1 -0
  643. package/dist/jobs/frontmatter.d.ts +63 -0
  644. package/dist/jobs/frontmatter.d.ts.map +1 -0
  645. package/dist/jobs/frontmatter.js +216 -0
  646. package/dist/jobs/frontmatter.js.map +1 -0
  647. package/dist/jobs/scheduler.d.ts +6 -60
  648. package/dist/jobs/scheduler.d.ts.map +1 -1
  649. package/dist/jobs/scheduler.js +67 -484
  650. package/dist/jobs/scheduler.js.map +1 -1
  651. package/dist/jobs/tools.d.ts.map +1 -1
  652. package/dist/jobs/tools.js +24 -3
  653. package/dist/jobs/tools.js.map +1 -1
  654. package/dist/localization/default-messages.d.ts +28 -33
  655. package/dist/localization/default-messages.d.ts.map +1 -1
  656. package/dist/localization/default-messages.js +34 -39
  657. package/dist/localization/default-messages.js.map +1 -1
  658. package/dist/mcp-client/index.d.ts.map +1 -1
  659. package/dist/mcp-client/index.js +4 -0
  660. package/dist/mcp-client/index.js.map +1 -1
  661. package/dist/notifications/actions.d.ts.map +1 -1
  662. package/dist/notifications/actions.js +5 -0
  663. package/dist/notifications/actions.js.map +1 -1
  664. package/dist/notifications/routes.d.ts +6 -6
  665. package/dist/observability/routes.d.ts +3 -3
  666. package/dist/progress/actions.d.ts.map +1 -1
  667. package/dist/progress/actions.js +5 -0
  668. package/dist/progress/actions.js.map +1 -1
  669. package/dist/provider-api/actions/custom-provider-registration.d.ts +14 -14
  670. package/dist/provider-api/actions/github-repo-files.d.ts.map +1 -1
  671. package/dist/provider-api/actions/github-repo-files.js +9 -0
  672. package/dist/provider-api/actions/github-repo-files.js.map +1 -1
  673. package/dist/provider-api/actions/provider-api.d.ts +16 -16
  674. package/dist/provider-api/actions/provider-api.d.ts.map +1 -1
  675. package/dist/provider-api/actions/provider-api.js +14 -0
  676. package/dist/provider-api/actions/provider-api.js.map +1 -1
  677. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  678. package/dist/resources/handlers.d.ts +1 -1
  679. package/dist/secrets/routes.d.ts +9 -9
  680. package/dist/server/action-discovery.d.ts.map +1 -1
  681. package/dist/server/action-discovery.js +5 -0
  682. package/dist/server/action-discovery.js.map +1 -1
  683. package/dist/server/agent-chat/browser-team-tools.d.ts.map +1 -1
  684. package/dist/server/agent-chat/browser-team-tools.js +90 -3
  685. package/dist/server/agent-chat/browser-team-tools.js.map +1 -1
  686. package/dist/server/agent-chat/framework-prompts.d.ts.map +1 -1
  687. package/dist/server/agent-chat/framework-prompts.js +7 -11
  688. package/dist/server/agent-chat/framework-prompts.js.map +1 -1
  689. package/dist/server/agent-chat/plugin-options.d.ts +3 -3
  690. package/dist/server/agent-chat/plugin-options.js.map +1 -1
  691. package/dist/server/agent-chat/script-entries.d.ts.map +1 -1
  692. package/dist/server/agent-chat/script-entries.js +43 -1
  693. package/dist/server/agent-chat/script-entries.js.map +1 -1
  694. package/dist/server/agent-chat-plugin.d.ts.map +1 -1
  695. package/dist/server/agent-chat-plugin.js +24 -5
  696. package/dist/server/agent-chat-plugin.js.map +1 -1
  697. package/dist/server/attribution.d.ts +6 -0
  698. package/dist/server/attribution.d.ts.map +1 -1
  699. package/dist/server/attribution.js +14 -14
  700. package/dist/server/attribution.js.map +1 -1
  701. package/dist/server/auth.d.ts.map +1 -1
  702. package/dist/server/auth.js +5 -2
  703. package/dist/server/auth.js.map +1 -1
  704. package/dist/server/better-auth-instance.d.ts +2 -1
  705. package/dist/server/better-auth-instance.d.ts.map +1 -1
  706. package/dist/server/better-auth-instance.js +6 -3
  707. package/dist/server/better-auth-instance.js.map +1 -1
  708. package/dist/server/core-routes-plugin.d.ts +7 -0
  709. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  710. package/dist/server/core-routes-plugin.js +3 -1
  711. package/dist/server/core-routes-plugin.js.map +1 -1
  712. package/dist/server/csrf.d.ts.map +1 -1
  713. package/dist/server/csrf.js +25 -0
  714. package/dist/server/csrf.js.map +1 -1
  715. package/dist/server/email-template.d.ts +4 -0
  716. package/dist/server/email-template.d.ts.map +1 -1
  717. package/dist/server/email-template.js +25 -8
  718. package/dist/server/email-template.js.map +1 -1
  719. package/dist/server/google-oauth.d.ts +3 -0
  720. package/dist/server/google-oauth.d.ts.map +1 -1
  721. package/dist/server/google-oauth.js +12 -1
  722. package/dist/server/google-oauth.js.map +1 -1
  723. package/dist/server/onboarding-html.d.ts.map +1 -1
  724. package/dist/server/onboarding-html.js +18 -0
  725. package/dist/server/onboarding-html.js.map +1 -1
  726. package/dist/server/prompts/framework-core-compact.js +3 -3
  727. package/dist/server/prompts/framework-core-compact.js.map +1 -1
  728. package/dist/server/prompts/framework-core.js +3 -3
  729. package/dist/server/prompts/framework-core.js.map +1 -1
  730. package/dist/server/prompts/shared-rules.js +3 -3
  731. package/dist/server/prompts/shared-rules.js.map +1 -1
  732. package/dist/server/realtime-token.d.ts +1 -1
  733. package/dist/server/transcribe-voice.d.ts +1 -1
  734. package/dist/settings/index.d.ts +1 -1
  735. package/dist/settings/index.d.ts.map +1 -1
  736. package/dist/settings/index.js +1 -1
  737. package/dist/settings/index.js.map +1 -1
  738. package/dist/shared/analytics-anonymous-id.d.ts +12 -0
  739. package/dist/shared/analytics-anonymous-id.d.ts.map +1 -0
  740. package/dist/shared/analytics-anonymous-id.js +29 -0
  741. package/dist/shared/analytics-anonymous-id.js.map +1 -0
  742. package/dist/sharing/actions/share-resource.d.ts.map +1 -1
  743. package/dist/sharing/actions/share-resource.js +23 -4
  744. package/dist/sharing/actions/share-resource.js.map +1 -1
  745. package/dist/sharing/index.d.ts +1 -1
  746. package/dist/sharing/index.d.ts.map +1 -1
  747. package/dist/sharing/index.js.map +1 -1
  748. package/dist/sharing/registry.d.ts +23 -0
  749. package/dist/sharing/registry.d.ts.map +1 -1
  750. package/dist/sharing/registry.js.map +1 -1
  751. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  752. package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  753. package/dist/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  754. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  755. package/dist/templates/default/app/i18n/ar-SA.ts +26 -0
  756. package/dist/templates/default/app/i18n/de-DE.ts +28 -0
  757. package/dist/templates/default/app/i18n/en-US.ts +27 -0
  758. package/dist/templates/default/app/i18n/es-ES.ts +28 -0
  759. package/dist/templates/default/app/i18n/fr-FR.ts +28 -0
  760. package/dist/templates/default/app/i18n/hi-IN.ts +25 -0
  761. package/dist/templates/default/app/i18n/ja-JP.ts +27 -0
  762. package/dist/templates/default/app/i18n/ko-KR.ts +27 -0
  763. package/dist/templates/default/app/i18n/pt-BR.ts +27 -0
  764. package/dist/templates/default/app/i18n/zh-CN.ts +24 -0
  765. package/dist/templates/default/app/i18n/zh-TW.ts +24 -0
  766. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  767. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  768. package/dist/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  769. package/dist/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  770. package/dist/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  771. package/dist/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  772. package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  773. package/dist/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  774. package/dist/tracking/providers.d.ts.map +1 -1
  775. package/dist/tracking/providers.js +1 -0
  776. package/dist/tracking/providers.js.map +1 -1
  777. package/dist/tracking/registry.d.ts +1 -0
  778. package/dist/tracking/registry.d.ts.map +1 -1
  779. package/dist/tracking/registry.js +1 -0
  780. package/dist/tracking/registry.js.map +1 -1
  781. package/dist/tracking/types.d.ts +1 -0
  782. package/dist/tracking/types.d.ts.map +1 -1
  783. package/dist/tracking/types.js.map +1 -1
  784. package/dist/triggers/actions/list-automations.d.ts +7 -0
  785. package/dist/triggers/actions/list-automations.d.ts.map +1 -1
  786. package/dist/triggers/actions/list-automations.js +29 -41
  787. package/dist/triggers/actions/list-automations.js.map +1 -1
  788. package/dist/triggers/actions/manage-automation.js +15 -33
  789. package/dist/triggers/actions/manage-automation.js.map +1 -1
  790. package/dist/triggers/actions.d.ts.map +1 -1
  791. package/dist/triggers/actions.js +184 -95
  792. package/dist/triggers/actions.js.map +1 -1
  793. package/dist/triggers/dispatcher.d.ts +3 -9
  794. package/dist/triggers/dispatcher.d.ts.map +1 -1
  795. package/dist/triggers/dispatcher.js +134 -304
  796. package/dist/triggers/dispatcher.js.map +1 -1
  797. package/dist/triggers/routes.d.ts.map +1 -1
  798. package/dist/triggers/routes.js +76 -17
  799. package/dist/triggers/routes.js.map +1 -1
  800. package/dist/triggers/types.d.ts +4 -23
  801. package/dist/triggers/types.d.ts.map +1 -1
  802. package/dist/triggers/types.js.map +1 -1
  803. package/docs/content/agent-surfaces.mdx +4 -4
  804. package/docs/content/automations.mdx +61 -12
  805. package/docs/content/deployment.mdx +11 -4
  806. package/docs/content/extensions.mdx +39 -33
  807. package/docs/content/recurring-jobs.mdx +41 -19
  808. package/docs/content/template-dispatch-operations.mdx +19 -7
  809. package/package.json +4 -2
  810. package/src/action.ts +55 -0
  811. package/src/agent/engine/builder-engine.ts +8 -4
  812. package/src/agent/production-agent.ts +175 -100
  813. package/src/agent/tool-search.ts +36 -0
  814. package/src/automations/service.ts +506 -0
  815. package/src/browser-context/index.ts +392 -0
  816. package/src/client/AgentPanel.tsx +2 -1
  817. package/src/client/FeedbackButton.tsx +37 -4
  818. package/src/client/MultiTabAssistantChat.tsx +21 -0
  819. package/src/client/agent-chat.ts +31 -3
  820. package/src/client/agent-page/AgentJobsTab.tsx +438 -310
  821. package/src/client/agent-page/AgentTabsPage.tsx +4 -4
  822. package/src/client/agent-page/use-jobs.ts +7 -0
  823. package/src/client/analytics-session.ts +13 -0
  824. package/src/client/extensions/ExtensionViewer.tsx +67 -0
  825. package/src/client/settings/AutomationsSection.tsx +27 -499
  826. package/src/client/settings/SettingsPanel.tsx +32 -11
  827. package/src/client/settings/index.ts +2 -0
  828. package/src/client/use-agent-chat.ts +35 -3
  829. package/src/client/use-chat-threads.ts +8 -25
  830. package/src/deploy/build.ts +2 -0
  831. package/src/deploy/workspace-deploy.ts +2 -0
  832. package/src/extensions/actions.ts +115 -3
  833. package/src/extensions/fetch-tool.ts +11 -0
  834. package/src/extensions/routes.ts +16 -1
  835. package/src/extensions/web-content.ts +96 -1
  836. package/src/integrations/computer-supervision.ts +33 -1
  837. package/src/integrations/index.ts +6 -0
  838. package/src/integrations/integration-durable-dispatch-config.ts +10 -0
  839. package/src/integrations/integration-durable-dispatch.ts +4 -0
  840. package/src/integrations/plugin.ts +94 -41
  841. package/src/integrations/remote-browser-actions.ts +621 -0
  842. package/src/jobs/actions/list-recurring-jobs.ts +5 -7
  843. package/src/jobs/actions/manage-recurring-job.ts +3 -7
  844. package/src/jobs/background-automation-runner.ts +437 -0
  845. package/src/jobs/frontmatter.ts +308 -0
  846. package/src/jobs/scheduler.ts +89 -598
  847. package/src/jobs/tools.ts +22 -3
  848. package/src/localization/default-messages.ts +45 -45
  849. package/src/mcp-client/index.ts +6 -0
  850. package/src/notifications/actions.ts +5 -0
  851. package/src/progress/actions.ts +5 -0
  852. package/src/provider-api/actions/github-repo-files.ts +11 -0
  853. package/src/provider-api/actions/provider-api.ts +13 -0
  854. package/src/server/__snapshots__/agent-chat-plugin.surface.spec.ts.snap +4 -4
  855. package/src/server/action-discovery.ts +7 -0
  856. package/src/server/agent-chat/browser-team-tools.ts +126 -3
  857. package/src/server/agent-chat/framework-prompts.ts +7 -11
  858. package/src/server/agent-chat/plugin-options.ts +3 -3
  859. package/src/server/agent-chat/script-entries.ts +52 -1
  860. package/src/server/agent-chat-plugin.ts +25 -5
  861. package/src/server/attribution.ts +22 -0
  862. package/src/server/auth.ts +20 -6
  863. package/src/server/better-auth-instance.ts +10 -2
  864. package/src/server/core-routes-plugin.ts +10 -1
  865. package/src/server/csrf.ts +25 -0
  866. package/src/server/email-template.ts +43 -13
  867. package/src/server/google-oauth.ts +21 -1
  868. package/src/server/onboarding-html.ts +18 -0
  869. package/src/server/prompts/framework-core-compact.ts +3 -3
  870. package/src/server/prompts/framework-core.ts +3 -3
  871. package/src/server/prompts/shared-rules.ts +3 -3
  872. package/src/settings/index.ts +1 -0
  873. package/src/shared/analytics-anonymous-id.ts +35 -0
  874. package/src/sharing/actions/share-resource.ts +26 -4
  875. package/src/sharing/index.ts +1 -0
  876. package/src/sharing/registry.ts +23 -0
  877. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  878. package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -5
  879. package/src/templates/chat/changelog/2026-07-29-sidebar-footers-now-keep-feedback-search-and-collapse-togeth.md +6 -0
  880. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  881. package/src/templates/default/app/i18n/ar-SA.ts +26 -0
  882. package/src/templates/default/app/i18n/de-DE.ts +28 -0
  883. package/src/templates/default/app/i18n/en-US.ts +27 -0
  884. package/src/templates/default/app/i18n/es-ES.ts +28 -0
  885. package/src/templates/default/app/i18n/fr-FR.ts +28 -0
  886. package/src/templates/default/app/i18n/hi-IN.ts +25 -0
  887. package/src/templates/default/app/i18n/ja-JP.ts +27 -0
  888. package/src/templates/default/app/i18n/ko-KR.ts +27 -0
  889. package/src/templates/default/app/i18n/pt-BR.ts +27 -0
  890. package/src/templates/default/app/i18n/zh-CN.ts +24 -0
  891. package/src/templates/default/app/i18n/zh-TW.ts +24 -0
  892. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  893. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +5 -0
  894. package/src/templates/workspace-core/.agents/skills/agent-page/SKILL.md +10 -7
  895. package/src/templates/workspace-core/.agents/skills/automations/SKILL.md +53 -8
  896. package/src/templates/workspace-core/.agents/skills/browser-sessions/SKILL.md +131 -0
  897. package/src/templates/workspace-core/.agents/skills/extension-points/SKILL.md +13 -4
  898. package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +23 -15
  899. package/src/templates/workspace-core/.agents/skills/recurring-jobs/SKILL.md +33 -18
  900. package/src/tracking/providers.ts +1 -0
  901. package/src/tracking/registry.ts +2 -1
  902. package/src/tracking/types.ts +1 -0
  903. package/src/triggers/actions/list-automations.ts +43 -44
  904. package/src/triggers/actions/manage-automation.ts +17 -48
  905. package/src/triggers/actions.ts +218 -127
  906. package/src/triggers/dispatcher.ts +181 -367
  907. package/src/triggers/routes.ts +84 -27
  908. package/src/triggers/types.ts +9 -23
  909. package/corpus/templates/clips/app/routes/_app.settings.organization.tsx +0 -232
@@ -90,12 +90,14 @@ import {
90
90
  getLocalTimezone,
91
91
  } from "@/lib/event-form-utils";
92
92
  import { buildDeleteEventMutationInput } from "@/lib/event-mutation-inputs";
93
+ import { getLocationSuggestions } from "@/lib/location-suggestions";
93
94
  import { isMcpEmbedSurface } from "@/lib/mcp-embed";
94
95
  import { cn } from "@/lib/utils";
95
96
 
96
97
  const CALENDAR_DRAFT_EVENT_PREFIX = "calendar-draft-event:";
97
98
 
98
99
  type DraftEventPatch = Partial<CalendarEvent> & {
100
+ fullDay?: boolean;
99
101
  addGoogleMeet?: boolean;
100
102
  addZoom?: boolean;
101
103
  workingLocationType?: "homeOffice" | "officeLocation" | "customLocation";
@@ -168,8 +170,28 @@ function addMinutesToDateTimeParts(
168
170
 
169
171
  function draftRange(draft: CalendarEventDraft, fallbackDate: Date) {
170
172
  const fallback = fallbackDraftRange(fallbackDate);
171
- const start = parseValidDate(draft.start) ?? fallback.start;
172
- const parsedEnd = parseValidDate(draft.end);
173
+ const fullDayTimezone = draft.startTimeZone ?? draft.endTimeZone;
174
+ const fullDayDatePattern = /^\d{4}-\d{2}-\d{2}$/;
175
+ const semanticFullDay =
176
+ draft.eventType === "outOfOffice" &&
177
+ draft.fullDay &&
178
+ fullDayTimezone &&
179
+ draft.start &&
180
+ draft.end &&
181
+ fullDayDatePattern.test(draft.start) &&
182
+ fullDayDatePattern.test(draft.end);
183
+ const start = semanticFullDay
184
+ ? new Date(dateTimeInTimezoneToIso(draft.start!, "00:00", fullDayTimezone!))
185
+ : (parseValidDate(draft.start) ?? fallback.start);
186
+ const parsedEnd = semanticFullDay
187
+ ? new Date(
188
+ dateTimeInTimezoneToIso(
189
+ format(addDays(parseISO(draft.end!), 1), "yyyy-MM-dd"),
190
+ "00:00",
191
+ fullDayTimezone!,
192
+ ),
193
+ )
194
+ : parseValidDate(draft.end);
173
195
  const end =
174
196
  parsedEnd && parsedEnd.getTime() > start.getTime()
175
197
  ? parsedEnd
@@ -184,14 +206,19 @@ function draftToCalendarEvent(
184
206
  const { start, end } = draftRange(draft, fallbackDate);
185
207
  return {
186
208
  id: calendarDraftEventId(draft.id),
187
- title: draft.title?.trim() || "(No title)",
209
+ title:
210
+ draft.title?.trim() ||
211
+ (draft.eventType === "outOfOffice" ? "Out of office" : "(No title)"),
188
212
  description: draft.description ?? "",
189
213
  start: start.toISOString(),
190
214
  end: end.toISOString(),
191
215
  startTimeZone: draft.startTimeZone,
192
216
  endTimeZone: draft.endTimeZone ?? draft.startTimeZone,
193
217
  location: draft.location ?? draft.workingLocationLabel ?? "",
194
- allDay: draft.allDay ?? false,
218
+ allDay:
219
+ draft.eventType === "outOfOffice" && draft.fullDay
220
+ ? false
221
+ : (draft.allDay ?? false),
195
222
  source: "local",
196
223
  accountEmail: draft.accountEmail,
197
224
  colorId: draft.colorId,
@@ -199,6 +226,7 @@ function draftToCalendarEvent(
199
226
  transparency: draft.transparency,
200
227
  visibility: draft.visibility,
201
228
  eventType: draft.eventType ?? "default",
229
+ outOfOfficeProperties: draft.outOfOfficeProperties,
202
230
  recurrence: draft.recurrence,
203
231
  attendees: draft.attendees,
204
232
  reminders: draft.reminders,
@@ -236,7 +264,9 @@ function applyDraftPatch(
236
264
  copy("endTimeZone");
237
265
  copy("location");
238
266
  copy("allDay");
267
+ copy("fullDay");
239
268
  copy("eventType");
269
+ copy("outOfOfficeProperties");
240
270
  copy("transparency");
241
271
  copy("visibility");
242
272
  copy("colorId");
@@ -548,6 +578,10 @@ export default function CalendarView() {
548
578
  : events,
549
579
  [events, viewMode, selectedDate],
550
580
  );
581
+ const locationSuggestions = useMemo(
582
+ () => getLocationSuggestions(events),
583
+ [events],
584
+ );
551
585
  const openNotificationEvent = useCallback(
552
586
  (event: CalendarEvent) => {
553
587
  setSelectedDate(parseISO(event.start));
@@ -617,8 +651,13 @@ export default function CalendarView() {
617
651
  persistCalendarDraft(draft);
618
652
  }
619
653
  const trimmedTitle = draft.title?.trim();
654
+ const eventType = draft.eventType ?? "default";
620
655
  const title =
621
- trimmedTitle && trimmedTitle !== "(No title)" ? trimmedTitle : "";
656
+ trimmedTitle && trimmedTitle !== "(No title)"
657
+ ? trimmedTitle
658
+ : eventType === "outOfOffice"
659
+ ? "Out of office"
660
+ : "";
622
661
  if (!title && !isSlotDraftId(draftId)) {
623
662
  committingDraftIdsRef.current.delete(draftId);
624
663
  toast.error(t("calendarView.addTitleBeforeCreate"));
@@ -632,9 +671,13 @@ export default function CalendarView() {
632
671
  return;
633
672
  }
634
673
 
635
- const eventType = draft.eventType ?? "default";
636
674
  const location = draft.location ?? draft.workingLocationLabel ?? "";
637
675
  const timezone = draft.startTimeZone ?? getLocalTimezone();
676
+ const semanticFullDay =
677
+ eventType === "outOfOffice" &&
678
+ draft.fullDay === true &&
679
+ /^\d{4}-\d{2}-\d{2}$/.test(draft.start ?? "") &&
680
+ /^\d{4}-\d{2}-\d{2}$/.test(draft.end ?? "");
638
681
  const statusPatch =
639
682
  eventType === "default"
640
683
  ? {}
@@ -647,21 +690,31 @@ export default function CalendarView() {
647
690
  "customLocation"
648
691
  ? location
649
692
  : draft.workingLocationLabel,
693
+ autoDeclineMode:
694
+ eventType === "outOfOffice"
695
+ ? draft.outOfOfficeProperties?.autoDeclineMode
696
+ : undefined,
697
+ declineMessage:
698
+ eventType === "outOfOffice"
699
+ ? draft.outOfOfficeProperties?.declineMessage
700
+ : undefined,
650
701
  };
651
702
 
652
703
  const payload: Parameters<typeof createEvent.mutate>[0] = {
653
704
  _tempId: eventId,
654
705
  title,
655
- description: draft.description ?? "",
656
- start: start.toISOString(),
657
- end: end.toISOString(),
706
+ description:
707
+ eventType === "outOfOffice" ? "" : (draft.description ?? ""),
708
+ start: semanticFullDay ? draft.start! : start.toISOString(),
709
+ end: semanticFullDay ? draft.end! : end.toISOString(),
658
710
  startTimeZone: draft.allDay ? undefined : timezone,
659
711
  endTimeZone: draft.allDay
660
712
  ? undefined
661
713
  : (draft.endTimeZone ?? draft.startTimeZone ?? timezone),
662
- location,
714
+ location: eventType === "outOfOffice" ? "" : location,
663
715
  accountEmail,
664
716
  allDay: draft.allDay ?? false,
717
+ fullDay: draft.fullDay,
665
718
  transparency:
666
719
  eventType === "workingLocation"
667
720
  ? "transparent"
@@ -673,15 +726,16 @@ export default function CalendarView() {
673
726
  reminders: draft.reminders,
674
727
  remindersUseDefault: draft.remindersUseDefault,
675
728
  ...statusPatch,
676
- addGoogleMeet: draft.addGoogleMeet,
677
- addZoom: draft.addZoom,
729
+ addGoogleMeet:
730
+ eventType === "outOfOffice" ? undefined : draft.addGoogleMeet,
731
+ addZoom: eventType === "outOfOffice" ? undefined : draft.addZoom,
678
732
  color: draft.colorId
679
733
  ? getGoogleEventColorHex(draft.colorId)
680
734
  : undefined,
681
735
  colorId: draft.colorId,
682
736
  recurrence: draft.recurrence,
683
737
  attachments: draft.attachments,
684
- attendees: draft.attendees,
738
+ attendees: eventType === "outOfOffice" ? undefined : draft.attendees,
685
739
  };
686
740
 
687
741
  deletePersistedCalendarDraft(draftId);
@@ -1719,6 +1773,7 @@ export default function CalendarView() {
1719
1773
  defaultDate={selectedDate}
1720
1774
  defaultStartTime={createDefaultStart}
1721
1775
  defaultEndTime={createDefaultEnd}
1776
+ locationSuggestions={locationSuggestions}
1722
1777
  />
1723
1778
  <AccountAvatars />
1724
1779
  <AgentToggleButton />
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-26
4
+ ---
5
+
6
+ Out-of-office events now default to full days with a ready-to-use title and automatic decline settings.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-29
4
+ ---
5
+
6
+ Recent calendar locations now appear as address suggestions while creating an event.
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-29
4
+ ---
5
+
6
+ Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
@@ -110,11 +110,35 @@ export function zonedDateTimeToUtcIso(
110
110
  const [year, month, day] = dateOnly.split("-").map(Number);
111
111
  const [hour, minute] = time.split(":").map(Number);
112
112
  const wallClockUtc = Date.UTC(year, month - 1, day, hour, minute, 0);
113
- const firstGuess = new Date(wallClockUtc);
114
- const firstOffset = offsetMsForTimezone(firstGuess, timezone);
115
- const secondGuess = new Date(wallClockUtc - firstOffset);
116
- const secondOffset = offsetMsForTimezone(secondGuess, timezone);
117
- return new Date(wallClockUtc - secondOffset).toISOString();
113
+ const offsets = new Set<number>();
114
+ for (let hours = -36; hours <= 36; hours += 6) {
115
+ offsets.add(
116
+ offsetMsForTimezone(
117
+ new Date(wallClockUtc + hours * 60 * 60 * 1000),
118
+ timezone,
119
+ ),
120
+ );
121
+ }
122
+
123
+ const candidates = [...offsets]
124
+ .map((offset) => new Date(wallClockUtc - offset))
125
+ .map((candidate) => ({
126
+ candidate,
127
+ localWallClock:
128
+ candidate.getTime() + offsetMsForTimezone(candidate, timezone),
129
+ }))
130
+ .sort((a, b) => {
131
+ const aDelta = a.localWallClock - wallClockUtc;
132
+ const bDelta = b.localWallClock - wallClockUtc;
133
+ if (aDelta === 0 && bDelta === 0) {
134
+ return a.candidate.getTime() - b.candidate.getTime();
135
+ }
136
+ if (aDelta >= 0 && bDelta < 0) return -1;
137
+ if (aDelta < 0 && bDelta >= 0) return 1;
138
+ return Math.abs(aDelta) - Math.abs(bDelta);
139
+ });
140
+
141
+ return candidates[0].candidate.toISOString();
118
142
  }
119
143
 
120
144
  function normalizeDateBound(value: string, timezone: string): string {
@@ -138,7 +138,9 @@ export interface CalendarEventDraft {
138
138
  endTimeZone?: string;
139
139
  location?: string;
140
140
  allDay?: boolean;
141
+ fullDay?: boolean;
141
142
  eventType?: "default" | "outOfOffice" | "focusTime" | "workingLocation";
143
+ outOfOfficeProperties?: CalendarEvent["outOfOfficeProperties"];
142
144
  transparency?: "opaque" | "transparent";
143
145
  visibility?: "default" | "public" | "private" | "confidential";
144
146
  colorId?: string;
@@ -117,6 +117,11 @@ in the moment of agent use.
117
117
  missing-secret states, OAuth grants, and provider connection health.
118
118
  - **Agent UX kit**: sidebar, composer, staged context, mentions, voice, human
119
119
  approval, generative UI, progress, and screen-state exposure.
120
+ - **Custom block kit**: optional extension creation, viewer chrome, slots, and
121
+ promotion affordances. Apps must opt in; Core keeps the sandbox, SQL storage,
122
+ access checks, and compatibility routes, while Toolkit owns reusable adoption
123
+ UI. Analytics may expose this as one-off **Custom Blocks**; durable behavior
124
+ should be promoted to app code.
120
125
  - **Chat history kit**: presentational chat lists and recent-chat rails belong
121
126
  in Toolkit; Core keeps thread persistence, agent execution, transport, and
122
127
  page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
@@ -4,7 +4,7 @@ import {
4
4
  type ChatThreadSummary,
5
5
  } from "@agent-native/core/client/agent-chat";
6
6
  import { appPath } from "@agent-native/core/client/api-path";
7
- import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
7
+ import { useT } from "@agent-native/core/client/i18n";
8
8
  import { openCommandMenu } from "@agent-native/core/client/navigation";
9
9
  import { OrgSwitcher } from "@agent-native/core/client/org";
10
10
  import { FeedbackButton } from "@agent-native/core/client/ui";
@@ -334,9 +334,6 @@ export function Sidebar({
334
334
  <TooltipContent side="right">{t("root.commandSearch")}</TooltipContent>
335
335
  </Tooltip>
336
336
  );
337
- const translateButton = (
338
- <LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
339
- );
340
337
  const feedbackButton = (
341
338
  <FeedbackButton
342
339
  variant={collapsed ? "icon" : "sidebar"}
@@ -495,7 +492,6 @@ export function Sidebar({
495
492
  <SidebarFooterActions
496
493
  collapsed={collapsed}
497
494
  feedback={feedbackButton}
498
- translate={translateButton}
499
495
  search={searchButton}
500
496
  collapse={collapseButton}
501
497
  />
@@ -0,0 +1,6 @@
1
+ ---
2
+ type: improved
3
+ date: 2026-07-29
4
+ ---
5
+
6
+ Sidebar footers now keep Feedback, Search, and Collapse together without a separate language shortcut.
@@ -117,6 +117,11 @@ in the moment of agent use.
117
117
  missing-secret states, OAuth grants, and provider connection health.
118
118
  - **Agent UX kit**: sidebar, composer, staged context, mentions, voice, human
119
119
  approval, generative UI, progress, and screen-state exposure.
120
+ - **Custom block kit**: optional extension creation, viewer chrome, slots, and
121
+ promotion affordances. Apps must opt in; Core keeps the sandbox, SQL storage,
122
+ access checks, and compatibility routes, while Toolkit owns reusable adoption
123
+ UI. Analytics may expose this as one-off **Custom Blocks**; durable behavior
124
+ should be promoted to app code.
120
125
  - **Chat history kit**: presentational chat lists and recent-chat rails belong
121
126
  in Toolkit; Core keeps thread persistence, agent execution, transport, and
122
127
  page-to-sidebar handoff. Use Toolkit's `ChatHistoryRail` for the standard
@@ -505,7 +505,9 @@ export function EditorToolbar({
505
505
  </DropdownMenuItem>
506
506
  ) : null}
507
507
  <DropdownMenuSeparator />
508
- <DropdownMenuItem onSelect={() => setClearOpen(true)}>
508
+ <DropdownMenuItem
509
+ onSelect={() => setTimeout(() => setClearOpen(true), 0)}
510
+ >
509
511
  <IconTrash className="mr-2 h-4 w-4" />
510
512
  {t("editorToolbar.clearAllEdits")}
511
513
  </DropdownMenuItem>
@@ -5,7 +5,7 @@ import {
5
5
  import { appPath } from "@agent-native/core/client/api-path";
6
6
  import { DevDatabaseLink } from "@agent-native/core/client/db-admin";
7
7
  import { getBrowserTabId } from "@agent-native/core/client/hooks";
8
- import { LanguagePicker, useT } from "@agent-native/core/client/i18n";
8
+ import { useT } from "@agent-native/core/client/i18n";
9
9
  import { openCommandMenu } from "@agent-native/core/client/navigation";
10
10
  import {
11
11
  InvitationBanner,
@@ -201,9 +201,6 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
201
201
  <TooltipContent side="right">{t("root.commandSearch")}</TooltipContent>
202
202
  </Tooltip>
203
203
  );
204
- const translateButton = (
205
- <LanguagePicker variant="ghost-icon" label={t("settings.languageLabel")} />
206
- );
207
204
  const feedbackButton = (
208
205
  <FeedbackButton
209
206
  variant={showCollapsedSidebar ? "icon" : "sidebar"}
@@ -665,7 +662,7 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
665
662
  </div>
666
663
 
667
664
  <div className="shrink-0 space-y-2 px-3 py-2">
668
- <OrgSwitcher settingsPath="/settings/organization" />
665
+ <OrgSwitcher settingsPath="/settings#organization" />
669
666
  <DevDatabaseLink />
670
667
  </div>
671
668
  </>
@@ -673,7 +670,6 @@ export function LibraryLayout({ children }: LibraryLayoutProps) {
673
670
  <SidebarFooterActions
674
671
  collapsed={showCollapsedSidebar}
675
672
  feedback={feedbackButton}
676
- translate={translateButton}
677
673
  search={searchButton}
678
674
  collapse={collapseButton}
679
675
  className={showCollapsedSidebar ? undefined : "px-0 py-0"}
@@ -10,7 +10,7 @@ interface DayHeaderProps {
10
10
 
11
11
  export function DayHeader({ label }: DayHeaderProps) {
12
12
  return (
13
- <div className="sticky top-0 z-10 -mx-1 px-1 backdrop-blur-md bg-background/85 supports-[backdrop-filter]:bg-background/70">
13
+ <div className="sticky top-0 z-10 -mx-1 bg-background/85 px-1">
14
14
  <div className="text-[10px] font-semibold uppercase tracking-[0.08em] text-muted-foreground py-1.5">
15
15
  {label}
16
16
  </div>
@@ -29,8 +29,6 @@ export interface TranscriptSegment {
29
29
  interface TranscriptBubblesProps {
30
30
  segments: TranscriptSegment[];
31
31
  isLive: boolean;
32
- recordingId?: string | null;
33
- onSeek: (ms: number) => void;
34
32
  /**
35
33
  * Imperative ref hook: parent can scroll a particular segment into view.
36
34
  * Receives a function (segmentIndex) => void.
@@ -93,8 +91,6 @@ function groupConsecutive(segments: TranscriptSegment[]): BubbleGroup[] {
93
91
  export function TranscriptBubbles({
94
92
  segments,
95
93
  isLive,
96
- recordingId,
97
- onSeek,
98
94
  registerScrollTo,
99
95
  }: TranscriptBubblesProps) {
100
96
  const t = useT();
@@ -329,7 +325,6 @@ export function TranscriptBubbles({
329
325
  </div>
330
326
  <div className="space-y-0.5">
331
327
  {group.segments.map(({ seg, index }) => {
332
- const clickable = !!recordingId;
333
328
  return (
334
329
  <Tooltip key={index}>
335
330
  <TooltipTrigger asChild>
@@ -337,23 +332,7 @@ export function TranscriptBubbles({
337
332
  ref={(el) => {
338
333
  segmentRefs.current[index] = el;
339
334
  }}
340
- role={clickable ? "button" : undefined}
341
- tabIndex={clickable ? 0 : -1}
342
- onClick={() => clickable && onSeek(seg.startMs)}
343
- onKeyDown={(e) => {
344
- if (
345
- clickable &&
346
- (e.key === "Enter" || e.key === " ")
347
- ) {
348
- e.preventDefault();
349
- onSeek(seg.startMs);
350
- }
351
- }}
352
- className={cn(
353
- "group/segment -mx-1 rounded-md px-1 py-1 text-left text-sm leading-relaxed text-foreground transition-colors",
354
- clickable &&
355
- "cursor-pointer hover:bg-accent/40 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring",
356
- )}
335
+ className="group/segment -mx-1 rounded-md px-1 py-1 text-left text-sm leading-relaxed text-foreground transition-colors"
357
336
  >
358
337
  {seg.speaker && !isMe && (
359
338
  <span className="me-2 text-[11px] font-medium text-muted-foreground">
@@ -158,7 +158,7 @@ export function BrandingEditor({
158
158
 
159
159
  <div className="space-y-1.5">
160
160
  <Label>{t("brandingEditor.brandColor")}</Label>
161
- <div className="flex items-center gap-2">
161
+ <div className="flex flex-wrap items-center gap-2">
162
162
  <input
163
163
  type="color"
164
164
  value={brandColor}
@@ -191,6 +191,9 @@ export function BrandingEditor({
191
191
 
192
192
  <div className="space-y-1.5">
193
193
  <Label>{t("brandingEditor.logo")}</Label>
194
+ <p className="text-xs text-muted-foreground">
195
+ {t("brandingEditor.logoUsage")}
196
+ </p>
194
197
  <div
195
198
  className={`rounded-md border border-dashed p-4 flex items-center gap-4 ${
196
199
  dragging ? "bg-primary/5 border-primary" : ""
@@ -322,6 +325,28 @@ export function BrandingEditor({
322
325
  {name || t("brandingEditor.organizationFallback")}
323
326
  </div>
324
327
  </div>
328
+ <div className="text-xs uppercase tracking-wide text-muted-foreground mt-4 mb-2">
329
+ {t("brandingEditor.emailHeaderPreview")}
330
+ </div>
331
+ <div className="rounded-md border border-[#27272a] bg-[#0a0a0c] p-4 flex items-center justify-center gap-2">
332
+ {brandLogoUrl ? (
333
+ <img
334
+ src={brandLogoUrl}
335
+ alt=""
336
+ className="h-7 w-7 object-contain"
337
+ />
338
+ ) : (
339
+ <div
340
+ className="h-7 w-7 rounded bg-white/90 flex items-center justify-center font-semibold text-[12px]"
341
+ style={{ color: brandColor }}
342
+ >
343
+ {name.slice(0, 1).toUpperCase() || "C"}
344
+ </div>
345
+ )}
346
+ <span className="font-semibold text-[#fafafa] truncate">
347
+ {name || t("brandingEditor.organizationFallback")}
348
+ </span>
349
+ </div>
325
350
  </div>
326
351
 
327
352
  <div className="flex justify-end">
@@ -0,0 +1,107 @@
1
+ import { useActionQuery, useSession } from "@agent-native/core/client/hooks";
2
+ import { useT } from "@agent-native/core/client/i18n";
3
+ import { useMemo } from "react";
4
+
5
+ import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
6
+ import { Skeleton } from "@/components/ui/skeleton";
7
+ import {
8
+ BrandingEditor,
9
+ type RecordingVisibility,
10
+ } from "@/components/workspace/branding-editor";
11
+ import type { MemberRole } from "@/components/workspace/members-list";
12
+
13
+ interface OrganizationStateResponse {
14
+ organization: {
15
+ id: string;
16
+ name: string;
17
+ brandColor: string;
18
+ brandLogoUrl: string | null;
19
+ defaultVisibility: RecordingVisibility;
20
+ ownerEmail?: string;
21
+ } | null;
22
+ members: { email: string; role: MemberRole }[];
23
+ }
24
+
25
+ /**
26
+ * Organization identity — name, logo, brand color, default recording
27
+ * visibility. It sits directly above membership in the Organization tab
28
+ * because the name and logo are what recipients see in share emails.
29
+ */
30
+ export function OrganizationIdentityCard() {
31
+ const t = useT();
32
+ const { session } = useSession();
33
+ const email = session?.email ?? "";
34
+
35
+ const { data, isPending, isError } =
36
+ useActionQuery<OrganizationStateResponse>(
37
+ "list-organization-state",
38
+ undefined,
39
+ );
40
+
41
+ const organization = data?.organization ?? null;
42
+ const members = useMemo(() => data?.members ?? [], [data?.members]);
43
+ const isAdmin = useMemo(() => {
44
+ if (organization?.ownerEmail && organization.ownerEmail === email) {
45
+ return true;
46
+ }
47
+ const role = members.find((m) => m.email === email)?.role;
48
+ return role === "admin" || role === "owner";
49
+ }, [members, email, organization?.ownerEmail]);
50
+
51
+ if (isPending) return <Skeleton className="h-64 w-full" />;
52
+ // A failed load must not look like "this org has no branding".
53
+ if (isError) {
54
+ return (
55
+ <Card>
56
+ <CardContent className="py-6 text-center text-sm text-muted-foreground">
57
+ {t("organizationSettings.brandingLoadFailed")}
58
+ </CardContent>
59
+ </Card>
60
+ );
61
+ }
62
+ if (!organization) return null;
63
+
64
+ if (!isAdmin) {
65
+ return (
66
+ <Card>
67
+ <CardHeader>
68
+ <CardTitle className="text-base">
69
+ {t("brandingEditor.title")}
70
+ </CardTitle>
71
+ </CardHeader>
72
+ <CardContent>
73
+ <div className="flex items-center gap-3">
74
+ {organization.brandLogoUrl ? (
75
+ <img
76
+ src={organization.brandLogoUrl}
77
+ alt=""
78
+ className="h-10 w-10 rounded object-contain"
79
+ />
80
+ ) : (
81
+ <div
82
+ className="h-10 w-10 rounded"
83
+ style={{ background: organization.brandColor }}
84
+ />
85
+ )}
86
+ <div>
87
+ <div className="font-medium">{organization.name}</div>
88
+ <div className="text-xs text-muted-foreground">
89
+ {t("organizationSettings.adminsOnlyBranding")}
90
+ </div>
91
+ </div>
92
+ </div>
93
+ </CardContent>
94
+ </Card>
95
+ );
96
+ }
97
+
98
+ return (
99
+ <BrandingEditor
100
+ organizationId={organization.id}
101
+ initialName={organization.name}
102
+ initialBrandColor={organization.brandColor}
103
+ initialBrandLogoUrl={organization.brandLogoUrl}
104
+ initialDefaultVisibility={organization.defaultVisibility}
105
+ />
106
+ );
107
+ }
@@ -547,6 +547,8 @@ const messages = {
547
547
  useColor: "Use {{color}}",
548
548
  logo: "Logo",
549
549
  logoPreview: "Logo preview",
550
+ logoUsage: "Shown to recipients in share emails and on public clip pages.",
551
+ emailHeaderPreview: "Share email header",
550
552
  dropReplace: "Drop a new image to replace",
551
553
  dropHere: "Drop a PNG / JPG / SVG here",
552
554
  uploading: "Uploading…",
@@ -643,10 +645,6 @@ All notable user-facing changes to Clips are documented here. Open it any time f
643
645
  ### Added
644
646
 
645
647
  - See what's new right inside Clips. A changelog now lives in the command menu (Cmd+K) and in Settings.`,
646
- profile: "Profile",
647
- email: "Email",
648
- displayName: "Display name",
649
- displayNamePlaceholder: "Your name",
650
648
  playback: "Playback",
651
649
  defaultPlaybackSpeed: "Default playback speed",
652
650
  playbackDescription: "Applied automatically when you open a recording.",
@@ -786,6 +784,7 @@ All notable user-facing changes to Clips are documented here. Open it any time f
786
784
  "No organization yet. Create one from the organization switcher to get started.",
787
785
  description: "Organization admin: branding, members, invites.",
788
786
  adminsOnlyBranding: "Only admins can edit branding.",
787
+ brandingLoadFailed: "Couldn't load organization branding.",
789
788
  members: "Members",
790
789
  pendingInvites: "Pending invites",
791
790
  noPendingInvites: "No pending invites.",
@@ -495,14 +495,6 @@ export default function MeetingDetailRoute() {
495
495
  });
496
496
  };
497
497
 
498
- const handleSeek = (ms: number) => {
499
- if (!meeting?.recordingId) return;
500
- // /r/:recordingId's `t` param is seconds (see parseTimeParam in
501
- // r.$recordingId.tsx), while transcript segments use ms timestamps.
502
- const seconds = Math.max(0, Math.floor(ms / 1000));
503
- navigate(`/r/${meeting.recordingId}?t=${seconds}`);
504
- };
505
-
506
498
  const handleJumpToSegment = (segmentIndex: number) => {
507
499
  transcriptScrollToRef.current?.(segmentIndex);
508
500
  };
@@ -976,8 +968,6 @@ export default function MeetingDetailRoute() {
976
968
  <TranscriptBubbles
977
969
  segments={segments}
978
970
  isLive={isLive}
979
- recordingId={meeting.recordingId}
980
- onSeek={handleSeek}
981
971
  registerScrollTo={(fn) => {
982
972
  transcriptScrollToRef.current = fn;
983
973
  }}