@agent-native/core 0.92.0 → 0.92.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +1 -1
- package/corpus/core/CHANGELOG.md +14 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/application-state/store.ts +12 -1
- package/corpus/core/src/client/AssistantChat.tsx +27 -14
- package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
- package/corpus/core/src/client/agent-chat-adapter.ts +37 -10
- package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
- package/corpus/core/src/client/db-admin/TableEditor.tsx +49 -0
- package/corpus/core/src/client/db-admin/export-utils.ts +13 -4
- package/corpus/core/src/client/db-admin/useAgentSync.ts +72 -0
- package/corpus/core/src/client/error-capture.ts +69 -7
- package/corpus/core/src/client/extensions/EmbeddedExtension.tsx +5 -1
- package/corpus/core/src/client/extensions/ExtensionViewer.tsx +53 -8
- package/corpus/core/src/client/extensions/InlineExtensionFrame.tsx +5 -1
- package/corpus/core/src/client/extensions/portable-extension.ts +1 -0
- package/corpus/core/src/client/org/OrgSwitcher.tsx +12 -9
- package/corpus/core/src/client/org/TeamPage.tsx +77 -71
- package/corpus/core/src/client/settings/SettingsPanel.tsx +205 -52
- package/corpus/core/src/client/settings/SettingsSection.tsx +8 -1
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
- package/corpus/core/src/db-admin/agent-tools.ts +8 -2
- package/corpus/core/src/db-admin/operations.ts +116 -4
- package/corpus/core/src/db-admin/routes.ts +1 -0
- package/corpus/core/src/db-admin/types.ts +4 -0
- package/corpus/core/src/extensions/html-shell.ts +5 -4
- package/corpus/core/src/extensions/routes.ts +10 -0
- package/corpus/core/src/navigation/index.ts +1 -1
- package/corpus/core/src/resources/handlers.ts +10 -8
- package/corpus/core/src/server/poll.ts +293 -8
- package/corpus/core/src/styles/agent-native.css +27 -0
- package/corpus/core/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/core/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/core/src/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/default/AGENTS.md +4 -2
- package/corpus/core/src/templates/headless/AGENTS.md +4 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- 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/security/SKILL.md +7 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
- package/corpus/core/src/templates/workspace-root/AGENTS.md +7 -1
- package/corpus/templates/analytics/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/analytics/.agents/skills/dashboard-management/SKILL.md +10 -0
- package/corpus/templates/analytics/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/analytics/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/analytics/AGENTS.md +33 -14
- package/corpus/templates/analytics/actions/capture-test-error.ts +4 -0
- package/corpus/templates/analytics/actions/get-analytics-alert-rule-defaults.ts +23 -0
- package/corpus/templates/analytics/actions/get-error-issue.ts +1 -1
- package/corpus/templates/analytics/actions/list-analysis-revisions.ts +40 -0
- package/corpus/templates/analytics/actions/list-dashboard-revisions.ts +40 -0
- package/corpus/templates/analytics/actions/list-dashboard-usage-stats.ts +299 -0
- package/corpus/templates/analytics/actions/navigate.ts +4 -2
- package/corpus/templates/analytics/actions/restore-analysis-revision.ts +43 -0
- package/corpus/templates/analytics/actions/restore-dashboard-revision.ts +68 -0
- package/corpus/templates/analytics/actions/save-analytics-alert-rule.ts +14 -0
- package/corpus/templates/analytics/actions/save-monitor.ts +1 -1
- package/corpus/templates/analytics/actions/view-screen.ts +24 -0
- package/corpus/templates/analytics/app/components/analysis/AnalysisHistoryPanel.tsx +181 -0
- package/corpus/templates/analytics/app/components/dashboard/DashboardHistoryPanel.tsx +184 -0
- package/corpus/templates/analytics/app/components/layout/CommandPalette.tsx +22 -16
- package/corpus/templates/analytics/app/components/layout/Header.tsx +1 -1
- package/corpus/templates/analytics/app/components/layout/Sidebar.tsx +27 -21
- package/corpus/templates/analytics/app/hooks/use-analysis-revisions.ts +43 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-chat-context.ts +110 -0
- package/corpus/templates/analytics/app/hooks/use-dashboard-revisions.ts +43 -0
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +8 -3
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +64 -2
- package/corpus/templates/analytics/app/i18n-data.ts +783 -3
- package/corpus/templates/analytics/app/pages/Agents.tsx +359 -19
- package/corpus/templates/analytics/app/pages/Settings.tsx +3 -2
- package/corpus/templates/analytics/app/pages/adhoc/explorer-dashboard/index.tsx +34 -1
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +28 -0
- package/corpus/templates/analytics/app/pages/analyses/AnalysisDetail.tsx +18 -1
- package/corpus/templates/analytics/app/pages/monitoring/ErrorsPanel.tsx +7 -10
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueDetail.tsx +479 -23
- package/corpus/templates/analytics/app/pages/monitoring/errors/IssueList.tsx +0 -9
- package/corpus/templates/analytics/app/pages/monitoring/errors/i18n.ts +11 -0
- package/corpus/templates/analytics/app/pages/monitoring/errors/types.ts +9 -1
- package/corpus/templates/analytics/app/pages/monitoring/uptime/MonitorFormPage.tsx +6 -3
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +26 -30
- package/corpus/templates/analytics/app/pages/sessions/SessionsPage.tsx +9 -99
- package/corpus/templates/analytics/app/pages/settings/AlertRulesSettingsCard.tsx +262 -104
- package/corpus/templates/analytics/app/routes/team.tsx +1 -1
- package/corpus/templates/analytics/changelog/2026-07-08-admins-can-audit-dashboard-usage-ownership-and-cleanup-signa.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-agent-monitoring-stays-available-to-non-admins.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-alert-rules-are-easier-to-scan-expand-and-edit-from-settings.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-forms-remember-last-email-recipients.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-analytics-alert-rules-can-now-use-per-rule-slack-and-webhook.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-history-and-chat-context.md +5 -0
- package/corpus/templates/analytics/changelog/2026-07-08-dashboard-usage-now-counts-explorer-dashboard-traffic.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-demo-mode-session-emails-are-filtered-and-anonymized.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-adds-stack-traces-and-frequency-bars.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-error-issue-detail-now-shows-the-latest-occurrence-message-a.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-monitoring-errors-only-show-test-action-when-empty.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-production-session-replay-now-requires-private-blob-storage-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-shared-extension-links-now-show-a-clear-message-when-you-do-.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-team-settings-show-access-controls-next-to-member-lists.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-08-uptime-monitors-now-use-a-10-second-request-timeout-by-defau.md +6 -0
- package/corpus/templates/analytics/server/db/schema-monitoring.ts +1 -1
- package/corpus/templates/analytics/server/db/schema.ts +56 -0
- package/corpus/templates/analytics/server/lib/analytics-alerts.ts +92 -0
- package/corpus/templates/analytics/server/lib/dashboards-store.ts +334 -5
- package/corpus/templates/analytics/server/lib/error-capture.ts +231 -36
- package/corpus/templates/analytics/server/lib/session-replay.ts +114 -8
- package/corpus/templates/analytics/server/lib/uptime-monitors.ts +5 -4
- package/corpus/templates/analytics/server/plugins/db.ts +112 -2
- package/corpus/templates/analytics/server/routes/api/dashboard-agent-context.json.get.ts +1 -0
- package/corpus/templates/assets/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/assets/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/assets/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/assets/AGENTS.md +4 -0
- package/corpus/templates/assets/app/routes/settings.tsx +1 -1
- package/corpus/templates/assets/app/routes/team.tsx +1 -1
- package/corpus/templates/brain/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/brain/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/brain/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/brain/AGENTS.md +4 -0
- package/corpus/templates/brain/app/routes/team.tsx +1 -1
- package/corpus/templates/calendar/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/calendar/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/calendar/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/calendar/AGENTS.md +4 -0
- package/corpus/templates/calendar/app/components/calendar/DayView.tsx +11 -2
- package/corpus/templates/calendar/app/components/calendar/EventDetailPopover.tsx +21 -8
- package/corpus/templates/calendar/app/components/calendar/MonthView.tsx +7 -1
- package/corpus/templates/calendar/app/components/calendar/WeekView.tsx +11 -2
- package/corpus/templates/calendar/app/lib/popover-click-guard.ts +48 -4
- package/corpus/templates/calendar/app/pages/Settings.tsx +1 -1
- package/corpus/templates/calendar/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/calendar/changelog/2026-07-08-clicking-empty-calendar-space-closes-an-open-event-popover-b.md +6 -0
- package/corpus/templates/chat/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/chat/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/chat/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/chat/AGENTS.md +4 -0
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/chat/app/routes/settings.tsx +2 -2
- package/corpus/templates/chat/app/routes/team.tsx +1 -1
- package/corpus/templates/clips/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/clips/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/clips/AGENTS.md +4 -0
- package/corpus/templates/clips/actions/finalize-recording.ts +9 -3
- package/corpus/templates/clips/actions/set-thumbnail.ts +11 -2
- package/corpus/templates/clips/app/components/meetings/canvas-editor.tsx +1 -7
- package/corpus/templates/clips/app/components/player/player-controls.tsx +21 -13
- package/corpus/templates/clips/app/components/player/video-player.tsx +30 -75
- package/corpus/templates/clips/app/i18n/ar-SA.ts +6 -5
- package/corpus/templates/clips/app/i18n/de-DE.ts +6 -6
- package/corpus/templates/clips/app/i18n/en-US.ts +6 -5
- package/corpus/templates/clips/app/i18n/es-ES.ts +6 -5
- package/corpus/templates/clips/app/i18n/fr-FR.ts +6 -6
- package/corpus/templates/clips/app/i18n/hi-IN.ts +6 -5
- package/corpus/templates/clips/app/i18n/ja-JP.ts +6 -5
- package/corpus/templates/clips/app/i18n/ko-KR.ts +6 -5
- package/corpus/templates/clips/app/i18n/pt-BR.ts +6 -5
- package/corpus/templates/clips/app/i18n/zh-CN.ts +6 -5
- package/corpus/templates/clips/app/i18n/zh-TW.ts +6 -5
- package/corpus/templates/clips/app/routes/_app.meetings.$meetingId.tsx +51 -118
- package/corpus/templates/clips/changelog/2026-07-08-hosted-clip-uploads-now-clear-failed-buffered-chunks.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-hosted-recording-uploads-now-avoid-sql-chunk-storage.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-meeting-recaps-now-keep-summaries-action-items-and-transcrip.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-video-playback-controls-now-match-loom-style-5-second-skips-.md +6 -0
- package/corpus/templates/clips/server/lib/recording-upload-state.ts +63 -0
- package/corpus/templates/clips/server/lib/video-storage.ts +4 -0
- package/corpus/templates/clips/server/routes/api/recordings/[recordingId]/thumbnail.post.ts +19 -13
- package/corpus/templates/clips/server/routes/api/uploads/[recordingId]/chunk.post.ts +40 -1
- package/corpus/templates/content/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/content/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/content/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/content/AGENTS.md +4 -0
- package/corpus/templates/content/app/routes/_app.settings.tsx +2 -2
- package/corpus/templates/content/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/design/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/design/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/design/AGENTS.md +4 -0
- package/corpus/templates/design/actions/take-design-screenshot.ts +12 -9
- package/corpus/templates/design/app/components/design/inspector/ImageFillControls.tsx +57 -13
- package/corpus/templates/design/app/routes/team.tsx +1 -1
- package/corpus/templates/design/changelog/2026-07-08-local-images-added-to-designs-now-upload-to-file-storage-ins.md +6 -0
- package/corpus/templates/dispatch/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/dispatch/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/dispatch/AGENTS.md +4 -0
- package/corpus/templates/dispatch/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/dispatch/app/routes/settings.tsx +2 -2
- package/corpus/templates/dispatch/app/routes/team.tsx +1 -1
- package/corpus/templates/forms/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/forms/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/forms/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/forms/AGENTS.md +4 -0
- package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -2
- package/corpus/templates/forms/app/routes/_app.team.tsx +1 -1
- package/corpus/templates/forms/shared/navigation.ts +1 -1
- package/corpus/templates/macros/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/macros/AGENTS.md +4 -0
- package/corpus/templates/macros/app/routes/settings.tsx +2 -2
- package/corpus/templates/macros/app/routes/team.tsx +1 -1
- package/corpus/templates/mail/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/mail/.agents/skills/email-drafts/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/mail/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/mail/AGENTS.md +4 -0
- package/corpus/templates/mail/changelog/2026-07-08-mail-attachments-in-hosted-environments-now-require-file-sto.md +6 -0
- package/corpus/templates/mail/server/handlers/media.ts +26 -1
- package/corpus/templates/mail/server/lib/outgoing-email.ts +24 -1
- package/corpus/templates/mail/server/lib/upload-store.ts +2 -1
- package/corpus/templates/plan/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/corpus/templates/plan/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/corpus/templates/plan/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/plan/AGENTS.md +4 -0
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +1 -1
- package/corpus/templates/plan/app/routes/settings.tsx +2 -2
- package/corpus/templates/plan/app/routes/team.tsx +1 -1
- package/corpus/templates/plan/changelog/2026-07-08-hosted-plan-images-now-require-connected-storage.md +6 -0
- package/corpus/templates/plan/server/lib/plan-assets.ts +33 -4
- package/corpus/templates/slides/.agents/skills/actions/SKILL.md +5 -0
- package/corpus/templates/slides/.agents/skills/security/SKILL.md +7 -0
- package/corpus/templates/slides/AGENTS.md +4 -0
- package/corpus/templates/slides/actions/generate-image-api.ts +15 -3
- package/corpus/templates/slides/app/routes/settings.tsx +2 -2
- package/corpus/templates/slides/app/routes/team.tsx +1 -1
- package/corpus/templates/slides/changelog/2026-07-08-generated-slide-images-now-return-hosted-file-storage-urls-i.md +6 -0
- package/corpus/templates/slides/shared/api.ts +1 -1
- package/dist/application-state/store.d.ts.map +1 -1
- package/dist/application-state/store.js +8 -2
- package/dist/application-state/store.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +24 -13
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/PoweredByBadge.d.ts +1 -1
- package/dist/client/PoweredByBadge.d.ts.map +1 -1
- package/dist/client/PoweredByBadge.js +3 -9
- package/dist/client/PoweredByBadge.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +28 -9
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/widgets/DataTableWidget.d.ts.map +1 -1
- package/dist/client/chat/widgets/DataTableWidget.js +19 -2
- package/dist/client/chat/widgets/DataTableWidget.js.map +1 -1
- package/dist/client/db-admin/TableEditor.d.ts.map +1 -1
- package/dist/client/db-admin/TableEditor.js +19 -2
- package/dist/client/db-admin/TableEditor.js.map +1 -1
- package/dist/client/db-admin/export-utils.d.ts +2 -0
- package/dist/client/db-admin/export-utils.d.ts.map +1 -1
- package/dist/client/db-admin/export-utils.js +11 -3
- package/dist/client/db-admin/export-utils.js.map +1 -1
- package/dist/client/db-admin/useAgentSync.d.ts.map +1 -1
- package/dist/client/db-admin/useAgentSync.js +63 -0
- package/dist/client/db-admin/useAgentSync.js.map +1 -1
- package/dist/client/error-capture.d.ts.map +1 -1
- package/dist/client/error-capture.js +41 -7
- package/dist/client/error-capture.js.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.d.ts.map +1 -1
- package/dist/client/extensions/EmbeddedExtension.js +3 -1
- package/dist/client/extensions/EmbeddedExtension.js.map +1 -1
- package/dist/client/extensions/ExtensionViewer.d.ts.map +1 -1
- package/dist/client/extensions/ExtensionViewer.js +32 -5
- package/dist/client/extensions/ExtensionViewer.js.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.d.ts.map +1 -1
- package/dist/client/extensions/InlineExtensionFrame.js +3 -1
- package/dist/client/extensions/InlineExtensionFrame.js.map +1 -1
- package/dist/client/extensions/portable-extension.d.ts.map +1 -1
- package/dist/client/extensions/portable-extension.js +1 -0
- package/dist/client/extensions/portable-extension.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +1 -1
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +11 -6
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/org/TeamPage.d.ts.map +1 -1
- package/dist/client/org/TeamPage.js +5 -5
- package/dist/client/org/TeamPage.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +37 -14
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsSection.js +1 -1
- package/dist/client/settings/SettingsSection.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +21 -10
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/db-admin/agent-tools.d.ts.map +1 -1
- package/dist/db-admin/agent-tools.js +7 -2
- package/dist/db-admin/agent-tools.js.map +1 -1
- package/dist/db-admin/operations.d.ts.map +1 -1
- package/dist/db-admin/operations.js +90 -4
- package/dist/db-admin/operations.js.map +1 -1
- package/dist/db-admin/routes.d.ts.map +1 -1
- package/dist/db-admin/routes.js +1 -0
- package/dist/db-admin/routes.js.map +1 -1
- package/dist/db-admin/types.d.ts +4 -0
- package/dist/db-admin/types.d.ts.map +1 -1
- package/dist/db-admin/types.js.map +1 -1
- package/dist/extensions/html-shell.d.ts +5 -4
- package/dist/extensions/html-shell.d.ts.map +1 -1
- package/dist/extensions/html-shell.js.map +1 -1
- package/dist/extensions/routes.d.ts.map +1 -1
- package/dist/extensions/routes.js +8 -0
- package/dist/extensions/routes.js.map +1 -1
- package/dist/navigation/index.d.ts +1 -1
- package/dist/navigation/index.d.ts.map +1 -1
- package/dist/navigation/index.js +1 -1
- package/dist/navigation/index.js.map +1 -1
- package/dist/notifications/routes.d.ts +1 -1
- package/dist/observability/routes.d.ts +1 -1
- package/dist/resources/handlers.d.ts +6 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +9 -8
- package/dist/resources/handlers.js.map +1 -1
- package/dist/server/poll.d.ts +12 -4
- package/dist/server/poll.d.ts.map +1 -1
- package/dist/server/poll.js +236 -9
- package/dist/server/poll.js.map +1 -1
- package/dist/styles/agent-native.css +27 -0
- package/dist/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/default/AGENTS.md +4 -2
- package/dist/templates/headless/AGENTS.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/dist/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/dist/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- package/dist/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
- package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/workspace-core/AGENTS.md +7 -1
- package/dist/templates/workspace-root/AGENTS.md +7 -1
- package/package.json +1 -1
- package/src/templates/default/.agents/skills/actions/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/default/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/default/.agents/skills/security/SKILL.md +7 -0
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/default/AGENTS.md +4 -2
- package/src/templates/headless/AGENTS.md +4 -0
- package/src/templates/workspace-core/.agents/skills/actions/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/adding-a-feature/SKILL.md +5 -0
- package/src/templates/workspace-core/.agents/skills/context-awareness/SKILL.md +4 -0
- package/src/templates/workspace-core/.agents/skills/extensions/SKILL.md +6 -0
- package/src/templates/workspace-core/.agents/skills/performance/SKILL.md +4 -0
- package/src/templates/workspace-core/.agents/skills/real-time-sync/SKILL.md +1 -1
- package/src/templates/workspace-core/.agents/skills/security/SKILL.md +7 -0
- package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/workspace-core/AGENTS.md +7 -1
- package/src/templates/workspace-root/AGENTS.md +7 -1
|
@@ -320,7 +320,7 @@ const messages = {
|
|
|
320
320
|
unassigned: "No asignado",
|
|
321
321
|
them: "A ellos",
|
|
322
322
|
me: "A mí",
|
|
323
|
-
regeneratingNotes: "
|
|
323
|
+
regeneratingNotes: "Regenerando resumen",
|
|
324
324
|
meetingRemoved: "Reunión eliminada",
|
|
325
325
|
couldNotRemoveMeeting: "No se pudo eliminar la reunión",
|
|
326
326
|
couldNotLoadMeeting: "No se pudo cargar esta reunión.",
|
|
@@ -328,8 +328,8 @@ const messages = {
|
|
|
328
328
|
couldNotCopyTranscript: "No se pudo copiar la transcripción",
|
|
329
329
|
allMeetings: "Todas las reuniones",
|
|
330
330
|
live: "Vivir",
|
|
331
|
-
generatingNotesInline: "Generando
|
|
332
|
-
regenerateNotes: "
|
|
331
|
+
generatingNotesInline: "Generando resumen...",
|
|
332
|
+
regenerateNotes: "Regenerar resumen",
|
|
333
333
|
share: "Compartir",
|
|
334
334
|
meetingOptions: "Opciones de reunión",
|
|
335
335
|
removeMeeting: "Eliminar reunión",
|
|
@@ -342,12 +342,13 @@ const messages = {
|
|
|
342
342
|
desktopHint:
|
|
343
343
|
"Para iniciar notas, abre Clips Desktop desde la barra de menús y elige Start Meeting Notes, o haz clic en Start notes cuando aparezca el recordatorio. Clips captura micrófono y audio del sistema, y escribe la transcripción aquí.",
|
|
344
344
|
getDesktopApp: "Obtener aplicación de escritorio",
|
|
345
|
-
generateNotesFailed: "No se
|
|
345
|
+
generateNotesFailed: "No se pudo generar el resumen. Intentar otra vez.",
|
|
346
346
|
attendee_one: "asistente {{count}}",
|
|
347
347
|
attendee_other: "asistentes {{count}}",
|
|
348
348
|
joinCall: "Unirse a la llamada",
|
|
349
349
|
myNotes: "mis notas",
|
|
350
350
|
aiNotes: "notas de IA",
|
|
351
|
+
summary: "Resumen",
|
|
351
352
|
actionItems: "Elementos de acción",
|
|
352
353
|
working: "Laboral…",
|
|
353
354
|
noActionItems:
|
|
@@ -925,7 +926,7 @@ Todos los cambios visibles para los usuarios de Clips se documentan aquí. Puede
|
|
|
925
926
|
unavailable: "Esta reunión es privada o ya no está disponible.",
|
|
926
927
|
tryClips: "Probar Clips",
|
|
927
928
|
attendees: "{{count}} asistentes",
|
|
928
|
-
noAiNotes: "Aún no se
|
|
929
|
+
noAiNotes: "Aún no se ha generado un resumen para esta reunión.",
|
|
929
930
|
summary: "Resumen",
|
|
930
931
|
keyPoints: "Puntos clave",
|
|
931
932
|
actionItems: "Elementos de acción",
|
|
@@ -320,8 +320,7 @@ const messages = {
|
|
|
320
320
|
unassigned: "Non attribué",
|
|
321
321
|
them: "Eux",
|
|
322
322
|
me: "Moi",
|
|
323
|
-
regeneratingNotes:
|
|
324
|
-
"Notes régénératrices : vos propres notes sont conservées",
|
|
323
|
+
regeneratingNotes: "Régénération du résumé",
|
|
325
324
|
meetingRemoved: "Réunion supprimée",
|
|
326
325
|
couldNotRemoveMeeting: "Impossible de supprimer la réunion",
|
|
327
326
|
couldNotLoadMeeting: "Impossible de charger cette réunion.",
|
|
@@ -329,8 +328,8 @@ const messages = {
|
|
|
329
328
|
couldNotCopyTranscript: "Impossible de copier la transcription",
|
|
330
329
|
allMeetings: "Toutes les réunions",
|
|
331
330
|
live: "En direct",
|
|
332
|
-
generatingNotesInline: "
|
|
333
|
-
regenerateNotes: "Régénérer
|
|
331
|
+
generatingNotesInline: "Génération du résumé…",
|
|
332
|
+
regenerateNotes: "Régénérer le résumé",
|
|
334
333
|
share: "Partager",
|
|
335
334
|
meetingOptions: "Options de réunion",
|
|
336
335
|
removeMeeting: "Supprimer la réunion",
|
|
@@ -343,12 +342,13 @@ const messages = {
|
|
|
343
342
|
desktopHint:
|
|
344
343
|
"Pour démarrer les notes, ouvrez Clips Desktop dans la barre de menus et choisissez Start Meeting Notes, ou cliquez sur Start notes lorsque le rappel apparaît. Clips capture le micro et l'audio système, puis écrit la transcription ici.",
|
|
345
344
|
getDesktopApp: "Obtenir l'application de bureau",
|
|
346
|
-
generateNotesFailed: "Impossible de générer
|
|
345
|
+
generateNotesFailed: "Impossible de générer le résumé. Essayer à nouveau.",
|
|
347
346
|
attendee_one: "participant {{count}}",
|
|
348
347
|
attendee_other: "participants {{count}}",
|
|
349
348
|
joinCall: "Rejoindre l'appel",
|
|
350
349
|
myNotes: "Mes notes",
|
|
351
350
|
aiNotes: "Notes sur l'IA",
|
|
351
|
+
summary: "Résumé",
|
|
352
352
|
actionItems: "Éléments d'action",
|
|
353
353
|
working: "Fonctionnement…",
|
|
354
354
|
noActionItems:
|
|
@@ -928,7 +928,7 @@ Tous les changements visibles par les utilisateurs de Clips sont documentés ici
|
|
|
928
928
|
unavailable: "Cette réunion est privée ou n’est plus disponible.",
|
|
929
929
|
tryClips: "Essayer Clips",
|
|
930
930
|
attendees: "{{count}} participants",
|
|
931
|
-
noAiNotes: "
|
|
931
|
+
noAiNotes: "Aucun résumé n’a encore été généré pour cette réunion.",
|
|
932
932
|
summary: "Résumé",
|
|
933
933
|
keyPoints: "Points clés",
|
|
934
934
|
actionItems: "Actions à faire",
|
|
@@ -307,7 +307,7 @@ const messages = {
|
|
|
307
307
|
unassigned: "सौंपे नहीं गए",
|
|
308
308
|
them: "उन्हें",
|
|
309
309
|
me: "मुझे",
|
|
310
|
-
regeneratingNotes: "
|
|
310
|
+
regeneratingNotes: "सारांश पुन: उत्पन्न कर रहे हैं",
|
|
311
311
|
meetingRemoved: "मीटिंग हटा दी गई",
|
|
312
312
|
couldNotRemoveMeeting: "मीटिंग को हटाया नहीं जा सका",
|
|
313
313
|
couldNotLoadMeeting: "इस मीटिंग को लोड नहीं किया जा सका.",
|
|
@@ -315,8 +315,8 @@ const messages = {
|
|
|
315
315
|
couldNotCopyTranscript: "प्रतिलेख कॉपी नहीं किया जा सका",
|
|
316
316
|
allMeetings: "सभी बैठकें",
|
|
317
317
|
live: "रहना",
|
|
318
|
-
generatingNotesInline: "
|
|
319
|
-
regenerateNotes: "
|
|
318
|
+
generatingNotesInline: "सारांश जनरेट कर रहे हैं...",
|
|
319
|
+
regenerateNotes: "सारांश पुन: उत्पन्न करें",
|
|
320
320
|
share: "शेयर करना",
|
|
321
321
|
meetingOptions: "मीटिंग के विकल्प",
|
|
322
322
|
removeMeeting: "मीटिंग हटाएँ",
|
|
@@ -329,12 +329,13 @@ const messages = {
|
|
|
329
329
|
desktopHint:
|
|
330
330
|
"नोट्स शुरू करने के लिए, मेनू बार से Clips Desktop खोलें और Start Meeting Notes चुनें, या रिमाइंडर आने पर Start notes पर क्लिक करें। Clips माइक्रोफ़ोन और सिस्टम ऑडियो कैप्चर करके यहां ट्रांसक्रिप्ट लिखता है।",
|
|
331
331
|
getDesktopApp: "डेस्कटॉप ऐप प्राप्त करें",
|
|
332
|
-
generateNotesFailed: "
|
|
332
|
+
generateNotesFailed: "सारांश जनरेट नहीं किया जा सका. पुनः प्रयास करें।",
|
|
333
333
|
attendee_one: "{{count}} सहभागी",
|
|
334
334
|
attendee_other: "{{count}} उपस्थितगण",
|
|
335
335
|
joinCall: "कॉल में शामिल हों",
|
|
336
336
|
myNotes: "मेरे नोट्स",
|
|
337
337
|
aiNotes: "एआई नोट्स",
|
|
338
|
+
summary: "सारांश",
|
|
338
339
|
actionItems: "एक्शन आइटम्स",
|
|
339
340
|
working: "कार्यरत…",
|
|
340
341
|
noActionItems:
|
|
@@ -896,7 +897,7 @@ Clips में उपयोगकर्ताओं को दिखने व
|
|
|
896
897
|
unavailable: "यह मीटिंग निजी है या अब उपलब्ध नहीं है।",
|
|
897
898
|
tryClips: "Clips आज़माएं",
|
|
898
899
|
attendees: "{{count}} सहभागी",
|
|
899
|
-
noAiNotes: "इस मीटिंग के लिए
|
|
900
|
+
noAiNotes: "इस मीटिंग के लिए सारांश अभी तक जनरेट नहीं हुआ है।",
|
|
900
901
|
summary: "सारांश",
|
|
901
902
|
keyPoints: "मुख्य बिंदु",
|
|
902
903
|
actionItems: "कार्य आइटम",
|
|
@@ -316,7 +316,7 @@ const messages = {
|
|
|
316
316
|
unassigned: "未割り当て",
|
|
317
317
|
them: "彼ら",
|
|
318
318
|
me: "自分",
|
|
319
|
-
regeneratingNotes: "
|
|
319
|
+
regeneratingNotes: "要約を再生成中",
|
|
320
320
|
meetingRemoved: "会議が削除されました",
|
|
321
321
|
couldNotRemoveMeeting: "会議を削除できませんでした",
|
|
322
322
|
couldNotLoadMeeting: "この会議を読み込めませんでした。",
|
|
@@ -324,8 +324,8 @@ const messages = {
|
|
|
324
324
|
couldNotCopyTranscript: "トランスクリプトをコピーできませんでした",
|
|
325
325
|
allMeetings: "すべての会議",
|
|
326
326
|
live: "ライブ",
|
|
327
|
-
generatingNotesInline: "
|
|
328
|
-
regenerateNotes: "
|
|
327
|
+
generatingNotesInline: "要約を生成中…",
|
|
328
|
+
regenerateNotes: "要約を再生成する",
|
|
329
329
|
share: "共有",
|
|
330
330
|
meetingOptions: "会議オプション",
|
|
331
331
|
removeMeeting: "会議を削除する",
|
|
@@ -339,12 +339,13 @@ const messages = {
|
|
|
339
339
|
"メモを開始するには、メニューバーから Clips Desktop を開いて Start Meeting Notes を選ぶか、リマインダーが表示されたら Start notes をクリックします。Clips はマイクとシステム音声を取り込み、ここに文字起こしを書き込みます。",
|
|
340
340
|
getDesktopApp: "デスクトップアプリを入手",
|
|
341
341
|
generateNotesFailed:
|
|
342
|
-
"
|
|
342
|
+
"要約を生成できませんでした。もう一度やり直してください。",
|
|
343
343
|
attendee_one: "{{count}} 出席者",
|
|
344
344
|
attendee_other: "{{count}} 出席者",
|
|
345
345
|
joinCall: "通話に参加する",
|
|
346
346
|
myNotes: "私のメモ",
|
|
347
347
|
aiNotes: "AIメモ",
|
|
348
|
+
summary: "要約",
|
|
348
349
|
actionItems: "アクションアイテム",
|
|
349
350
|
working: "働く…",
|
|
350
351
|
noActionItems:
|
|
@@ -914,7 +915,7 @@ Clips のユーザー向けの主な変更はここに記録されます。コ
|
|
|
914
915
|
unavailable: "この会議は非公開、または利用できなくなりました。",
|
|
915
916
|
tryClips: "Clips を試す",
|
|
916
917
|
attendees: "{{count}} 人の参加者",
|
|
917
|
-
noAiNotes: "
|
|
918
|
+
noAiNotes: "この会議の要約はまだ生成されていません。",
|
|
918
919
|
summary: "要約",
|
|
919
920
|
keyPoints: "重要ポイント",
|
|
920
921
|
actionItems: "アクション項目",
|
|
@@ -312,7 +312,7 @@ const messages = {
|
|
|
312
312
|
unassigned: "할당되지 않음",
|
|
313
313
|
them: "그들을",
|
|
314
314
|
me: "나",
|
|
315
|
-
regeneratingNotes: "
|
|
315
|
+
regeneratingNotes: "요약 재생성 중",
|
|
316
316
|
meetingRemoved: "회의가 삭제되었습니다.",
|
|
317
317
|
couldNotRemoveMeeting: "회의를 삭제할 수 없습니다.",
|
|
318
318
|
couldNotLoadMeeting: "이 회의를 로드할 수 없습니다.",
|
|
@@ -320,8 +320,8 @@ const messages = {
|
|
|
320
320
|
couldNotCopyTranscript: "스크립트를 복사할 수 없습니다.",
|
|
321
321
|
allMeetings: "모든 회의",
|
|
322
322
|
live: "살다",
|
|
323
|
-
generatingNotesInline: "
|
|
324
|
-
regenerateNotes: "
|
|
323
|
+
generatingNotesInline: "요약 생성 중…",
|
|
324
|
+
regenerateNotes: "요약 재생성",
|
|
325
325
|
share: "공유하다",
|
|
326
326
|
meetingOptions: "회의 옵션",
|
|
327
327
|
removeMeeting: "회의 삭제",
|
|
@@ -334,12 +334,13 @@ const messages = {
|
|
|
334
334
|
desktopHint:
|
|
335
335
|
"메모를 시작하려면 메뉴 막대에서 Clips Desktop을 열고 Start Meeting Notes를 선택하거나, 알림이 표시되면 Start notes를 클릭하세요. Clips가 마이크와 시스템 오디오를 캡처하고 여기에 기록을 작성합니다.",
|
|
336
336
|
getDesktopApp: "데스크톱 앱 받기",
|
|
337
|
-
generateNotesFailed: "
|
|
337
|
+
generateNotesFailed: "요약을 생성할 수 없습니다. 다시 시도해 보세요.",
|
|
338
338
|
attendee_one: "{{count}} 참석자",
|
|
339
339
|
attendee_other: "{{count}} 참석자",
|
|
340
340
|
joinCall: "통화에 참여",
|
|
341
341
|
myNotes: "내 노트",
|
|
342
342
|
aiNotes: "AI 노트",
|
|
343
|
+
summary: "요약",
|
|
343
344
|
actionItems: "조치사항",
|
|
344
345
|
working: "일하고 있는…",
|
|
345
346
|
noActionItems:
|
|
@@ -904,7 +905,7 @@ Clips의 모든 사용자 대상 변경 사항은 여기에 기록됩니다. 명
|
|
|
904
905
|
unavailable: "이 회의는 비공개이거나 더 이상 사용할 수 없습니다.",
|
|
905
906
|
tryClips: "Clips 사용해 보기",
|
|
906
907
|
attendees: "참석자 {{count}}명",
|
|
907
|
-
noAiNotes: "이 회의의
|
|
908
|
+
noAiNotes: "이 회의의 요약이 아직 생성되지 않았습니다.",
|
|
908
909
|
summary: "요약",
|
|
909
910
|
keyPoints: "핵심 포인트",
|
|
910
911
|
actionItems: "작업 항목",
|
|
@@ -317,7 +317,7 @@ const messages = {
|
|
|
317
317
|
unassigned: "Não atribuído",
|
|
318
318
|
them: "Eles",
|
|
319
319
|
me: "Meu",
|
|
320
|
-
regeneratingNotes: "Regenerando
|
|
320
|
+
regeneratingNotes: "Regenerando resumo",
|
|
321
321
|
meetingRemoved: "Reunião removida",
|
|
322
322
|
couldNotRemoveMeeting: "Não foi possível remover a reunião",
|
|
323
323
|
couldNotLoadMeeting: "Não foi possível carregar esta reunião.",
|
|
@@ -325,8 +325,8 @@ const messages = {
|
|
|
325
325
|
couldNotCopyTranscript: "Não foi possível copiar a transcrição",
|
|
326
326
|
allMeetings: "Todas as reuniões",
|
|
327
327
|
live: "Ao vivo",
|
|
328
|
-
generatingNotesInline: "Gerando
|
|
329
|
-
regenerateNotes: "Regenerar
|
|
328
|
+
generatingNotesInline: "Gerando resumo…",
|
|
329
|
+
regenerateNotes: "Regenerar resumo",
|
|
330
330
|
share: "Compartilhar",
|
|
331
331
|
meetingOptions: "Opções de reunião",
|
|
332
332
|
removeMeeting: "Remover reunião",
|
|
@@ -339,12 +339,13 @@ const messages = {
|
|
|
339
339
|
desktopHint:
|
|
340
340
|
"Para iniciar notas, abra o Clips Desktop na barra de menus e escolha Start Meeting Notes, ou clique em Start notes quando o lembrete aparecer. O Clips captura o microfone e o áudio do sistema e escreve a transcrição aqui.",
|
|
341
341
|
getDesktopApp: "Obtenha o aplicativo para desktop",
|
|
342
|
-
generateNotesFailed: "Não foi possível gerar
|
|
342
|
+
generateNotesFailed: "Não foi possível gerar o resumo. Tente novamente.",
|
|
343
343
|
attendee_one: "participante {{count}}",
|
|
344
344
|
attendee_other: "participantes {{count}}",
|
|
345
345
|
joinCall: "Participar da chamada",
|
|
346
346
|
myNotes: "Minhas anotações",
|
|
347
347
|
aiNotes: "Notas de IA",
|
|
348
|
+
summary: "Resumo",
|
|
348
349
|
actionItems: "Itens de ação",
|
|
349
350
|
working: "Trabalhando…",
|
|
350
351
|
noActionItems:
|
|
@@ -921,7 +922,7 @@ Todas as mudanças visíveis para usuários do Clips são documentadas aqui. Voc
|
|
|
921
922
|
unavailable: "Esta reunião é privada ou não está mais disponível.",
|
|
922
923
|
tryClips: "Experimentar Clips",
|
|
923
924
|
attendees: "{{count}} participantes",
|
|
924
|
-
noAiNotes: "
|
|
925
|
+
noAiNotes: "Um resumo ainda não foi gerado para esta reunião.",
|
|
925
926
|
summary: "Resumo",
|
|
926
927
|
keyPoints: "Pontos principais",
|
|
927
928
|
actionItems: "Itens de ação",
|
|
@@ -299,7 +299,7 @@ const messages = {
|
|
|
299
299
|
unassigned: "未分配",
|
|
300
300
|
them: "他们",
|
|
301
301
|
me: "我",
|
|
302
|
-
regeneratingNotes: "
|
|
302
|
+
regeneratingNotes: "正在重新生成摘要",
|
|
303
303
|
meetingRemoved: "会议已删除",
|
|
304
304
|
couldNotRemoveMeeting: "无法删除会议",
|
|
305
305
|
couldNotLoadMeeting: "无法加载该会议。",
|
|
@@ -307,8 +307,8 @@ const messages = {
|
|
|
307
307
|
couldNotCopyTranscript: "无法复制成绩单",
|
|
308
308
|
allMeetings: "所有会议",
|
|
309
309
|
live: "居住",
|
|
310
|
-
generatingNotesInline: "
|
|
311
|
-
regenerateNotes: "
|
|
310
|
+
generatingNotesInline: "正在生成摘要...",
|
|
311
|
+
regenerateNotes: "重新生成摘要",
|
|
312
312
|
share: "分享",
|
|
313
313
|
meetingOptions: "会议选项",
|
|
314
314
|
removeMeeting: "删除会议",
|
|
@@ -321,12 +321,13 @@ const messages = {
|
|
|
321
321
|
desktopHint:
|
|
322
322
|
"要开始记录,请从菜单栏打开 Clips Desktop 并选择 Start Meeting Notes,或在提醒出现时点击 Start notes。Clips 会捕获麦克风和系统音频,并在这里写入文字记录。",
|
|
323
323
|
getDesktopApp: "获取桌面应用程序",
|
|
324
|
-
generateNotesFailed: "
|
|
324
|
+
generateNotesFailed: "无法生成摘要。再试一次。",
|
|
325
325
|
attendee_one: "{{count}} 与会者",
|
|
326
326
|
attendee_other: "{{count}} 与会者",
|
|
327
327
|
joinCall: "加入通话",
|
|
328
328
|
myNotes: "我的笔记",
|
|
329
329
|
aiNotes: "人工智能笔记",
|
|
330
|
+
summary: "摘要",
|
|
330
331
|
actionItems: "行动项目",
|
|
331
332
|
working: "在职的…",
|
|
332
333
|
noActionItems: "还没有行动项目。从记录生成笔记后,它们会出现在此处。",
|
|
@@ -867,7 +868,7 @@ Clips 中所有面向用户的重要更改都会记录在这里。你可以随
|
|
|
867
868
|
unavailable: "此会议是私密的或不再可用。",
|
|
868
869
|
tryClips: "试用 Clips",
|
|
869
870
|
attendees: "{{count}} 位参会者",
|
|
870
|
-
noAiNotes: "
|
|
871
|
+
noAiNotes: "此会议尚未生成摘要。",
|
|
871
872
|
summary: "摘要",
|
|
872
873
|
keyPoints: "要点",
|
|
873
874
|
actionItems: "行动项",
|
|
@@ -299,7 +299,7 @@ const messages = {
|
|
|
299
299
|
unassigned: "未指派",
|
|
300
300
|
them: "他們",
|
|
301
301
|
me: "我",
|
|
302
|
-
regeneratingNotes: "
|
|
302
|
+
regeneratingNotes: "正在重新產生摘要",
|
|
303
303
|
meetingRemoved: "會議已刪除",
|
|
304
304
|
couldNotRemoveMeeting: "無法刪除會議",
|
|
305
305
|
couldNotLoadMeeting: "無法載入該會議。",
|
|
@@ -307,8 +307,8 @@ const messages = {
|
|
|
307
307
|
couldNotCopyTranscript: "無法複製逐字稿",
|
|
308
308
|
allMeetings: "所有會議",
|
|
309
309
|
live: "即時",
|
|
310
|
-
generatingNotesInline: "
|
|
311
|
-
regenerateNotes: "
|
|
310
|
+
generatingNotesInline: "正在產生摘要...",
|
|
311
|
+
regenerateNotes: "重新產生摘要",
|
|
312
312
|
share: "分享",
|
|
313
313
|
meetingOptions: "會議選項",
|
|
314
314
|
removeMeeting: "刪除會議",
|
|
@@ -321,12 +321,13 @@ const messages = {
|
|
|
321
321
|
desktopHint:
|
|
322
322
|
"若要開始筆記,請從選單列開啟 Clips Desktop 並選擇 Start Meeting Notes,或在提醒出現時按 Start notes。Clips 會擷取麥克風和系統音訊,並在這裡寫入逐字稿。",
|
|
323
323
|
getDesktopApp: "取得桌面應用程式",
|
|
324
|
-
generateNotesFailed: "
|
|
324
|
+
generateNotesFailed: "無法產生摘要。請再試一次。",
|
|
325
325
|
attendee_one: "{{count}} 與會者",
|
|
326
326
|
attendee_other: "{{count}} 與會者",
|
|
327
327
|
joinCall: "加入通話",
|
|
328
328
|
myNotes: "我的筆記",
|
|
329
329
|
aiNotes: "AI 筆記",
|
|
330
|
+
summary: "摘要",
|
|
330
331
|
actionItems: "行動項目",
|
|
331
332
|
working: "處理中…",
|
|
332
333
|
noActionItems: "還沒有行動項目。從逐字稿產生筆記後,它們會出現在此處。",
|
|
@@ -860,7 +861,7 @@ const messages = {
|
|
|
860
861
|
unavailable: "此會議是私密的或不再可用。",
|
|
861
862
|
tryClips: "試用 Clips",
|
|
862
863
|
attendees: "{{count}} 位與會者",
|
|
863
|
-
noAiNotes: "
|
|
864
|
+
noAiNotes: "此會議尚未產生摘要。",
|
|
864
865
|
summary: "摘要",
|
|
865
866
|
keyPoints: "要點",
|
|
866
867
|
actionItems: "行動項",
|
|
@@ -9,16 +9,16 @@ import {
|
|
|
9
9
|
IconClock,
|
|
10
10
|
IconCopy,
|
|
11
11
|
IconDeviceDesktop,
|
|
12
|
-
|
|
12
|
+
IconDotsVertical,
|
|
13
13
|
IconEdit,
|
|
14
14
|
IconExternalLink,
|
|
15
15
|
IconLoader2,
|
|
16
16
|
IconNotes,
|
|
17
17
|
IconPlayerStop,
|
|
18
|
+
IconRefresh,
|
|
18
19
|
IconShare3,
|
|
19
20
|
IconTrash,
|
|
20
21
|
IconUsers,
|
|
21
|
-
IconWand,
|
|
22
22
|
} from "@tabler/icons-react";
|
|
23
23
|
import { useQueryClient } from "@tanstack/react-query";
|
|
24
24
|
import { useEffect, useMemo, useRef, useState } from "react";
|
|
@@ -60,7 +60,6 @@ import {
|
|
|
60
60
|
DropdownMenuTrigger,
|
|
61
61
|
} from "@/components/ui/dropdown-menu";
|
|
62
62
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
63
|
-
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs";
|
|
64
63
|
import {
|
|
65
64
|
Tooltip,
|
|
66
65
|
TooltipContent,
|
|
@@ -123,14 +122,6 @@ function formatDateTime(iso?: string | null): string {
|
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
124
|
|
|
126
|
-
function formatDurationMs(ms?: number | null): string {
|
|
127
|
-
if (!ms || ms <= 0) return "";
|
|
128
|
-
const total = Math.round(ms / 1000);
|
|
129
|
-
const m = Math.floor(total / 60);
|
|
130
|
-
const s = total % 60;
|
|
131
|
-
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
125
|
function TitleEditor({
|
|
135
126
|
value,
|
|
136
127
|
onChange,
|
|
@@ -482,12 +473,6 @@ export default function MeetingDetailRoute() {
|
|
|
482
473
|
updateMeeting.mutate({ id: meeting.id, summaryMd: next });
|
|
483
474
|
};
|
|
484
475
|
|
|
485
|
-
const handleUserNotesChange = (next: string) => {
|
|
486
|
-
if (!meeting) return;
|
|
487
|
-
patchCachedMeeting({ userNotesMd: next });
|
|
488
|
-
updateMeeting.mutate({ id: meeting.id, userNotesMd: next });
|
|
489
|
-
};
|
|
490
|
-
|
|
491
476
|
const handleToggleActionItem = (index: number, completed: boolean) => {
|
|
492
477
|
if (!meeting) return;
|
|
493
478
|
const items = meeting.actionItemsJson ?? [];
|
|
@@ -517,7 +502,7 @@ export default function MeetingDetailRoute() {
|
|
|
517
502
|
|
|
518
503
|
const handleFinalize = () => {
|
|
519
504
|
if (!meeting) return;
|
|
520
|
-
//
|
|
505
|
+
// User-authored notes (userNotesMd) are separate and untouched by
|
|
521
506
|
// regeneration; only the AI summary/bullets are overwritten. Reassure
|
|
522
507
|
// the user their own notes are kept.
|
|
523
508
|
if (hasNotes) {
|
|
@@ -626,7 +611,8 @@ export default function MeetingDetailRoute() {
|
|
|
626
611
|
const bullets = meeting.bulletsJson ?? [];
|
|
627
612
|
const actionItems = meeting.actionItemsJson ?? [];
|
|
628
613
|
const segments = meeting.segmentsJson ?? [];
|
|
629
|
-
const
|
|
614
|
+
const hasSummary =
|
|
615
|
+
!!meeting.summaryMd || bullets.length > 0 || actionItems.length > 0;
|
|
630
616
|
|
|
631
617
|
const handleCopyTranscript = async () => {
|
|
632
618
|
if (!segments.length) return;
|
|
@@ -647,7 +633,7 @@ export default function MeetingDetailRoute() {
|
|
|
647
633
|
};
|
|
648
634
|
|
|
649
635
|
return (
|
|
650
|
-
<div className="p-6 max-w-6xl mx-auto w-full flex flex-col min-h-0 flex-1">
|
|
636
|
+
<div className="p-6 max-w-6xl mx-auto w-full flex flex-col min-h-0 flex-1 lg:h-full lg:overflow-hidden">
|
|
651
637
|
<PageHeader>
|
|
652
638
|
<Tooltip>
|
|
653
639
|
<TooltipTrigger asChild>
|
|
@@ -692,15 +678,6 @@ export default function MeetingDetailRoute() {
|
|
|
692
678
|
<IconLoader2 className="h-3.5 w-3.5 animate-spin" />
|
|
693
679
|
{t("meetingDetail.generatingNotesInline")}
|
|
694
680
|
</span>
|
|
695
|
-
) : hasNotes ? (
|
|
696
|
-
<Button
|
|
697
|
-
size="sm"
|
|
698
|
-
variant="ghost"
|
|
699
|
-
onClick={handleFinalize}
|
|
700
|
-
className="cursor-pointer h-8"
|
|
701
|
-
>
|
|
702
|
-
{t("meetingDetail.regenerateNotes")}
|
|
703
|
-
</Button>
|
|
704
681
|
) : null}
|
|
705
682
|
<ShareMeetingPopover
|
|
706
683
|
meetingId={meeting.id}
|
|
@@ -721,10 +698,16 @@ export default function MeetingDetailRoute() {
|
|
|
721
698
|
className="h-8 w-8 cursor-pointer"
|
|
722
699
|
aria-label={t("meetingDetail.meetingOptions")}
|
|
723
700
|
>
|
|
724
|
-
<
|
|
701
|
+
<IconDotsVertical className="h-4 w-4" />
|
|
725
702
|
</Button>
|
|
726
703
|
</DropdownMenuTrigger>
|
|
727
704
|
<DropdownMenuContent align="end" className="w-44">
|
|
705
|
+
{hasSummary && !finalize.isPending && (
|
|
706
|
+
<DropdownMenuItem onSelect={handleFinalize}>
|
|
707
|
+
<IconRefresh className="mr-2 h-4 w-4" />
|
|
708
|
+
{t("meetingDetail.regenerateNotes")}
|
|
709
|
+
</DropdownMenuItem>
|
|
710
|
+
)}
|
|
728
711
|
{isLive && (
|
|
729
712
|
<DropdownMenuItem
|
|
730
713
|
onSelect={(event) => {
|
|
@@ -869,94 +852,51 @@ export default function MeetingDetailRoute() {
|
|
|
869
852
|
)}
|
|
870
853
|
</div>
|
|
871
854
|
|
|
872
|
-
<div className="clips-meeting-detail-grid grid grid-cols-1 gap-6 flex-1 min-h-0">
|
|
873
|
-
{/*
|
|
855
|
+
<div className="clips-meeting-detail-grid grid grid-cols-1 gap-6 flex-1 min-h-0 lg:overflow-hidden">
|
|
856
|
+
{/* Summary canvas with generated bullets and action items. */}
|
|
874
857
|
<div
|
|
875
858
|
className={cn(
|
|
876
859
|
"clips-meeting-notes-panel rounded-lg border border-border bg-background min-h-[480px] overflow-hidden flex flex-col",
|
|
877
860
|
notesJustArrived && "animate-in fade-in duration-500",
|
|
878
861
|
)}
|
|
879
862
|
>
|
|
880
|
-
<
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
>
|
|
884
|
-
<div className="flex shrink-0 items-center justify-between gap-2 border-b border-border px-3 py-2">
|
|
885
|
-
<TabsList className="h-8 gap-1 bg-transparent p-0">
|
|
886
|
-
<TabsTrigger
|
|
887
|
-
value="notes"
|
|
888
|
-
className="h-7 px-2.5 text-xs data-[state=active]:bg-muted"
|
|
889
|
-
>
|
|
890
|
-
{t("meetingDetail.myNotes")}
|
|
891
|
-
</TabsTrigger>
|
|
892
|
-
<TabsTrigger
|
|
893
|
-
value="ai"
|
|
894
|
-
className="h-7 gap-1 px-2.5 text-xs data-[state=active]:bg-muted"
|
|
895
|
-
>
|
|
896
|
-
<IconWand className="h-3 w-3" />
|
|
897
|
-
{t("meetingDetail.aiNotes")}
|
|
898
|
-
</TabsTrigger>
|
|
899
|
-
<TabsTrigger
|
|
900
|
-
value="actions"
|
|
901
|
-
className="h-7 px-2.5 text-xs data-[state=active]:bg-muted"
|
|
902
|
-
>
|
|
903
|
-
{t("meetingDetail.actionItems")}
|
|
904
|
-
{actionItems.length > 0 && (
|
|
905
|
-
<span className="ml-1 text-muted-foreground">
|
|
906
|
-
{actionItems.length}
|
|
907
|
-
</span>
|
|
908
|
-
)}
|
|
909
|
-
</TabsTrigger>
|
|
910
|
-
</TabsList>
|
|
911
|
-
{finalize.isPending && (
|
|
912
|
-
<span className="flex items-center gap-1 text-[10px] text-muted-foreground">
|
|
913
|
-
<IconLoader2 className="h-3 w-3 animate-spin" />
|
|
914
|
-
{t("meetingDetail.working")}
|
|
915
|
-
</span>
|
|
916
|
-
)}
|
|
863
|
+
<div className="flex shrink-0 items-center justify-between gap-2 border-b border-border px-4 py-2.5">
|
|
864
|
+
<div className="text-xs font-medium">
|
|
865
|
+
{t("meetingDetail.summary")}
|
|
917
866
|
</div>
|
|
867
|
+
{finalize.isPending && (
|
|
868
|
+
<span className="flex items-center gap-1 text-[10px] text-muted-foreground">
|
|
869
|
+
<IconLoader2 className="h-3 w-3 animate-spin" />
|
|
870
|
+
{t("meetingDetail.working")}
|
|
871
|
+
</span>
|
|
872
|
+
)}
|
|
873
|
+
</div>
|
|
918
874
|
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
onSummaryChange={handleSummaryChange}
|
|
940
|
-
readOnly={!canEdit}
|
|
941
|
-
renderBullet={(b) => (
|
|
942
|
-
<BulletLink
|
|
943
|
-
bullet={b}
|
|
944
|
-
segments={segments}
|
|
945
|
-
onJumpTo={handleJumpToSegment}
|
|
946
|
-
>
|
|
947
|
-
<div className="flex gap-2 text-sm leading-relaxed text-muted-foreground">
|
|
948
|
-
<span>•</span>
|
|
949
|
-
<span className="flex-1">{b}</span>
|
|
950
|
-
</div>
|
|
951
|
-
</BulletLink>
|
|
952
|
-
)}
|
|
953
|
-
/>
|
|
954
|
-
</TabsContent>
|
|
875
|
+
<div className="min-h-0 flex-1 overflow-y-auto">
|
|
876
|
+
<CanvasEditor
|
|
877
|
+
view="ai"
|
|
878
|
+
summaryMd={meeting.summaryMd ?? ""}
|
|
879
|
+
bullets={bullets.map((b) => b.text)}
|
|
880
|
+
onSummaryChange={handleSummaryChange}
|
|
881
|
+
readOnly={!canEdit}
|
|
882
|
+
renderBullet={(b) => (
|
|
883
|
+
<BulletLink
|
|
884
|
+
bullet={b}
|
|
885
|
+
segments={segments}
|
|
886
|
+
onJumpTo={handleJumpToSegment}
|
|
887
|
+
>
|
|
888
|
+
<div className="flex gap-2 text-sm leading-relaxed text-muted-foreground">
|
|
889
|
+
<span>•</span>
|
|
890
|
+
<span className="flex-1">{b}</span>
|
|
891
|
+
</div>
|
|
892
|
+
</BulletLink>
|
|
893
|
+
)}
|
|
894
|
+
/>
|
|
955
895
|
|
|
956
|
-
<
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
896
|
+
<div className="max-w-2xl px-6 pb-6">
|
|
897
|
+
<div className="mb-3 text-xs font-medium">
|
|
898
|
+
{t("meetingDetail.actionItems")}
|
|
899
|
+
</div>
|
|
960
900
|
{actionItems.length > 0 ? (
|
|
961
901
|
<ActionItemsByPerson
|
|
962
902
|
items={actionItems}
|
|
@@ -968,8 +908,8 @@ export default function MeetingDetailRoute() {
|
|
|
968
908
|
{t("meetingDetail.noActionItems")}
|
|
969
909
|
</p>
|
|
970
910
|
)}
|
|
971
|
-
</
|
|
972
|
-
</
|
|
911
|
+
</div>
|
|
912
|
+
</div>
|
|
973
913
|
</div>
|
|
974
914
|
|
|
975
915
|
{/* Transcript pane — chat-bubble layout */}
|
|
@@ -980,13 +920,6 @@ export default function MeetingDetailRoute() {
|
|
|
980
920
|
{t("meetingDetail.transcript")}
|
|
981
921
|
</div>
|
|
982
922
|
<div className="flex items-center gap-2">
|
|
983
|
-
{meeting.transcriptStatus === "ready" && (
|
|
984
|
-
<span className="text-[10px] text-muted-foreground">
|
|
985
|
-
{t("meetingDetail.segments", {
|
|
986
|
-
count: segments.length,
|
|
987
|
-
})}
|
|
988
|
-
</span>
|
|
989
|
-
)}
|
|
990
923
|
{segments.length > 0 && (
|
|
991
924
|
<Tooltip>
|
|
992
925
|
<TooltipTrigger asChild>
|