@agent-native/core 0.115.4 → 0.117.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) hide show
  1. package/agent-native.eject.json +1 -0
  2. package/corpus/README.md +3 -3
  3. package/corpus/core/CHANGELOG.md +43 -0
  4. package/corpus/core/agent-native.eject.json +1 -0
  5. package/corpus/core/docs/AGENTS.md +1 -1
  6. package/corpus/core/docs/content/agent-mentions.mdx +2 -2
  7. package/corpus/core/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
  8. package/corpus/core/docs/content/agent-teams.mdx +4 -4
  9. package/corpus/core/docs/content/dispatch.mdx +10 -10
  10. package/corpus/core/docs/content/drop-in-agent.mdx +4 -4
  11. package/corpus/core/docs/content/external-agents.mdx +1 -1
  12. package/corpus/core/docs/content/frames.mdx +1 -1
  13. package/corpus/core/docs/content/integrations.mdx +13 -2
  14. package/corpus/core/docs/content/key-concepts.mdx +2 -2
  15. package/corpus/core/docs/content/mcp-clients.mdx +7 -1
  16. package/corpus/core/docs/content/multi-app-workspace.mdx +3 -3
  17. package/corpus/core/docs/content/real-time-collaboration.mdx +33 -15
  18. package/corpus/core/docs/content/recurring-jobs.mdx +7 -7
  19. package/corpus/core/docs/content/skills-guide.mdx +4 -4
  20. package/corpus/core/docs/content/template-brain.mdx +1 -1
  21. package/corpus/core/docs/content/toolkit-collaboration.mdx +1 -1
  22. package/corpus/core/docs/content/using-your-agent.mdx +1 -1
  23. package/corpus/core/docs/content/what-is-agent-native.mdx +4 -4
  24. package/corpus/core/docs/content/workspace-management.mdx +4 -4
  25. package/corpus/core/package.json +4 -1
  26. package/corpus/core/src/agent/production-agent.ts +13 -3
  27. package/corpus/core/src/cli/doctor.ts +6 -1
  28. package/corpus/core/src/client/AgentPanel.tsx +79 -41
  29. package/corpus/core/src/client/AssistantChat.tsx +71 -25
  30. package/corpus/core/src/client/FeedbackButton.tsx +33 -7
  31. package/corpus/core/src/client/MultiTabAssistantChat.tsx +6 -8
  32. package/corpus/core/src/client/agent-chat-adapter.ts +11 -2
  33. package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +22 -3
  34. package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +34 -19
  35. package/corpus/core/src/client/analytics.ts +7 -0
  36. package/corpus/core/src/client/chat/message-components.tsx +43 -16
  37. package/corpus/core/src/client/chat/tool-call-display.tsx +30 -18
  38. package/corpus/core/src/client/chat/tool-render-registry.tsx +2 -0
  39. package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +19 -2
  40. package/corpus/core/src/client/resources/ResourceTree.tsx +7 -10
  41. package/corpus/core/src/client/resources/ResourcesPanel.tsx +33 -70
  42. package/corpus/core/src/client/resources/mcp-connection-resume.ts +107 -0
  43. package/corpus/core/src/client/resources/mcp-integration-catalog.ts +65 -12
  44. package/corpus/core/src/client/resources/mcp-integration-logos.ts +4 -0
  45. package/corpus/core/src/client/sse-event-processor.ts +50 -14
  46. package/corpus/core/src/client/use-db-sync.ts +370 -21
  47. package/corpus/core/src/collab/client.ts +26 -2
  48. package/corpus/core/src/connections/catalog.ts +7 -1
  49. package/corpus/core/src/db/ddl-guard.ts +49 -10
  50. package/corpus/core/src/deploy/build.ts +25 -2
  51. package/corpus/core/src/eject/remote-mcp-presets.ts +37 -5
  52. package/corpus/core/src/guards/explicit-collab-access.ts +229 -0
  53. package/corpus/core/src/guards/index.ts +1 -0
  54. package/corpus/core/src/localization/default-messages.ts +54 -5
  55. package/corpus/core/src/mcp/connect-route.ts +34 -51
  56. package/corpus/core/src/provider-api/index.ts +1 -1
  57. package/corpus/core/src/realtime-protocol.ts +92 -0
  58. package/corpus/core/src/server/collab-plugin.ts +137 -18
  59. package/corpus/core/src/server/core-routes-plugin.ts +7 -0
  60. package/corpus/core/src/server/index.ts +2 -0
  61. package/corpus/core/src/server/poll-events.ts +29 -8
  62. package/corpus/core/src/server/poll.ts +1123 -865
  63. package/corpus/core/src/server/realtime-token.ts +106 -0
  64. package/corpus/core/src/server/sentry-config.ts +40 -0
  65. package/corpus/core/src/server/short-lived-token.ts +156 -0
  66. package/corpus/core/src/server/sse.ts +15 -0
  67. package/corpus/core/src/server/ssr-handler.ts +9 -3
  68. package/corpus/core/src/styles/agent-native.css +40 -0
  69. package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  70. package/corpus/core/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  71. package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  72. package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  73. package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  74. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  75. package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  76. package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
  77. package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  78. package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
  79. package/corpus/templates/analytics/AGENTS.md +7 -2
  80. package/corpus/templates/analytics/actions/export-dashboard-panel-to-google-sheet.ts +144 -0
  81. package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -88
  82. package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +34 -37
  83. package/corpus/templates/analytics/app/global.css +0 -4
  84. package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -7
  85. package/corpus/templates/analytics/app/i18n-data.ts +107 -0
  86. package/corpus/templates/analytics/app/lib/data-source-status.ts +9 -0
  87. package/corpus/templates/analytics/app/lib/sql-query.ts +1 -2
  88. package/corpus/templates/analytics/app/pages/Ask.tsx +2 -7
  89. package/corpus/templates/analytics/app/pages/DataSources.tsx +48 -0
  90. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +59 -0
  91. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -0
  92. package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +3 -1
  93. package/corpus/templates/analytics/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
  94. package/corpus/templates/analytics/changelog/2026-07-22-daily-dashboard-email-query-batches.md +6 -0
  95. package/corpus/templates/analytics/changelog/2026-07-22-export-table-panels-directly-to-google-sheets.md +6 -0
  96. package/corpus/templates/analytics/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  97. package/corpus/templates/analytics/changelog/2026-07-22-recent-chats-can-expand-in-the-sidebar.md +6 -0
  98. package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +8 -8
  99. package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +31 -0
  100. package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +3 -5
  101. package/corpus/templates/analytics/server/lib/dashboard-report.ts +12 -0
  102. package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +3 -5
  103. package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +150 -21
  104. package/corpus/templates/analytics/server/lib/google-sheets-export.ts +188 -0
  105. package/corpus/templates/analytics/server/lib/provider-api.ts +7 -2
  106. package/corpus/templates/analytics/server/plugins/collab.ts +6 -3
  107. package/corpus/templates/analytics/shared/sql-query-limits.ts +1 -0
  108. package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  109. package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +35 -13
  110. package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
  111. package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
  112. package/corpus/templates/assets/app/components/layout/Sidebar.tsx +54 -62
  113. package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -6
  114. package/corpus/templates/assets/app/routes/_index.tsx +8 -5
  115. package/corpus/templates/assets/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  116. package/corpus/templates/assets/changelog/2026-07-22-recent-chats-expand-from-a-compact-list.md +6 -0
  117. package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  118. package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
  119. package/corpus/templates/brain/actions/rotate-source-ingest-token.ts +77 -0
  120. package/corpus/templates/brain/app/components/layout/Layout.tsx +5 -1
  121. package/corpus/templates/brain/app/components/layout/Sidebar.tsx +38 -51
  122. package/corpus/templates/brain/app/hooks/use-navigation-state.ts +2 -9
  123. package/corpus/templates/brain/app/i18n-data.ts +120 -0
  124. package/corpus/templates/brain/app/routes/sources.tsx +156 -5
  125. package/corpus/templates/brain/changelog/2026-07-22-chat-runs-always-end-with-an-answer.md +6 -0
  126. package/corpus/templates/brain/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
  127. package/corpus/templates/brain/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  128. package/corpus/templates/brain/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  129. package/corpus/templates/brain/changelog/2026-07-22-long-chat-titles-stay-inside-the-sidebar.md +6 -0
  130. package/corpus/templates/brain/changelog/2026-07-22-new-clips-and-webhook-sources-now-show-their-secure-connecti.md +6 -0
  131. package/corpus/templates/brain/jobs/emit-netlify-brain-queue-cron.ts +125 -0
  132. package/corpus/templates/brain/netlify.toml +5 -1
  133. package/corpus/templates/brain/scripts/configure-prod-clips-source.ts +50 -0
  134. package/corpus/templates/brain/server/lib/capture-sanitization.ts +64 -6
  135. package/corpus/templates/brain/server/plugins/agent-chat.ts +4 -0
  136. package/corpus/templates/brain/server/plugins/brain-jobs.ts +1 -0
  137. package/corpus/templates/brain/server/routes/api/brain/queue/run.post.ts +55 -0
  138. package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  139. package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
  140. package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  141. package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  142. package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
  143. package/corpus/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  144. package/corpus/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  145. package/corpus/templates/chat/app/routes/_index.tsx +8 -5
  146. package/corpus/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  147. package/corpus/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  148. package/corpus/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  149. package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  150. package/corpus/templates/clips/AGENTS.md +9 -1
  151. package/corpus/templates/clips/actions/export-to-brain.ts +82 -6
  152. package/corpus/templates/clips/actions/request-transcript.ts +25 -14
  153. package/corpus/templates/clips/app/components/sharing/share-ui.tsx +12 -0
  154. package/corpus/templates/clips/app/i18n/en-US.ts +1 -0
  155. package/corpus/templates/clips/changelog/2026-07-22-clips-transcripts-now-retry-brain-export.md +5 -0
  156. package/corpus/templates/clips/changelog/2026-07-22-german-umlauts-and-other-non-ascii-characters-now-paste-corr.md +6 -0
  157. package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +26 -3
  158. package/corpus/templates/clips/jobs/emit-netlify-brain-export-cron.ts +118 -0
  159. package/corpus/templates/clips/netlify.toml +4 -1
  160. package/corpus/templates/clips/scripts/configure-prod-brain-export.ts +92 -0
  161. package/corpus/templates/clips/server/jobs/brain-export.ts +182 -0
  162. package/corpus/templates/clips/server/lib/brain-export-state.ts +42 -0
  163. package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +5 -1
  164. package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
  165. package/corpus/templates/clips/server/register-secrets.ts +42 -0
  166. package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +10 -1
  167. package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +45 -0
  168. package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  169. package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
  170. package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +566 -299
  171. package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +14 -0
  172. package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
  173. package/corpus/templates/content/app/i18n-data.ts +90 -0
  174. package/corpus/templates/content/server/plugins/collab.ts +1 -1
  175. package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  176. package/corpus/templates/crm/actions/_crm-data-program-actions.ts +15 -0
  177. package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +2 -0
  178. package/corpus/templates/crm/actions/run.ts +2 -6
  179. package/corpus/templates/crm/actions/update-crm-record.ts +4 -2
  180. package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +6 -0
  181. package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +6 -0
  182. package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +6 -0
  183. package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +6 -0
  184. package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  185. package/corpus/templates/crm/server/crm/hubspot-adapter.ts +4 -1
  186. package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  187. package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -1
  188. package/corpus/templates/design/server/plugins/collab.ts +11 -8
  189. package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  190. package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  191. package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
  192. package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
  193. package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
  194. package/corpus/templates/forms/app/hooks/use-navigation-state.ts +2 -9
  195. package/corpus/templates/forms/app/root.tsx +1 -6
  196. package/corpus/templates/forms/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  197. package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  198. package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  199. package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
  200. package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
  201. package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  202. package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
  203. package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -1
  204. package/corpus/templates/plan/app/components/layout/Sidebar.tsx +57 -72
  205. package/corpus/templates/plan/app/hooks/use-navigation-state.ts +2 -9
  206. package/corpus/templates/plan/app/lib/create-plan-routing.ts +2 -2
  207. package/corpus/templates/plan/app/pages/PlanChatPage.tsx +0 -1
  208. package/corpus/templates/plan/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  209. package/corpus/templates/plan/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  210. package/corpus/templates/plan/changelog/2026-07-22-recent-chats-and-sidebar-controls-are-more-compact.md +6 -0
  211. package/corpus/templates/plan/server/plugins/collab.ts +5 -2
  212. package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  213. package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -1
  214. package/corpus/templates/slides/server/plugins/collab.ts +11 -8
  215. package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  216. package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +1 -1
  217. package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +5 -22
  218. package/corpus/templates/tasks/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  219. package/corpus/toolkit/CHANGELOG.md +7 -0
  220. package/corpus/toolkit/README.md +12 -3
  221. package/corpus/toolkit/package.json +1 -1
  222. package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +89 -0
  223. package/corpus/toolkit/src/chat-history/index.ts +5 -0
  224. package/corpus/toolkit/src/chat-history.css +59 -0
  225. package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +106 -36
  226. package/corpus/toolkit/src/composer/VoiceButton.tsx +49 -0
  227. package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +2 -1
  228. package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +5 -3
  229. package/corpus/toolkit/src/styles.css +35 -0
  230. package/dist/agent/production-agent.d.ts.map +1 -1
  231. package/dist/agent/production-agent.js +13 -3
  232. package/dist/agent/production-agent.js.map +1 -1
  233. package/dist/cli/doctor.d.ts +1 -1
  234. package/dist/cli/doctor.d.ts.map +1 -1
  235. package/dist/cli/doctor.js +5 -2
  236. package/dist/cli/doctor.js.map +1 -1
  237. package/dist/client/AgentPanel.d.ts +1 -0
  238. package/dist/client/AgentPanel.d.ts.map +1 -1
  239. package/dist/client/AgentPanel.js +38 -18
  240. package/dist/client/AgentPanel.js.map +1 -1
  241. package/dist/client/AssistantChat.d.ts.map +1 -1
  242. package/dist/client/AssistantChat.js +55 -20
  243. package/dist/client/AssistantChat.js.map +1 -1
  244. package/dist/client/FeedbackButton.d.ts +4 -2
  245. package/dist/client/FeedbackButton.d.ts.map +1 -1
  246. package/dist/client/FeedbackButton.js +18 -2
  247. package/dist/client/FeedbackButton.js.map +1 -1
  248. package/dist/client/MultiTabAssistantChat.d.ts +1 -1
  249. package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
  250. package/dist/client/MultiTabAssistantChat.js +2 -3
  251. package/dist/client/MultiTabAssistantChat.js.map +1 -1
  252. package/dist/client/agent-chat-adapter.d.ts.map +1 -1
  253. package/dist/client/agent-chat-adapter.js +11 -3
  254. package/dist/client/agent-chat-adapter.js.map +1 -1
  255. package/dist/client/agent-page/AgentTabFrame.d.ts +3 -1
  256. package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -1
  257. package/dist/client/agent-page/AgentTabFrame.js +3 -2
  258. package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
  259. package/dist/client/agent-page/AgentTabsPage.d.ts +2 -0
  260. package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
  261. package/dist/client/agent-page/AgentTabsPage.js +26 -15
  262. package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
  263. package/dist/client/analytics.d.ts +10 -0
  264. package/dist/client/analytics.d.ts.map +1 -1
  265. package/dist/client/analytics.js.map +1 -1
  266. package/dist/client/chat/message-components.d.ts +6 -1
  267. package/dist/client/chat/message-components.d.ts.map +1 -1
  268. package/dist/client/chat/message-components.js +17 -11
  269. package/dist/client/chat/message-components.js.map +1 -1
  270. package/dist/client/chat/tool-call-display.d.ts +11 -1
  271. package/dist/client/chat/tool-call-display.d.ts.map +1 -1
  272. package/dist/client/chat/tool-call-display.js +16 -17
  273. package/dist/client/chat/tool-call-display.js.map +1 -1
  274. package/dist/client/chat/tool-render-registry.d.ts +2 -0
  275. package/dist/client/chat/tool-render-registry.d.ts.map +1 -1
  276. package/dist/client/chat/tool-render-registry.js.map +1 -1
  277. package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
  278. package/dist/client/resources/McpConnectionSuggestion.js +15 -1
  279. package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
  280. package/dist/client/resources/ResourceTree.d.ts.map +1 -1
  281. package/dist/client/resources/ResourceTree.js +3 -3
  282. package/dist/client/resources/ResourceTree.js.map +1 -1
  283. package/dist/client/resources/ResourcesPanel.d.ts +1 -0
  284. package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
  285. package/dist/client/resources/ResourcesPanel.js +34 -20
  286. package/dist/client/resources/ResourcesPanel.js.map +1 -1
  287. package/dist/client/resources/mcp-connection-resume.d.ts +11 -0
  288. package/dist/client/resources/mcp-connection-resume.d.ts.map +1 -0
  289. package/dist/client/resources/mcp-connection-resume.js +95 -0
  290. package/dist/client/resources/mcp-connection-resume.js.map +1 -0
  291. package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
  292. package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
  293. package/dist/client/resources/mcp-integration-catalog.js +63 -8
  294. package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
  295. package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -1
  296. package/dist/client/resources/mcp-integration-logos.js +4 -0
  297. package/dist/client/resources/mcp-integration-logos.js.map +1 -1
  298. package/dist/client/sse-event-processor.d.ts +5 -0
  299. package/dist/client/sse-event-processor.d.ts.map +1 -1
  300. package/dist/client/sse-event-processor.js +39 -13
  301. package/dist/client/sse-event-processor.js.map +1 -1
  302. package/dist/client/use-db-sync.d.ts +4 -3
  303. package/dist/client/use-db-sync.d.ts.map +1 -1
  304. package/dist/client/use-db-sync.js +332 -21
  305. package/dist/client/use-db-sync.js.map +1 -1
  306. package/dist/collab/client.d.ts.map +1 -1
  307. package/dist/collab/client.js +26 -2
  308. package/dist/collab/client.js.map +1 -1
  309. package/dist/collab/routes.d.ts +1 -1
  310. package/dist/connections/catalog.d.ts +1 -1
  311. package/dist/connections/catalog.d.ts.map +1 -1
  312. package/dist/connections/catalog.js +7 -1
  313. package/dist/connections/catalog.js.map +1 -1
  314. package/dist/db/ddl-guard.d.ts +7 -2
  315. package/dist/db/ddl-guard.d.ts.map +1 -1
  316. package/dist/db/ddl-guard.js +21 -9
  317. package/dist/db/ddl-guard.js.map +1 -1
  318. package/dist/deploy/build.d.ts.map +1 -1
  319. package/dist/deploy/build.js +25 -2
  320. package/dist/deploy/build.js.map +1 -1
  321. package/dist/eject/remote-mcp-presets.d.ts.map +1 -1
  322. package/dist/eject/remote-mcp-presets.js +33 -3
  323. package/dist/eject/remote-mcp-presets.js.map +1 -1
  324. package/dist/guards/explicit-collab-access.d.ts +8 -0
  325. package/dist/guards/explicit-collab-access.d.ts.map +1 -0
  326. package/dist/guards/explicit-collab-access.js +214 -0
  327. package/dist/guards/explicit-collab-access.js.map +1 -0
  328. package/dist/guards/index.d.ts +1 -0
  329. package/dist/guards/index.d.ts.map +1 -1
  330. package/dist/guards/index.js +1 -0
  331. package/dist/guards/index.js.map +1 -1
  332. package/dist/localization/default-messages.d.ts +43 -0
  333. package/dist/localization/default-messages.d.ts.map +1 -1
  334. package/dist/localization/default-messages.js +48 -5
  335. package/dist/localization/default-messages.js.map +1 -1
  336. package/dist/mcp/connect-route.d.ts.map +1 -1
  337. package/dist/mcp/connect-route.js +34 -48
  338. package/dist/mcp/connect-route.js.map +1 -1
  339. package/dist/observability/routes.d.ts +5 -5
  340. package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
  341. package/dist/provider-api/actions/provider-api.d.ts +7 -7
  342. package/dist/provider-api/corpus-jobs.d.ts +2 -2
  343. package/dist/provider-api/index.js +1 -1
  344. package/dist/provider-api/index.js.map +1 -1
  345. package/dist/realtime-protocol.d.ts +40 -0
  346. package/dist/realtime-protocol.d.ts.map +1 -0
  347. package/dist/realtime-protocol.js +69 -0
  348. package/dist/realtime-protocol.js.map +1 -0
  349. package/dist/resources/handlers.d.ts +1 -1
  350. package/dist/secrets/routes.d.ts +3 -3
  351. package/dist/server/collab-plugin.d.ts +34 -3
  352. package/dist/server/collab-plugin.d.ts.map +1 -1
  353. package/dist/server/collab-plugin.js +65 -12
  354. package/dist/server/collab-plugin.js.map +1 -1
  355. package/dist/server/core-routes-plugin.d.ts.map +1 -1
  356. package/dist/server/core-routes-plugin.js +3 -0
  357. package/dist/server/core-routes-plugin.js.map +1 -1
  358. package/dist/server/index.d.ts +1 -1
  359. package/dist/server/index.d.ts.map +1 -1
  360. package/dist/server/index.js.map +1 -1
  361. package/dist/server/poll-events.d.ts +7 -1
  362. package/dist/server/poll-events.d.ts.map +1 -1
  363. package/dist/server/poll-events.js +24 -7
  364. package/dist/server/poll-events.js.map +1 -1
  365. package/dist/server/poll.d.ts +223 -42
  366. package/dist/server/poll.d.ts.map +1 -1
  367. package/dist/server/poll.js +849 -737
  368. package/dist/server/poll.js.map +1 -1
  369. package/dist/server/realtime-token.d.ts +34 -0
  370. package/dist/server/realtime-token.d.ts.map +1 -0
  371. package/dist/server/realtime-token.js +85 -0
  372. package/dist/server/realtime-token.js.map +1 -0
  373. package/dist/server/sentry-config.d.ts +12 -0
  374. package/dist/server/sentry-config.d.ts.map +1 -1
  375. package/dist/server/sentry-config.js +34 -0
  376. package/dist/server/sentry-config.js.map +1 -1
  377. package/dist/server/short-lived-token.d.ts +46 -0
  378. package/dist/server/short-lived-token.d.ts.map +1 -1
  379. package/dist/server/short-lived-token.js +104 -0
  380. package/dist/server/short-lived-token.js.map +1 -1
  381. package/dist/server/sse.d.ts +1 -1
  382. package/dist/server/sse.d.ts.map +1 -1
  383. package/dist/server/sse.js +4 -0
  384. package/dist/server/sse.js.map +1 -1
  385. package/dist/server/ssr-handler.d.ts.map +1 -1
  386. package/dist/server/ssr-handler.js +5 -3
  387. package/dist/server/ssr-handler.js.map +1 -1
  388. package/dist/server/transcribe-voice.d.ts +1 -1
  389. package/dist/styles/agent-native.css +40 -0
  390. package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  391. package/dist/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  392. package/dist/templates/chat/app/components/layout/Layout.tsx +1 -0
  393. package/dist/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  394. package/dist/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  395. package/dist/templates/chat/app/routes/_index.tsx +8 -5
  396. package/dist/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  397. package/dist/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  398. package/dist/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  399. package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  400. package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  401. package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  402. package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  403. package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  404. package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  405. package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  406. package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
  407. package/docs/AGENTS.md +1 -1
  408. package/docs/content/agent-mentions.mdx +2 -2
  409. package/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
  410. package/docs/content/agent-teams.mdx +4 -4
  411. package/docs/content/dispatch.mdx +10 -10
  412. package/docs/content/drop-in-agent.mdx +4 -4
  413. package/docs/content/external-agents.mdx +1 -1
  414. package/docs/content/frames.mdx +1 -1
  415. package/docs/content/integrations.mdx +13 -2
  416. package/docs/content/key-concepts.mdx +2 -2
  417. package/docs/content/mcp-clients.mdx +7 -1
  418. package/docs/content/multi-app-workspace.mdx +3 -3
  419. package/docs/content/real-time-collaboration.mdx +33 -15
  420. package/docs/content/recurring-jobs.mdx +7 -7
  421. package/docs/content/skills-guide.mdx +4 -4
  422. package/docs/content/template-brain.mdx +1 -1
  423. package/docs/content/toolkit-collaboration.mdx +1 -1
  424. package/docs/content/using-your-agent.mdx +1 -1
  425. package/docs/content/what-is-agent-native.mdx +4 -4
  426. package/docs/content/workspace-management.mdx +4 -4
  427. package/package.json +6 -3
  428. package/src/agent/production-agent.ts +13 -3
  429. package/src/cli/doctor.ts +6 -1
  430. package/src/client/AgentPanel.tsx +79 -41
  431. package/src/client/AssistantChat.tsx +71 -25
  432. package/src/client/FeedbackButton.tsx +33 -7
  433. package/src/client/MultiTabAssistantChat.tsx +6 -8
  434. package/src/client/agent-chat-adapter.ts +11 -2
  435. package/src/client/agent-page/AgentTabFrame.tsx +22 -3
  436. package/src/client/agent-page/AgentTabsPage.tsx +34 -19
  437. package/src/client/analytics.ts +7 -0
  438. package/src/client/chat/message-components.tsx +43 -16
  439. package/src/client/chat/tool-call-display.tsx +30 -18
  440. package/src/client/chat/tool-render-registry.tsx +2 -0
  441. package/src/client/resources/McpConnectionSuggestion.tsx +19 -2
  442. package/src/client/resources/ResourceTree.tsx +7 -10
  443. package/src/client/resources/ResourcesPanel.tsx +33 -70
  444. package/src/client/resources/mcp-connection-resume.ts +107 -0
  445. package/src/client/resources/mcp-integration-catalog.ts +65 -12
  446. package/src/client/resources/mcp-integration-logos.ts +4 -0
  447. package/src/client/sse-event-processor.ts +50 -14
  448. package/src/client/use-db-sync.ts +370 -21
  449. package/src/collab/client.ts +26 -2
  450. package/src/connections/catalog.ts +7 -1
  451. package/src/db/ddl-guard.ts +49 -10
  452. package/src/deploy/build.ts +25 -2
  453. package/src/eject/remote-mcp-presets.ts +37 -5
  454. package/src/guards/explicit-collab-access.ts +229 -0
  455. package/src/guards/index.ts +1 -0
  456. package/src/localization/default-messages.ts +54 -5
  457. package/src/mcp/connect-route.ts +34 -51
  458. package/src/provider-api/index.ts +1 -1
  459. package/src/realtime-protocol.ts +92 -0
  460. package/src/server/collab-plugin.ts +137 -18
  461. package/src/server/core-routes-plugin.ts +7 -0
  462. package/src/server/index.ts +2 -0
  463. package/src/server/poll-events.ts +29 -8
  464. package/src/server/poll.ts +1123 -865
  465. package/src/server/realtime-token.ts +106 -0
  466. package/src/server/sentry-config.ts +40 -0
  467. package/src/server/short-lived-token.ts +156 -0
  468. package/src/server/sse.ts +15 -0
  469. package/src/server/ssr-handler.ts +9 -3
  470. package/src/styles/agent-native.css +40 -0
  471. package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  472. package/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
  473. package/src/templates/chat/app/components/layout/Layout.tsx +1 -0
  474. package/src/templates/chat/app/components/layout/Sidebar.tsx +43 -67
  475. package/src/templates/chat/app/hooks/use-navigation-state.ts +2 -7
  476. package/src/templates/chat/app/routes/_index.tsx +8 -5
  477. package/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
  478. package/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
  479. package/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
  480. package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  481. package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
  482. package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
  483. package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  484. package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
  485. package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
  486. package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
  487. package/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
