@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.
- package/agent-native.eject.json +1 -0
- package/corpus/README.md +3 -3
- package/corpus/core/CHANGELOG.md +43 -0
- package/corpus/core/agent-native.eject.json +1 -0
- package/corpus/core/docs/AGENTS.md +1 -1
- package/corpus/core/docs/content/agent-mentions.mdx +2 -2
- package/corpus/core/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
- package/corpus/core/docs/content/agent-teams.mdx +4 -4
- package/corpus/core/docs/content/dispatch.mdx +10 -10
- package/corpus/core/docs/content/drop-in-agent.mdx +4 -4
- package/corpus/core/docs/content/external-agents.mdx +1 -1
- package/corpus/core/docs/content/frames.mdx +1 -1
- package/corpus/core/docs/content/integrations.mdx +13 -2
- package/corpus/core/docs/content/key-concepts.mdx +2 -2
- package/corpus/core/docs/content/mcp-clients.mdx +7 -1
- package/corpus/core/docs/content/multi-app-workspace.mdx +3 -3
- package/corpus/core/docs/content/real-time-collaboration.mdx +33 -15
- package/corpus/core/docs/content/recurring-jobs.mdx +7 -7
- package/corpus/core/docs/content/skills-guide.mdx +4 -4
- package/corpus/core/docs/content/template-brain.mdx +1 -1
- package/corpus/core/docs/content/toolkit-collaboration.mdx +1 -1
- package/corpus/core/docs/content/using-your-agent.mdx +1 -1
- package/corpus/core/docs/content/what-is-agent-native.mdx +4 -4
- package/corpus/core/docs/content/workspace-management.mdx +4 -4
- package/corpus/core/package.json +4 -1
- package/corpus/core/src/agent/production-agent.ts +13 -3
- package/corpus/core/src/cli/doctor.ts +6 -1
- package/corpus/core/src/client/AgentPanel.tsx +79 -41
- package/corpus/core/src/client/AssistantChat.tsx +71 -25
- package/corpus/core/src/client/FeedbackButton.tsx +33 -7
- package/corpus/core/src/client/MultiTabAssistantChat.tsx +6 -8
- package/corpus/core/src/client/agent-chat-adapter.ts +11 -2
- package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +22 -3
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +34 -19
- package/corpus/core/src/client/analytics.ts +7 -0
- package/corpus/core/src/client/chat/message-components.tsx +43 -16
- package/corpus/core/src/client/chat/tool-call-display.tsx +30 -18
- package/corpus/core/src/client/chat/tool-render-registry.tsx +2 -0
- package/corpus/core/src/client/resources/McpConnectionSuggestion.tsx +19 -2
- package/corpus/core/src/client/resources/ResourceTree.tsx +7 -10
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +33 -70
- package/corpus/core/src/client/resources/mcp-connection-resume.ts +107 -0
- package/corpus/core/src/client/resources/mcp-integration-catalog.ts +65 -12
- package/corpus/core/src/client/resources/mcp-integration-logos.ts +4 -0
- package/corpus/core/src/client/sse-event-processor.ts +50 -14
- package/corpus/core/src/client/use-db-sync.ts +370 -21
- package/corpus/core/src/collab/client.ts +26 -2
- package/corpus/core/src/connections/catalog.ts +7 -1
- package/corpus/core/src/db/ddl-guard.ts +49 -10
- package/corpus/core/src/deploy/build.ts +25 -2
- package/corpus/core/src/eject/remote-mcp-presets.ts +37 -5
- package/corpus/core/src/guards/explicit-collab-access.ts +229 -0
- package/corpus/core/src/guards/index.ts +1 -0
- package/corpus/core/src/localization/default-messages.ts +54 -5
- package/corpus/core/src/mcp/connect-route.ts +34 -51
- package/corpus/core/src/provider-api/index.ts +1 -1
- package/corpus/core/src/realtime-protocol.ts +92 -0
- package/corpus/core/src/server/collab-plugin.ts +137 -18
- package/corpus/core/src/server/core-routes-plugin.ts +7 -0
- package/corpus/core/src/server/index.ts +2 -0
- package/corpus/core/src/server/poll-events.ts +29 -8
- package/corpus/core/src/server/poll.ts +1123 -865
- package/corpus/core/src/server/realtime-token.ts +106 -0
- package/corpus/core/src/server/sentry-config.ts +40 -0
- package/corpus/core/src/server/short-lived-token.ts +156 -0
- package/corpus/core/src/server/sse.ts +15 -0
- package/corpus/core/src/server/ssr-handler.ts +9 -3
- package/corpus/core/src/styles/agent-native.css +40 -0
- package/corpus/core/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/core/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
- package/corpus/templates/analytics/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/analytics/AGENTS.md +7 -2
- package/corpus/templates/analytics/actions/export-dashboard-panel-to-google-sheet.ts +144 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +7 -88
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +34 -37
- package/corpus/templates/analytics/app/global.css +0 -4
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +2 -7
- package/corpus/templates/analytics/app/i18n-data.ts +107 -0
- package/corpus/templates/analytics/app/lib/data-source-status.ts +9 -0
- package/corpus/templates/analytics/app/lib/sql-query.ts +1 -2
- package/corpus/templates/analytics/app/pages/Ask.tsx +2 -7
- package/corpus/templates/analytics/app/pages/DataSources.tsx +48 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +59 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +2 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/report-panel-window.ts +3 -1
- package/corpus/templates/analytics/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-daily-dashboard-email-query-batches.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-export-table-panels-directly-to-google-sheets.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-22-recent-chats-can-expand-in-the-sidebar.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +8 -8
- package/corpus/templates/analytics/server/lib/canonical-first-party-dashboard-repair.ts +31 -0
- package/corpus/templates/analytics/server/lib/dashboard-report-subscriptions.ts +3 -5
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +12 -0
- package/corpus/templates/analytics/server/lib/first-party-dashboard-repair.ts +3 -5
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +150 -21
- package/corpus/templates/analytics/server/lib/google-sheets-export.ts +188 -0
- package/corpus/templates/analytics/server/lib/provider-api.ts +7 -2
- package/corpus/templates/analytics/server/plugins/collab.ts +6 -3
- package/corpus/templates/analytics/shared/sql-query-limits.ts +1 -0
- package/corpus/templates/assets/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/assets/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/assets/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +54 -62
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +2 -6
- package/corpus/templates/assets/app/routes/_index.tsx +8 -5
- package/corpus/templates/assets/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/assets/changelog/2026-07-22-recent-chats-expand-from-a-compact-list.md +6 -0
- package/corpus/templates/brain/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/brain/actions/rotate-source-ingest-token.ts +77 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +5 -1
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +38 -51
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/brain/app/i18n-data.ts +120 -0
- package/corpus/templates/brain/app/routes/sources.tsx +156 -5
- package/corpus/templates/brain/changelog/2026-07-22-chat-runs-always-end-with-an-answer.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-clear-background-chat-progress.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-long-chat-titles-stay-inside-the-sidebar.md +6 -0
- package/corpus/templates/brain/changelog/2026-07-22-new-clips-and-webhook-sources-now-show-their-secure-connecti.md +6 -0
- package/corpus/templates/brain/jobs/emit-netlify-brain-queue-cron.ts +125 -0
- package/corpus/templates/brain/netlify.toml +5 -1
- package/corpus/templates/brain/scripts/configure-prod-clips-source.ts +50 -0
- package/corpus/templates/brain/server/lib/capture-sanitization.ts +64 -6
- package/corpus/templates/brain/server/plugins/agent-chat.ts +4 -0
- package/corpus/templates/brain/server/plugins/brain-jobs.ts +1 -0
- package/corpus/templates/brain/server/routes/api/brain/queue/run.post.ts +55 -0
- package/corpus/templates/calendar/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/corpus/templates/chat/app/routes/_index.tsx +8 -5
- package/corpus/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/corpus/templates/clips/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/clips/AGENTS.md +9 -1
- package/corpus/templates/clips/actions/export-to-brain.ts +82 -6
- package/corpus/templates/clips/actions/request-transcript.ts +25 -14
- package/corpus/templates/clips/app/components/sharing/share-ui.tsx +12 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +1 -0
- package/corpus/templates/clips/changelog/2026-07-22-clips-transcripts-now-retry-brain-export.md +5 -0
- package/corpus/templates/clips/changelog/2026-07-22-german-umlauts-and-other-non-ascii-characters-now-paste-corr.md +6 -0
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +26 -3
- package/corpus/templates/clips/jobs/emit-netlify-brain-export-cron.ts +118 -0
- package/corpus/templates/clips/netlify.toml +4 -1
- package/corpus/templates/clips/scripts/configure-prod-brain-export.ts +92 -0
- package/corpus/templates/clips/server/jobs/brain-export.ts +182 -0
- package/corpus/templates/clips/server/lib/brain-export-state.ts +42 -0
- package/corpus/templates/clips/server/lib/post-finalize-dispatch.ts +5 -1
- package/corpus/templates/clips/server/plugins/calendar-jobs.ts +2 -0
- package/corpus/templates/clips/server/register-secrets.ts +42 -0
- package/corpus/templates/clips/server/routes/api/_agent-native-background/post-finalize-worker.post.ts +10 -1
- package/corpus/templates/clips/server/routes/api/clips/brain-export/run.post.ts +45 -0
- package/corpus/templates/content/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/content/app/components/editor/DocumentProperties.tsx +566 -299
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +14 -0
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
- package/corpus/templates/content/app/i18n-data.ts +90 -0
- package/corpus/templates/content/server/plugins/collab.ts +1 -1
- package/corpus/templates/crm/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/crm/actions/_crm-data-program-actions.ts +15 -0
- package/corpus/templates/crm/actions/get-crm-dashboard-panel.ts +2 -0
- package/corpus/templates/crm/actions/run.ts +2 -6
- package/corpus/templates/crm/actions/update-crm-record.ts +4 -2
- package/corpus/templates/crm/app/components/layout/CrmLayout.tsx +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-crm-field-validation-now-explains-which-fields-cannot-be-edi.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-fixed-hubspot-contact-syncs-missing-records-updated-after-th.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-fixed-pipeline-dashboard-panels-so-their-opportunity-data-lo.md +6 -0
- package/corpus/templates/crm/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/crm/server/crm/hubspot-adapter.ts +4 -1
- package/corpus/templates/design/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/design/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/design/server/plugins/collab.ts +11 -8
- package/corpus/templates/dispatch/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/forms/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/forms/app/components/layout/Layout.tsx +1 -0
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/forms/app/root.tsx +1 -6
- package/corpus/templates/forms/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/macros/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/mail/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/mail/app/components/layout/AppLayout.tsx +2 -2
- package/corpus/templates/plan/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -1
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +57 -72
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +2 -9
- package/corpus/templates/plan/app/lib/create-plan-routing.ts +2 -2
- package/corpus/templates/plan/app/pages/PlanChatPage.tsx +0 -1
- package/corpus/templates/plan/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/corpus/templates/plan/changelog/2026-07-22-recent-chats-and-sidebar-controls-are-more-compact.md +6 -0
- package/corpus/templates/plan/server/plugins/collab.ts +5 -2
- package/corpus/templates/slides/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/slides/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/slides/server/plugins/collab.ts +11 -8
- package/corpus/templates/tasks/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/corpus/templates/tasks/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/tasks/app/components/layout/Sidebar.tsx +5 -22
- package/corpus/templates/tasks/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/corpus/toolkit/CHANGELOG.md +7 -0
- package/corpus/toolkit/README.md +12 -3
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/chat-history/ChatHistoryRail.tsx +89 -0
- package/corpus/toolkit/src/chat-history/index.ts +5 -0
- package/corpus/toolkit/src/chat-history.css +59 -0
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +106 -36
- package/corpus/toolkit/src/composer/VoiceButton.tsx +49 -0
- package/corpus/toolkit/src/composer/realtime-voice-audio-level.ts +2 -1
- package/corpus/toolkit/src/composer/useRealtimeVoiceMode.tsx +5 -3
- package/corpus/toolkit/src/styles.css +35 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +13 -3
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/cli/doctor.d.ts +1 -1
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +5 -2
- package/dist/cli/doctor.js.map +1 -1
- package/dist/client/AgentPanel.d.ts +1 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +38 -18
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +55 -20
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/FeedbackButton.d.ts +4 -2
- package/dist/client/FeedbackButton.d.ts.map +1 -1
- package/dist/client/FeedbackButton.js +18 -2
- package/dist/client/FeedbackButton.js.map +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts +1 -1
- package/dist/client/MultiTabAssistantChat.d.ts.map +1 -1
- package/dist/client/MultiTabAssistantChat.js +2 -3
- package/dist/client/MultiTabAssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +11 -3
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts +3 -1
- package/dist/client/agent-page/AgentTabFrame.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.js +3 -2
- package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts +2 -0
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +26 -15
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/analytics.d.ts +10 -0
- package/dist/client/analytics.d.ts.map +1 -1
- package/dist/client/analytics.js.map +1 -1
- package/dist/client/chat/message-components.d.ts +6 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +17 -11
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +11 -1
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +16 -17
- package/dist/client/chat/tool-call-display.js.map +1 -1
- package/dist/client/chat/tool-render-registry.d.ts +2 -0
- package/dist/client/chat/tool-render-registry.d.ts.map +1 -1
- package/dist/client/chat/tool-render-registry.js.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.d.ts.map +1 -1
- package/dist/client/resources/McpConnectionSuggestion.js +15 -1
- package/dist/client/resources/McpConnectionSuggestion.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +3 -3
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts +1 -0
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +34 -20
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/mcp-connection-resume.d.ts +11 -0
- package/dist/client/resources/mcp-connection-resume.d.ts.map +1 -0
- package/dist/client/resources/mcp-connection-resume.js +95 -0
- package/dist/client/resources/mcp-connection-resume.js.map +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts +1 -0
- package/dist/client/resources/mcp-integration-catalog.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-catalog.js +63 -8
- package/dist/client/resources/mcp-integration-catalog.js.map +1 -1
- package/dist/client/resources/mcp-integration-logos.d.ts.map +1 -1
- package/dist/client/resources/mcp-integration-logos.js +4 -0
- package/dist/client/resources/mcp-integration-logos.js.map +1 -1
- package/dist/client/sse-event-processor.d.ts +5 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +39 -13
- package/dist/client/sse-event-processor.js.map +1 -1
- package/dist/client/use-db-sync.d.ts +4 -3
- package/dist/client/use-db-sync.d.ts.map +1 -1
- package/dist/client/use-db-sync.js +332 -21
- package/dist/client/use-db-sync.js.map +1 -1
- package/dist/collab/client.d.ts.map +1 -1
- package/dist/collab/client.js +26 -2
- package/dist/collab/client.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/connections/catalog.d.ts +1 -1
- package/dist/connections/catalog.d.ts.map +1 -1
- package/dist/connections/catalog.js +7 -1
- package/dist/connections/catalog.js.map +1 -1
- package/dist/db/ddl-guard.d.ts +7 -2
- package/dist/db/ddl-guard.d.ts.map +1 -1
- package/dist/db/ddl-guard.js +21 -9
- package/dist/db/ddl-guard.js.map +1 -1
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +25 -2
- package/dist/deploy/build.js.map +1 -1
- package/dist/eject/remote-mcp-presets.d.ts.map +1 -1
- package/dist/eject/remote-mcp-presets.js +33 -3
- package/dist/eject/remote-mcp-presets.js.map +1 -1
- package/dist/guards/explicit-collab-access.d.ts +8 -0
- package/dist/guards/explicit-collab-access.d.ts.map +1 -0
- package/dist/guards/explicit-collab-access.js +214 -0
- package/dist/guards/explicit-collab-access.js.map +1 -0
- package/dist/guards/index.d.ts +1 -0
- package/dist/guards/index.d.ts.map +1 -1
- package/dist/guards/index.js +1 -0
- package/dist/guards/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +43 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +48 -5
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/mcp/connect-route.d.ts.map +1 -1
- package/dist/mcp/connect-route.js +34 -48
- package/dist/mcp/connect-route.js.map +1 -1
- package/dist/observability/routes.d.ts +5 -5
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +7 -7
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/provider-api/index.js +1 -1
- package/dist/provider-api/index.js.map +1 -1
- package/dist/realtime-protocol.d.ts +40 -0
- package/dist/realtime-protocol.d.ts.map +1 -0
- package/dist/realtime-protocol.js +69 -0
- package/dist/realtime-protocol.js.map +1 -0
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +3 -3
- package/dist/server/collab-plugin.d.ts +34 -3
- package/dist/server/collab-plugin.d.ts.map +1 -1
- package/dist/server/collab-plugin.js +65 -12
- package/dist/server/collab-plugin.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +3 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/poll-events.d.ts +7 -1
- package/dist/server/poll-events.d.ts.map +1 -1
- package/dist/server/poll-events.js +24 -7
- package/dist/server/poll-events.js.map +1 -1
- package/dist/server/poll.d.ts +223 -42
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +849 -737
- package/dist/server/poll.js.map +1 -1
- package/dist/server/realtime-token.d.ts +34 -0
- package/dist/server/realtime-token.d.ts.map +1 -0
- package/dist/server/realtime-token.js +85 -0
- package/dist/server/realtime-token.js.map +1 -0
- package/dist/server/sentry-config.d.ts +12 -0
- package/dist/server/sentry-config.d.ts.map +1 -1
- package/dist/server/sentry-config.js +34 -0
- package/dist/server/sentry-config.js.map +1 -1
- package/dist/server/short-lived-token.d.ts +46 -0
- package/dist/server/short-lived-token.d.ts.map +1 -1
- package/dist/server/short-lived-token.js +104 -0
- package/dist/server/short-lived-token.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js +4 -0
- package/dist/server/sse.js.map +1 -1
- package/dist/server/ssr-handler.d.ts.map +1 -1
- package/dist/server/ssr-handler.js +5 -3
- package/dist/server/ssr-handler.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/styles/agent-native.css +40 -0
- package/dist/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/dist/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/dist/templates/chat/app/routes/_index.tsx +8 -5
- package/dist/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/dist/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/dist/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/dist/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/dist/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/voice-transcription/SKILL.md +12 -8
- package/docs/AGENTS.md +1 -1
- package/docs/content/agent-mentions.mdx +2 -2
- package/docs/content/{workspace.mdx → agent-resources.mdx} +1 -7
- package/docs/content/agent-teams.mdx +4 -4
- package/docs/content/dispatch.mdx +10 -10
- package/docs/content/drop-in-agent.mdx +4 -4
- package/docs/content/external-agents.mdx +1 -1
- package/docs/content/frames.mdx +1 -1
- package/docs/content/integrations.mdx +13 -2
- package/docs/content/key-concepts.mdx +2 -2
- package/docs/content/mcp-clients.mdx +7 -1
- package/docs/content/multi-app-workspace.mdx +3 -3
- package/docs/content/real-time-collaboration.mdx +33 -15
- package/docs/content/recurring-jobs.mdx +7 -7
- package/docs/content/skills-guide.mdx +4 -4
- package/docs/content/template-brain.mdx +1 -1
- package/docs/content/toolkit-collaboration.mdx +1 -1
- package/docs/content/using-your-agent.mdx +1 -1
- package/docs/content/what-is-agent-native.mdx +4 -4
- package/docs/content/workspace-management.mdx +4 -4
- package/package.json +6 -3
- package/src/agent/production-agent.ts +13 -3
- package/src/cli/doctor.ts +6 -1
- package/src/client/AgentPanel.tsx +79 -41
- package/src/client/AssistantChat.tsx +71 -25
- package/src/client/FeedbackButton.tsx +33 -7
- package/src/client/MultiTabAssistantChat.tsx +6 -8
- package/src/client/agent-chat-adapter.ts +11 -2
- package/src/client/agent-page/AgentTabFrame.tsx +22 -3
- package/src/client/agent-page/AgentTabsPage.tsx +34 -19
- package/src/client/analytics.ts +7 -0
- package/src/client/chat/message-components.tsx +43 -16
- package/src/client/chat/tool-call-display.tsx +30 -18
- package/src/client/chat/tool-render-registry.tsx +2 -0
- package/src/client/resources/McpConnectionSuggestion.tsx +19 -2
- package/src/client/resources/ResourceTree.tsx +7 -10
- package/src/client/resources/ResourcesPanel.tsx +33 -70
- package/src/client/resources/mcp-connection-resume.ts +107 -0
- package/src/client/resources/mcp-integration-catalog.ts +65 -12
- package/src/client/resources/mcp-integration-logos.ts +4 -0
- package/src/client/sse-event-processor.ts +50 -14
- package/src/client/use-db-sync.ts +370 -21
- package/src/collab/client.ts +26 -2
- package/src/connections/catalog.ts +7 -1
- package/src/db/ddl-guard.ts +49 -10
- package/src/deploy/build.ts +25 -2
- package/src/eject/remote-mcp-presets.ts +37 -5
- package/src/guards/explicit-collab-access.ts +229 -0
- package/src/guards/index.ts +1 -0
- package/src/localization/default-messages.ts +54 -5
- package/src/mcp/connect-route.ts +34 -51
- package/src/provider-api/index.ts +1 -1
- package/src/realtime-protocol.ts +92 -0
- package/src/server/collab-plugin.ts +137 -18
- package/src/server/core-routes-plugin.ts +7 -0
- package/src/server/index.ts +2 -0
- package/src/server/poll-events.ts +29 -8
- package/src/server/poll.ts +1123 -865
- package/src/server/realtime-token.ts +106 -0
- package/src/server/sentry-config.ts +40 -0
- package/src/server/short-lived-token.ts +156 -0
- package/src/server/sse.ts +15 -0
- package/src/server/ssr-handler.ts +9 -3
- package/src/styles/agent-native.css +40 -0
- package/src/templates/chat/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/chat/app/components/layout/Layout.tsx +1 -0
- package/src/templates/chat/app/components/layout/Sidebar.tsx +43 -67
- package/src/templates/chat/app/hooks/use-navigation-state.ts +2 -7
- package/src/templates/chat/app/routes/_index.tsx +8 -5
- package/src/templates/chat/changelog/2026-07-22-compact-sidebar-footer.md +6 -0
- package/src/templates/chat/changelog/2026-07-22-full-page-chat-keeps-the-active-conversation-when-moving-to-.md +6 -0
- package/src/templates/chat/changelog/2026-07-22-recent-chats-are-easier-to-scan-and-expand.md +6 -0
- package/src/templates/default/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/default/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/headless/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/workspace-core/.agents/skills/agent-native-toolkit/SKILL.md +4 -1
- package/src/templates/workspace-core/.agents/skills/real-time-collab/SKILL.md +35 -13
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- 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({
|
|
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
|
-
|
|
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
|
-
<
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
-
<
|
|
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: "此连接上没有凭据参考",
|