@@ -0,0 +1,77 @@
1
+ import { defineAction } from "@agent-native/core";
2
+ import { assertAccess } from "@agent-native/core/sharing";
3
+ import { eq } from "drizzle-orm";
4
+ import { z } from "zod";
5
+
6
+ import { getDb, schema } from "../server/db/index.js";
7
+ import {
8
+ nanoid,
9
+ nowIso,
10
+ parseJson,
11
+ serializeSource,
12
+ sha256Hex,
13
+ stableJson,
14
+ } from "../server/lib/brain.js";
15
+
16
+ function sourceKeyFor(source: {
17
+ sourceKey?: string | null;
18
+ configJson?: string | null;
19
+ }) {
20
+ const columnValue = source.sourceKey?.trim();
21
+ if (columnValue) return columnValue;
22
+ const config = parseJson<Record<string, unknown>>(source.configJson, {});
23
+ const configValue = config.sourceKey;
24
+ return typeof configValue === "string" && configValue.trim()
25
+ ? configValue.trim()
26
+ : null;
27
+ }
28
+
29
+ export default defineAction({
30
+ description:
31
+ "Rotate the signed ingest token for a configured Clips or generic Brain source. The new token is returned once so it can be saved in the sending app.",
32
+ agentTool: false,
33
+ toolCallable: false,
34
+ schema: z.object({
35
+ sourceId: z.string().min(1),
36
+ }),
37
+ run: async ({ sourceId }) => {
38
+ const access = await assertAccess("brain-source", sourceId, "admin");
39
+ const existing = access.resource;
40
+ if (existing.provider !== "clips" && existing.provider !== "generic") {
41
+ throw new Error(
42
+ "Only configured Clips or generic sources can rotate an ingest token.",
43
+ );
44
+ }
45
+
46
+ const sourceKey = sourceKeyFor(existing);
47
+ if (!sourceKey) {
48
+ throw new Error("This source is missing a signed-ingest source key.");
49
+ }
50
+
51
+ const ingestToken = `brain_${nanoid(32)}`;
52
+ const ingestTokenHash = await sha256Hex(ingestToken);
53
+ const config = {
54
+ ...parseJson<Record<string, unknown>>(existing.configJson, {}),
55
+ sourceKey,
56
+ ingestTokenHash,
57
+ };
58
+ const db = getDb();
59
+ await db
60
+ .update(schema.brainSources)
61
+ .set({
62
+ sourceKey,
63
+ ingestTokenHash,
64
+ configJson: stableJson(config),
65
+ updatedAt: nowIso(),
66
+ })
67
+ .where(eq(schema.brainSources.id, sourceId));
68
+ const [source] = await db
69
+ .select()
70
+ .from(schema.brainSources)
71
+ .where(eq(schema.brainSources.id, sourceId))
72
+ .limit(1);
73
+ if (!source) throw new Error(`Brain source ${sourceId} was not found`);
74
+
75
+ return { source: serializeSource(source), ingestToken };
76
+ },
77
+ });
@@ -44,7 +44,11 @@ export function Layout({ children }: { children: React.ReactNode }) {
44
44
  activePath: location.pathname,
45
45
  enabled: !isAskRoute,
46
46
  });
47
- useAgentChatHomeHandoffLinks({ storageKey: "brain", chatPath: "/" });
47
+ useAgentChatHomeHandoffLinks({
48
+ storageKey: "brain",
49
+ chatPath: "/",
50
+ requireActiveHandoff: false,
51
+ });
48
52
 
49
53
  useEffect(() => {
50
54
  setMobileSidebarOpen(false);
@@ -10,13 +10,12 @@ import { useT } from "@agent-native/core/client/i18n";
10
10
  import { OrgSwitcher } from "@agent-native/core/client/org";
11
11
  import { FeedbackButton } from "@agent-native/core/client/ui";
12
12
  import {
13
- ChatHistoryList,
13
+ ChatHistoryRail,
14
14
  type ChatHistoryItem,
15
15
  } from "@agent-native/toolkit/chat-history";
16
16
  import {
17
17
  IconLayoutSidebarLeftCollapse,
18
18
  IconLayoutSidebarLeftExpand,
19
- IconPlus,
20
19
  } from "@tabler/icons-react";
21
20
  import { useEffect, useMemo } from "react";
22
21
  import { Link, NavLink, useLocation, useNavigate } from "react-router";
@@ -102,8 +101,7 @@ function BrainChatsSection() {
102
101
  () =>
103
102
  threads
104
103
  .filter((thread) => thread.messageCount > 0 && !thread.archivedAt)
105
- .sort(compareThreads)
106
- .slice(0, 8),
104
+ .sort(compareThreads),
107
105
  [threads],
108
106
  );
109
107
  const chatItems = useMemo<ChatHistoryItem[]>(
@@ -178,50 +176,37 @@ function BrainChatsSection() {
178
176
 
179
177
  return (
180
178
  <div className="mt-2 border-s border-sidebar-border/70 ps-3">
181
- <div className="mb-1 flex h-7 items-center gap-2 pe-1">
182
- <div className="min-w-0 flex-1 text-xs font-medium text-sidebar-foreground/70">
183
- {t("chat.chats")}
184
- </div>
185
- <Tooltip>
186
- <TooltipTrigger asChild>
187
- <button
188
- type="button"
189
- onClick={handleNewChat}
190
- className="flex size-6 shrink-0 items-center justify-center rounded-md text-sidebar-foreground/65 transition-colors hover:bg-sidebar-accent hover:text-sidebar-accent-foreground"
191
- aria-label={t("chat.newBrainChat")}
192
- >
193
- <IconPlus className="size-3.5" />
194
- </button>
195
- </TooltipTrigger>
196
- <TooltipContent>{t("chat.newChat")}</TooltipContent>
197
- </Tooltip>
198
- </div>
199
- {visibleThreads.length > 0 && (
200
- <ChatHistoryList
201
- items={chatItems}
202
- activeId={activeThreadId}
203
- onSelect={openThread}
204
- onTogglePin={(threadId) => {
205
- const thread = visibleThreads.find((item) => item.id === threadId);
206
- if (thread) void pinThread(threadId, !thread.pinnedAt);
207
- }}
208
- onRename={handleRenameThread}
209
- renameMaxLength={160}
210
- onDelete={(threadId) => void handleArchiveThread(threadId)}
211
- labels={{
212
- options: (item) =>
213
- t("chat.optionsFor", { title: item.titleText ?? "" }),
214
- renameInput: (item) =>
215
- t("chat.renameThread", { title: item.titleText ?? "" }),
216
- rename: t("chat.renameChat"),
217
- pin: t("chat.pinChat"),
218
- unpin: t("chat.unpinChat"),
219
- delete: t("chat.archiveChat"),
220
- }}
221
- variant="rail"
222
- className="min-w-0"
223
- />
224
- )}
179
+ <ChatHistoryRail
180
+ items={chatItems}
181
+ activeId={activeThreadId}
182
+ onSelect={openThread}
183
+ onNewChat={() => void handleNewChat()}
184
+ railLabels={{
185
+ newChat: t("chat.newChat"),
186
+ showMore: t("chat.chats"),
187
+ showLess: t("chat.chats"),
188
+ }}
189
+ previewCount={5}
190
+ expandedCount={15}
191
+ onTogglePin={(threadId) => {
192
+ const thread = visibleThreads.find((item) => item.id === threadId);
193
+ if (thread) void pinThread(threadId, !thread.pinnedAt);
194
+ }}
195
+ onRename={handleRenameThread}
196
+ renameMaxLength={160}
197
+ onDelete={(threadId) => void handleArchiveThread(threadId)}
198
+ labels={{
199
+ options: (item) =>
200
+ t("chat.optionsFor", { title: item.titleText ?? "" }),
201
+ renameInput: (item) =>
202
+ t("chat.renameThread", { title: item.titleText ?? "" }),
203
+ rename: t("chat.renameChat"),
204
+ pin: t("chat.pinChat"),
205
+ unpin: t("chat.unpinChat"),
206
+ delete: t("chat.archiveChat"),
207
+ }}
208
+ className="min-w-0"
209
+ />
225
210
  </div>
226
211
  );
227
212
  }
@@ -312,7 +297,6 @@ export function Sidebar({
312
297
  </p>
313
298
  </div>
314
299
  </Link>
315
- {!collapsed ? collapseButton : null}
316
300
  </div>
317
301
 
318
302
  <nav
@@ -394,11 +378,14 @@ export function Sidebar({
394
378
  {!collapsed ? (
395
379
  <div className="px-3 py-2">
396
380
  <DevDatabaseLink />
397
- <FeedbackButton />
381
+ <div className="flex items-center justify-end gap-1">
382
+ <FeedbackButton className="min-w-0 flex-1" side="right" />
383
+ {collapseButton}
384
+ </div>
398
385
  </div>
399
386
  ) : null}
400
387
 
401
- {collapseButton ? (
388
+ {collapsed && collapseButton ? (
402
389
  <div className="flex justify-center px-2 py-2">{collapseButton}</div>
403
390
  ) : null}
404
391
  </div>
@@ -1,7 +1,4 @@
1
- import {
2
- isAgentChatHomeHandoffActive,
3
- markAgentChatHomeHandoff,
4
- } from "@agent-native/core/client/agent-chat";
1
+ import { markAgentChatHomeHandoff } from "@agent-native/core/client/agent-chat";
5
2
  import { appBasePath, appPath } from "@agent-native/core/client/api-path";
6
3
  import { useAgentRouteState } from "@agent-native/core/client/navigation";
7
4
  import { useLocation } from "react-router";
@@ -109,11 +106,7 @@ export function useNavigationState() {
109
106
  return `${path}${params.size ? `?${params.toString()}` : ""}`;
110
107
  },
111
108
  onNavigate: (_command, path) => {
112
- if (
113
- location.pathname === "/" &&
114
- pathnameFromPath(path) !== "/" &&
115
- isAgentChatHomeHandoffActive("brain")
116
- ) {
109
+ if (location.pathname === "/" && pathnameFromPath(path) !== "/") {
117
110
  markAgentChatHomeHandoff("brain");
118
111
  }
119
112
  },
@@ -403,6 +403,18 @@ const enUS = {
403
403
  noCapturesTitle: "No captures match this view",
404
404
  noCapturesDetail:
405
405
  "Try another status, run a source sync, or import a transcript.",
406
+ rotateIngestToken: "Rotate ingest token",
407
+ connectIngestSource: "Connect {{source}}",
408
+ ingestHandoffDescription:
409
+ "Save these values in the sending app now. The ingest token is shown only once and cannot be recovered after this dialog closes.",
410
+ endpoint: "Endpoint",
411
+ sourceKey: "Source key",
412
+ ingestToken: "Ingest token",
413
+ copied: "Copied",
414
+ copy: "Copy",
415
+ ingestTokenSecurity:
416
+ "For security, Brain stores only a hash of this token. Rotate the token whenever the receiving app needs a new credential.",
417
+ ingestHandoffSaved: "I saved these values",
406
418
  tuneSource: "Tune source",
407
419
  setupDescription:
408
420
  "Configure what Brain may ingest. Credentials stay in the workspace credential store; this form only saves allow-lists, cursors, and review rules.",
@@ -3052,6 +3064,18 @@ const exactEnglishDebtOverrides: Partial<
3052
3064
  noCapturesDetail:
3053
3065
  "جرب حالة أخرى، أو قم بتشغيل مزامنة المصدر، أو قم باستيراد نص.",
3054
3066
  noCapturesTitle: "لا توجد لقطات تطابق هذا الرأي",
3067
+ rotateIngestToken: "تدوير رمز الإدخال",
3068
+ connectIngestSource: "ربط {{source}}",
3069
+ ingestHandoffDescription:
3070
+ "احفظ هذه القيم في التطبيق المرسل الآن. سيُعرض رمز الإدخال مرة واحدة فقط ولا يمكن استعادته بعد إغلاق هذا الحوار.",
3071
+ endpoint: "نقطة النهاية",
3072
+ sourceKey: "مفتاح المصدر",
3073
+ ingestToken: "رمز الإدخال",
3074
+ copied: "تم النسخ",
3075
+ copy: "نسخ",
3076
+ ingestTokenSecurity:
3077
+ "لأسباب أمنية، يخزّن Brain تجزئة هذا الرمز فقط. أدر الرمز كلما احتاج التطبيق المستلم إلى بيانات اعتماد جديدة.",
3078
+ ingestHandoffSaved: "حفظت هذه القيم",
3055
3079
  noConnectionProviders:
3056
3080
  "لا يتوفر أي موفري اتصال Brain من الكتالوج المشترك.",
3057
3081
  noCredentialKeysRequired: "لا توجد مفاتيح الاعتماد المطلوبة",
@@ -3467,6 +3491,18 @@ const exactEnglishDebtOverrides: Partial<
3467
3491
  noCapturesDetail:
3468
3492
  "Versuchen Sie es mit einem anderen Status, führen Sie eine Quellsynchronisierung durch oder importieren Sie ein Transkript.",
3469
3493
  noCapturesTitle: "Keine Aufnahmen stimmen mit dieser Ansicht überein",
3494
+ rotateIngestToken: "Aufnahmetoken drehen",
3495
+ connectIngestSource: "{{source}} verbinden",
3496
+ ingestHandoffDescription:
3497
+ "Speichern Sie diese Werte jetzt in der sendenden App. Das Aufnahmetoken wird nur einmal angezeigt und kann nach dem Schließen dieses Dialogs nicht wiederhergestellt werden.",
3498
+ endpoint: "Endpunkt",
3499
+ sourceKey: "Quellschlüssel",
3500
+ ingestToken: "Aufnahmetoken",
3501
+ copied: "Kopiert",
3502
+ copy: "Kopieren",
3503
+ ingestTokenSecurity:
3504
+ "Aus Sicherheitsgründen speichert Brain nur einen Hash dieses Tokens. Drehen Sie das Token, sobald die empfangende App neue Anmeldedaten benötigt.",
3505
+ ingestHandoffSaved: "Ich habe diese Werte gespeichert",
3470
3506
  noConnectionProviders:
3471
3507
  "Im freigegebenen Katalog sind keine Brain-Verbindungsanbieter verfügbar.",
3472
3508
  noCredentialKeysRequired:
@@ -3891,6 +3927,18 @@ const exactEnglishDebtOverrides: Partial<
3891
3927
  noCapturesDetail:
3892
3928
  "Pruebe con otro estado, ejecute una sincronización de origen o importe una transcripción.",
3893
3929
  noCapturesTitle: "Ninguna captura coincide con esta vista.",
3930
+ rotateIngestToken: "Rotar token de ingesta",
3931
+ connectIngestSource: "Conectar {{source}}",
3932
+ ingestHandoffDescription:
3933
+ "Guarde estos valores ahora en la aplicación emisora. El token de ingesta se muestra una sola vez y no se puede recuperar después de cerrar este diálogo.",
3934
+ endpoint: "Punto final",
3935
+ sourceKey: "Clave de origen",
3936
+ ingestToken: "Token de ingesta",
3937
+ copied: "Copiado",
3938
+ copy: "Copiar",
3939
+ ingestTokenSecurity:
3940
+ "Por seguridad, Brain solo almacena un hash de este token. Rote el token cuando la aplicación receptora necesite una credencial nueva.",
3941
+ ingestHandoffSaved: "He guardado estos valores",
3894
3942
  noConnectionProviders:
3895
3943
  "No hay proveedores de conexión Brain disponibles en el catálogo compartido.",
3896
3944
  noCredentialKeysRequired: "No se requieren claves de credenciales",
@@ -4316,6 +4364,18 @@ const exactEnglishDebtOverrides: Partial<
4316
4364
  noCapturesDetail:
4317
4365
  "Essayez un autre statut, exécutez une synchronisation source ou importez une transcription.",
4318
4366
  noCapturesTitle: "Aucune capture ne correspond à cette vue",
4367
+ rotateIngestToken: "Faire pivoter le jeton d’ingestion",
4368
+ connectIngestSource: "Connecter {{source}}",
4369
+ ingestHandoffDescription:
4370
+ "Enregistrez maintenant ces valeurs dans l’application émettrice. Le jeton d’ingestion ne s’affiche qu’une seule fois et ne peut pas être récupéré après la fermeture de cette boîte de dialogue.",
4371
+ endpoint: "Point de terminaison",
4372
+ sourceKey: "Clé de source",
4373
+ ingestToken: "Jeton d’ingestion",
4374
+ copied: "Copié",
4375
+ copy: "Copier",
4376
+ ingestTokenSecurity:
4377
+ "Pour des raisons de sécurité, Brain ne stocke que le hachage de ce jeton. Faites pivoter le jeton lorsque l’application destinataire a besoin d’un nouvel identifiant.",
4378
+ ingestHandoffSaved: "J’ai enregistré ces valeurs",
4319
4379
  noConnectionProviders:
4320
4380
  "Aucun fournisseur de connexion Brain n’est disponible dans le catalogue partagé.",
4321
4381
  noCredentialKeysRequired: "Aucune clé d'identification requise",
@@ -4717,6 +4777,18 @@ const exactEnglishDebtOverrides: Partial<
4717
4777
  noCapturesDetail:
4718
4778
  "कोई अन्य स्थिति आज़माएँ, स्रोत सिंक चलाएँ, या एक प्रतिलेख आयात करें।",
4719
4779
  noCapturesTitle: "कोई भी कैप्चर इस दृश्य से मेल नहीं खाता",
4780
+ rotateIngestToken: "इंजेस्ट टोकन घुमाएँ",
4781
+ connectIngestSource: "कनेक्ट करें: {{source}}",
4782
+ ingestHandoffDescription:
4783
+ "इन मानों को अभी भेजने वाले ऐप में सहेजें। इंजेस्ट टोकन केवल एक बार दिखाया जाता है और यह संवाद बंद होने के बाद इसे पुनर्प्राप्त नहीं किया जा सकता।",
4784
+ endpoint: "एंडपॉइंट",
4785
+ sourceKey: "सोर्स कुंजी",
4786
+ ingestToken: "इंजेस्ट टोकन",
4787
+ copied: "कॉपी किया गया",
4788
+ copy: "कॉपी करें",
4789
+ ingestTokenSecurity:
4790
+ "सुरक्षा के लिए, Brain इस टोकन का केवल हैश संग्रहीत करता है। जब प्राप्त करने वाले ऐप को नए क्रेडेंशियल की आवश्यकता हो, तब टोकन घुमाएँ।",
4791
+ ingestHandoffSaved: "मैंने ये मान सहेज लिए हैं",
4720
4792
  noConnectionProviders: "साझा कैटलॉग से कोई Brain कनेक्शन प्रदाता उपलब्ध नहीं हैं।",
4721
4793
  noCredentialKeysRequired: "किसी क्रेडेंशियल कुंजी की आवश्यकता नहीं है",
4722
4794
  noCredentialRefs: "इस संबंध पर कोई क्रेडेंशियल संदर्भ नहीं है",
@@ -5111,6 +5183,18 @@ const exactEnglishDebtOverrides: Partial<
5111
5183
  noCapturesDetail:
5112
5184
  "別のステータスを試すか、ソース同期を実行するか、トランスクリプトをインポートしてください。",
5113
5185
  noCapturesTitle: "このビューに一致するキャプチャはありません",
5186
+ rotateIngestToken: "取り込みトークンをローテーション",
5187
+ connectIngestSource: "「{{source}}」を接続",
5188
+ ingestHandoffDescription:
5189
+ "これらの値を今すぐ送信元アプリに保存してください。取り込みトークンは一度しか表示されず、このダイアログを閉じると復元できません。",
5190
+ endpoint: "エンドポイント",
5191
+ sourceKey: "ソースキー",
5192
+ ingestToken: "取り込みトークン",
5193
+ copied: "コピーしました",
5194
+ copy: "コピー",
5195
+ ingestTokenSecurity:
5196
+ "セキュリティのため、Brain はこのトークンのハッシュのみを保存します。受信アプリに新しい認証情報が必要になったら、トークンをローテーションしてください。",
5197
+ ingestHandoffSaved: "これらの値を保存しました",
5114
5198
  noConnectionProviders:
5115
5199
  "共有カタログから使用できる Brain 接続プロバイダーはありません。",
5116
5200
  noCredentialKeysRequired: "認証キーは必要ありません",
@@ -5511,6 +5595,18 @@ const exactEnglishDebtOverrides: Partial<
5511
5595
  noCapturesDetail:
5512
5596
  "다른 상태를 시도하거나, 소스 동기화를 실행하거나, 스크립트를 가져오세요.",
5513
5597
  noCapturesTitle: "이 보기와 일치하는 캡처가 없습니다.",
5598
+ rotateIngestToken: "수집 토큰 교체",
5599
+ connectIngestSource: "{{source}} 연결",
5600
+ ingestHandoffDescription:
5601
+ "지금 이 값을 보내는 앱에 저장하세요. 수집 토큰은 한 번만 표시되며 이 대화상자를 닫으면 복구할 수 없습니다.",
5602
+ endpoint: "엔드포인트",
5603
+ sourceKey: "소스 키",
5604
+ ingestToken: "수집 토큰",
5605
+ copied: "복사됨",
5606
+ copy: "복사",
5607
+ ingestTokenSecurity:
5608
+ "보안을 위해 Brain은 이 토큰의 해시만 저장합니다. 수신 앱에 새 자격 증명이 필요할 때 토큰을 교체하세요.",
5609
+ ingestHandoffSaved: "이 값을 저장했습니다",
5514
5610
  noConnectionProviders:
5515
5611
  "공유 카탈로그에서는 Brain 연결 공급자를 사용할 수 없습니다.",
5516
5612
  noCredentialKeysRequired: "자격 증명 키가 필요하지 않습니다",
@@ -5921,6 +6017,18 @@ const exactEnglishDebtOverrides: Partial<
5921
6017
  noCapturesDetail:
5922
6018
  "Tente outro status, execute uma sincronização de origem ou importe uma transcrição.",
5923
6019
  noCapturesTitle: "Nenhuma captura corresponde a esta visualização",
6020
+ rotateIngestToken: "Alternar token de ingestão",
6021
+ connectIngestSource: "Conectar {{source}}",
6022
+ ingestHandoffDescription:
6023
+ "Salve estes valores agora no aplicativo emissor. O token de ingestão é exibido apenas uma vez e não pode ser recuperado depois que esta caixa de diálogo for fechada.",
6024
+ endpoint: "Endpoint",
6025
+ sourceKey: "Chave da fonte",
6026
+ ingestToken: "Token de ingestão",
6027
+ copied: "Copiado",
6028
+ copy: "Copiar",
6029
+ ingestTokenSecurity:
6030
+ "Por segurança, o Brain armazena apenas um hash deste token. Alterne o token sempre que o aplicativo receptor precisar de uma nova credencial.",
6031
+ ingestHandoffSaved: "Salvei estes valores",
5924
6032
  noConnectionProviders:
5925
6033
  "Nenhum provedor de conexão Brain está disponível no catálogo compartilhado.",
5926
6034
  noCredentialKeysRequired: "Nenhuma chave de credencial necessária",
@@ -6300,6 +6408,18 @@ const exactEnglishDebtOverrides: Partial<
6300
6408
  noBrainSourcesYet: "还没有 Brain 来源",
6301
6409
  noCapturesDetail: "尝试其他状态、运行源同步或导入转录本。",
6302
6410
  noCapturesTitle: "没有与此视图匹配的捕获",
6411
+ rotateIngestToken: "轮换摄取令牌",
6412
+ connectIngestSource: "连接 {{source}}",
6413
+ ingestHandoffDescription:
6414
+ "现在将这些值保存到发送应用中。摄取令牌只显示一次,关闭此对话框后将无法恢复。",
6415
+ endpoint: "端点",
6416
+ sourceKey: "源密钥",
6417
+ ingestToken: "摄取令牌",
6418
+ copied: "已复制",
6419
+ copy: "复制",
6420
+ ingestTokenSecurity:
6421
+ "出于安全考虑,Brain 只存储此令牌的哈希值。当接收应用需要新的凭据时,请轮换令牌。",
6422
+ ingestHandoffSaved: "我已保存这些值",
6303
6423
  noConnectionProviders: "共享目录中没有可用的 Brain 连接提供程序。",
6304
6424
  noCredentialKeysRequired: "无需凭证密钥",
6305
6425
  noCredentialRefs: "此连接上没有凭据参考",