@agent-native/core 0.91.2 → 0.92.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +31 -0
- package/corpus/core/docs/content/faq.mdx +17 -0
- package/corpus/core/docs/content/notifications.mdx +12 -6
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/agent/production-agent.ts +140 -46
- package/corpus/core/src/agent/tool-search.ts +71 -4
- package/corpus/core/src/application-state/store.ts +12 -1
- package/corpus/core/src/cli/index.ts +20 -0
- package/corpus/core/src/cli/upgrade.ts +798 -0
- package/corpus/core/src/client/AssistantChat.tsx +28 -15
- package/corpus/core/src/client/HighlightedCodeBlock.tsx +20 -3
- package/corpus/core/src/client/PoweredByBadge.tsx +1 -8
- package/corpus/core/src/client/agent-chat-adapter.ts +68 -16
- package/corpus/core/src/client/chat/message-components.tsx +85 -8
- package/corpus/core/src/client/chat/tool-call-display.tsx +355 -144
- package/corpus/core/src/client/chat/widgets/DataTableWidget.tsx +52 -1
- package/corpus/core/src/client/code-agent-chat-adapter.ts +2 -9
- 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/session-replay.ts +3 -97
- package/corpus/core/src/client/settings/SettingsPanel.tsx +738 -441
- package/corpus/core/src/client/settings/SettingsSection.tsx +161 -17
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +25 -9
- package/corpus/core/src/client/sse-event-processor.ts +29 -2
- 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/actions.ts +113 -5
- 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/notifications/channels.ts +88 -25
- package/corpus/core/src/notifications/registry.ts +17 -3
- package/corpus/core/src/notifications/types.ts +4 -1
- package/corpus/core/src/resources/handlers.ts +10 -8
- package/corpus/core/src/server/agent-chat-plugin.ts +7 -3
- package/corpus/core/src/server/poll.ts +293 -8
- package/corpus/core/src/server/request-context.ts +7 -0
- package/corpus/core/src/styles/agent-conversation.css +1 -1
- 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/self-modifying-code/SKILL.md +20 -2
- package/corpus/core/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/default/AGENTS.md +14 -5
- package/corpus/core/src/templates/default/package.json +2 -1
- package/corpus/core/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/headless/AGENTS.md +13 -3
- package/corpus/core/src/templates/headless/package.json +1 -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/self-modifying-code/SKILL.md +20 -2
- package/corpus/core/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/core/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/core/src/templates/workspace-core/AGENTS.md +7 -1
- package/corpus/core/src/templates/workspace-root/AGENTS.md +17 -5
- package/corpus/core/src/templates/workspace-root/package.json +1 -0
- 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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/analytics/.agents/skills/session-replay/SKILL.md +5 -6
- package/corpus/templates/analytics/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/analytics/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/analytics/AGENTS.md +39 -18
- 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 +15 -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/dashboard/DataTable.tsx +41 -6
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +122 -11
- 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/MonitoringPage.tsx +8 -2
- 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 +157 -35
- package/corpus/templates/analytics/app/pages/monitoring/uptime/i18n.ts +17 -2
- package/corpus/templates/analytics/app/pages/monitoring/uptime/types.ts +4 -0
- package/corpus/templates/analytics/app/pages/sessions/SessionDetailPage.tsx +80 -220
- 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-tables-keep-their-size-while-loading.md +6 -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-monitoring-uptime-and-errors-tabs-now-clearly-show-which-view-is-active.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-session-replay-uses-stock-rrweb-sizing-again-so-recorded.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-sidebar-dashboard-menus-now-open-above-the-dashboard-canvas.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-alerting-clarifies-in-app-inbox-vs-email-and-lets-you-paste-slack-or-webhook-urls-per-monitor.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/docs/uptime-monitoring.md +13 -11
- package/corpus/templates/analytics/server/db/schema-monitoring.ts +5 -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 +65 -16
- package/corpus/templates/analytics/server/plugins/db.ts +122 -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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/assets/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/assets/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- 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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/brain/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/calendar/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/calendar/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- 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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/chat/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/clips/.agents/skills/upgrade-agent-native/SKILL.md +87 -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-desktop-meeting-notes-stay-active-from-tray-and-shortcut-controls.md +6 -0
- package/corpus/templates/clips/changelog/2026-07-08-desktop-meeting-popovers-can-start-notes-and-join-the-meetin.md +6 -0
- 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-notes-keep-their-recording-state-when-the-desktop.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-meeting-reminder-dropdowns-now-expand-fully-instead-of-being.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/desktop/src/app.tsx +123 -3
- package/corpus/templates/clips/desktop/src/hooks/useMeetingTranscription.ts +15 -1
- package/corpus/templates/clips/desktop/src/overlays/meeting-notification.tsx +23 -0
- package/corpus/templates/clips/desktop/src/styles.css +23 -1
- package/corpus/templates/clips/desktop/src-tauri/src/adhoc_meetings_watcher.rs +1 -3
- package/corpus/templates/clips/desktop/src-tauri/src/clips/mod.rs +40 -6
- package/corpus/templates/clips/desktop/src-tauri/src/lib.rs +4 -2
- package/corpus/templates/clips/desktop/src-tauri/src/meetings_watcher.rs +3 -5
- package/corpus/templates/clips/desktop/src-tauri/src/native_screen.rs +23 -19
- package/corpus/templates/clips/desktop/src-tauri/src/shortcuts.rs +3 -3
- package/corpus/templates/clips/desktop/src-tauri/src/silence_detector.rs +0 -1
- package/corpus/templates/clips/desktop/src-tauri/src/state.rs +5 -0
- package/corpus/templates/clips/desktop/src-tauri/src/tray.rs +18 -6
- 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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/content/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/content/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/content/AGENTS.md +4 -0
- package/corpus/templates/content/actions/_batch-utils.ts +8 -0
- package/corpus/templates/content/actions/_builder-cms-read-client.ts +7 -5
- package/corpus/templates/content/actions/_database-source-utils.ts +776 -319
- package/corpus/templates/content/actions/_database-utils.ts +6 -1
- package/corpus/templates/content/actions/_property-utils.ts +168 -0
- package/corpus/templates/content/actions/add-content-database-source-field-property.ts +19 -12
- package/corpus/templates/content/actions/bind-content-database-source-field.ts +19 -12
- package/corpus/templates/content/actions/delete-document.ts +9 -13
- package/corpus/templates/content/actions/refresh-content-database-source.ts +5 -5
- package/corpus/templates/content/app/components/editor/body-hydration.ts +35 -11
- package/corpus/templates/content/app/components/editor/database/DatabaseView.tsx +47 -5
- package/corpus/templates/content/app/hooks/use-documents.ts +8 -2
- 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/content/changelog/2026-07-08-builder-source-sync-now-completes-reliably-on-hosted-databases.md +6 -0
- package/corpus/templates/content/changelog/2026-07-08-fixed-builder-database-sync-so-large-sources-continue-past-t.md +6 -0
- package/corpus/templates/content/server/plugins/db.ts +19 -0
- 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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/design/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/dispatch/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/forms/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/forms/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- 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/skills/upgrade-agent-native/SKILL.md +87 -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/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/mail/.agents/skills/storing-data/SKILL.md +5 -1
- package/corpus/templates/mail/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- 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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/plan/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/skills/self-modifying-code/SKILL.md +20 -2
- package/corpus/templates/slides/.agents/skills/upgrade-agent-native/SKILL.md +87 -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/corpus/templates/videos/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/corpus/templates/voice/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/agent/production-agent.d.ts +5 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +112 -42
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/tool-search.d.ts +2 -0
- package/dist/agent/tool-search.d.ts.map +1 -1
- package/dist/agent/tool-search.js +60 -4
- package/dist/agent/tool-search.js.map +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/cli/index.js +19 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/upgrade.d.ts +100 -0
- package/dist/cli/upgrade.d.ts.map +1 -0
- package/dist/cli/upgrade.js +678 -0
- package/dist/cli/upgrade.js.map +1 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +25 -14
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/HighlightedCodeBlock.d.ts +2 -0
- package/dist/client/HighlightedCodeBlock.d.ts.map +1 -1
- package/dist/client/HighlightedCodeBlock.js +10 -1
- package/dist/client/HighlightedCodeBlock.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 +60 -13
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/chat/message-components.d.ts.map +1 -1
- package/dist/client/chat/message-components.js +61 -8
- package/dist/client/chat/message-components.js.map +1 -1
- package/dist/client/chat/tool-call-display.d.ts +12 -0
- package/dist/client/chat/tool-call-display.d.ts.map +1 -1
- package/dist/client/chat/tool-call-display.js +136 -42
- package/dist/client/chat/tool-call-display.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/code-agent-chat-adapter.js +2 -9
- package/dist/client/code-agent-chat-adapter.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/session-replay.d.ts +0 -8
- package/dist/client/session-replay.d.ts.map +1 -1
- package/dist/client/session-replay.js +3 -80
- package/dist/client/session-replay.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +89 -33
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsSection.d.ts +19 -4
- package/dist/client/settings/SettingsSection.d.ts.map +1 -1
- package/dist/client/settings/SettingsSection.js +33 -4
- 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/client/sse-event-processor.d.ts +9 -0
- package/dist/client/sse-event-processor.d.ts.map +1 -1
- package/dist/client/sse-event-processor.js +20 -2
- package/dist/client/sse-event-processor.js.map +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/actions.d.ts.map +1 -1
- package/dist/extensions/actions.js +85 -5
- package/dist/extensions/actions.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/channels.d.ts +8 -3
- package/dist/notifications/channels.d.ts.map +1 -1
- package/dist/notifications/channels.js +61 -22
- package/dist/notifications/channels.js.map +1 -1
- package/dist/notifications/registry.d.ts.map +1 -1
- package/dist/notifications/registry.js +14 -3
- package/dist/notifications/registry.js.map +1 -1
- package/dist/notifications/types.d.ts +4 -1
- package/dist/notifications/types.d.ts.map +1 -1
- package/dist/notifications/types.js.map +1 -1
- package/dist/resources/handlers.d.ts +5 -0
- 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/agent-chat-plugin.d.ts +5 -1
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +2 -2
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/agent-engine-api-key-route.d.ts +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/server/request-context.d.ts +7 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js.map +1 -1
- package/dist/styles/agent-conversation.css +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/self-modifying-code/SKILL.md +20 -2
- package/dist/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/default/AGENTS.md +14 -5
- package/dist/templates/default/package.json +2 -1
- package/dist/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/headless/AGENTS.md +13 -3
- package/dist/templates/headless/package.json +1 -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/self-modifying-code/SKILL.md +20 -2
- package/dist/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/dist/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/dist/templates/workspace-core/AGENTS.md +7 -1
- package/dist/templates/workspace-root/AGENTS.md +17 -5
- package/dist/templates/workspace-root/package.json +1 -0
- package/docs/content/faq.mdx +17 -0
- package/docs/content/notifications.mdx +12 -6
- package/package.json +2 -2
- 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/self-modifying-code/SKILL.md +20 -2
- package/src/templates/default/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/default/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/default/AGENTS.md +14 -5
- package/src/templates/default/package.json +2 -1
- package/src/templates/headless/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/headless/AGENTS.md +13 -3
- package/src/templates/headless/package.json +1 -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/self-modifying-code/SKILL.md +20 -2
- package/src/templates/workspace-core/.agents/skills/storing-data/SKILL.md +5 -1
- package/src/templates/workspace-core/.agents/skills/upgrade-agent-native/SKILL.md +87 -0
- package/src/templates/workspace-core/AGENTS.md +7 -1
- package/src/templates/workspace-root/AGENTS.md +17 -5
- package/src/templates/workspace-root/package.json +1 -0
- package/corpus/templates/analytics/changelog/2026-07-08-session-replay-clamps-ultra-wide-viewports-while-keeping-the.md +0 -6
|
@@ -113,6 +113,8 @@ const CHART_LEGEND_PROPS = {
|
|
|
113
113
|
const PARTIAL_DAY_TIME_ZONE = "America/Los_Angeles";
|
|
114
114
|
const PARTIAL_DAY_DASH = "3 5";
|
|
115
115
|
const PARTIAL_DAY_KEY_PREFIX = "__sql_chart_partial_day";
|
|
116
|
+
const TABLE_PANEL_MIN_HEIGHT_CLASS = "min-h-[386px]";
|
|
117
|
+
const TABLE_PANEL_SKELETON_ROWS = 10;
|
|
116
118
|
|
|
117
119
|
function formatYValue(
|
|
118
120
|
value: number,
|
|
@@ -488,7 +490,7 @@ function SeriesLegend({
|
|
|
488
490
|
if (!shouldShowLegend(panel, keys.length)) return null;
|
|
489
491
|
|
|
490
492
|
return (
|
|
491
|
-
<div className="mt-2 max-h-16 overflow-y-auto overflow-x-hidden pr-1 text-[11px] leading-4 text-muted-foreground">
|
|
493
|
+
<div className="mt-2 min-h-16 max-h-16 overflow-y-auto overflow-x-hidden pr-1 text-[11px] leading-4 text-muted-foreground">
|
|
492
494
|
<div className="flex flex-wrap gap-x-3 gap-y-1">
|
|
493
495
|
{keys.map((key, i) => {
|
|
494
496
|
const hidden = hiddenKeys?.has(key) ?? false;
|
|
@@ -586,6 +588,113 @@ function ChartFrame({
|
|
|
586
588
|
);
|
|
587
589
|
}
|
|
588
590
|
|
|
591
|
+
function isTableLikeChartType(type: ChartType): boolean {
|
|
592
|
+
return type === "table" || type === "heatmap";
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
function chartTypeReservesLegend(panel: SqlPanel): boolean {
|
|
596
|
+
if (panel.config?.legend === false) return false;
|
|
597
|
+
const chartUsesFrame =
|
|
598
|
+
panel.chartType === "line" ||
|
|
599
|
+
panel.chartType === "area" ||
|
|
600
|
+
panel.chartType === "bar" ||
|
|
601
|
+
panel.chartType === "pie";
|
|
602
|
+
if (!chartUsesFrame) return false;
|
|
603
|
+
return (
|
|
604
|
+
panel.chartType === "line" ||
|
|
605
|
+
panel.chartType === "area" ||
|
|
606
|
+
panel.chartType === "bar" ||
|
|
607
|
+
usesPrometheusPresentation(panel)
|
|
608
|
+
);
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
function TableLoadingSkeleton() {
|
|
612
|
+
const columnWidths = ["w-24", "w-32", "w-20", "w-28"];
|
|
613
|
+
|
|
614
|
+
return (
|
|
615
|
+
<div
|
|
616
|
+
data-dashboard-report-loading="true"
|
|
617
|
+
className={`w-full flex-1 space-y-1 ${TABLE_PANEL_MIN_HEIGHT_CLASS}`}
|
|
618
|
+
>
|
|
619
|
+
<div className="relative overflow-x-auto">
|
|
620
|
+
<div className="min-w-[480px]">
|
|
621
|
+
<div className="grid h-8 grid-cols-4 items-center border-b border-border px-2">
|
|
622
|
+
{columnWidths.map((width, index) => (
|
|
623
|
+
<Skeleton key={index} className={`h-3 ${width}`} />
|
|
624
|
+
))}
|
|
625
|
+
</div>
|
|
626
|
+
{Array.from({ length: TABLE_PANEL_SKELETON_ROWS }).map((_, row) => (
|
|
627
|
+
<div
|
|
628
|
+
key={row}
|
|
629
|
+
className="grid h-8 grid-cols-4 items-center border-b border-border/50 px-2"
|
|
630
|
+
>
|
|
631
|
+
{columnWidths.map((width, col) => (
|
|
632
|
+
<Skeleton
|
|
633
|
+
key={col}
|
|
634
|
+
className={`h-3 ${
|
|
635
|
+
col === 0 ? "w-36" : col === 2 ? "ml-auto w-16" : width
|
|
636
|
+
}`}
|
|
637
|
+
/>
|
|
638
|
+
))}
|
|
639
|
+
</div>
|
|
640
|
+
))}
|
|
641
|
+
</div>
|
|
642
|
+
</div>
|
|
643
|
+
<div className="flex h-8 items-center justify-between border-t border-border px-1 text-xs">
|
|
644
|
+
<Skeleton className="h-3 w-28" />
|
|
645
|
+
<Skeleton className="h-3 w-24" />
|
|
646
|
+
</div>
|
|
647
|
+
</div>
|
|
648
|
+
);
|
|
649
|
+
}
|
|
650
|
+
|
|
651
|
+
function SqlChartLoadingSkeleton({ panel }: { panel: SqlPanel }) {
|
|
652
|
+
const fill = useContext(ChartFillHeightContext);
|
|
653
|
+
|
|
654
|
+
if (panel.chartType === "metric") {
|
|
655
|
+
return (
|
|
656
|
+
<Skeleton
|
|
657
|
+
data-dashboard-report-loading="true"
|
|
658
|
+
className="w-full flex-1 min-h-12"
|
|
659
|
+
/>
|
|
660
|
+
);
|
|
661
|
+
}
|
|
662
|
+
|
|
663
|
+
if (isTableLikeChartType(panel.chartType)) {
|
|
664
|
+
return <TableLoadingSkeleton />;
|
|
665
|
+
}
|
|
666
|
+
|
|
667
|
+
const reserveLegend = chartTypeReservesLegend(panel);
|
|
668
|
+
|
|
669
|
+
if (!reserveLegend) {
|
|
670
|
+
return (
|
|
671
|
+
<Skeleton
|
|
672
|
+
data-dashboard-report-loading="true"
|
|
673
|
+
className={`w-full flex-1 ${fill ? "h-full min-h-[250px]" : "min-h-[250px]"}`}
|
|
674
|
+
/>
|
|
675
|
+
);
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
return (
|
|
679
|
+
<div
|
|
680
|
+
data-dashboard-report-loading="true"
|
|
681
|
+
className={`flex w-full flex-1 flex-col overflow-hidden ${fill ? "h-full" : ""}`}
|
|
682
|
+
>
|
|
683
|
+
<Skeleton
|
|
684
|
+
className={`w-full ${fill ? "h-full min-h-[250px] flex-1" : "h-[250px]"}`}
|
|
685
|
+
/>
|
|
686
|
+
<div className="mt-2 grid min-h-16 grid-cols-2 gap-x-3 gap-y-1 overflow-hidden pr-1 sm:grid-cols-3">
|
|
687
|
+
{Array.from({ length: 6 }).map((_, index) => (
|
|
688
|
+
<div key={index} className="flex items-center gap-1.5">
|
|
689
|
+
<Skeleton className="h-2.5 w-3 shrink-0 rounded-sm" />
|
|
690
|
+
<Skeleton className="h-3 w-20 min-w-0" />
|
|
691
|
+
</div>
|
|
692
|
+
))}
|
|
693
|
+
</div>
|
|
694
|
+
</div>
|
|
695
|
+
);
|
|
696
|
+
}
|
|
697
|
+
|
|
589
698
|
function ChartTooltip({
|
|
590
699
|
active,
|
|
591
700
|
payload,
|
|
@@ -962,16 +1071,16 @@ export function SqlChart({
|
|
|
962
1071
|
const yFormatter = panel.config?.yFormatter;
|
|
963
1072
|
|
|
964
1073
|
const isMetric = panel.chartType === "metric";
|
|
965
|
-
const
|
|
1074
|
+
const isTableLike = isTableLikeChartType(panel.chartType);
|
|
1075
|
+
const placeholderMinH = isMetric
|
|
1076
|
+
? "min-h-12"
|
|
1077
|
+
: isTableLike
|
|
1078
|
+
? TABLE_PANEL_MIN_HEIGHT_CLASS
|
|
1079
|
+
: "min-h-[250px]";
|
|
966
1080
|
const placeholderPadY = isMetric ? "py-2" : "py-8";
|
|
967
1081
|
|
|
968
1082
|
if (!loadData || isLoading) {
|
|
969
|
-
return
|
|
970
|
-
<Skeleton
|
|
971
|
-
data-dashboard-report-loading="true"
|
|
972
|
-
className={`w-full flex-1 ${placeholderMinH}`}
|
|
973
|
-
/>
|
|
974
|
-
);
|
|
1083
|
+
return <SqlChartLoadingSkeleton panel={panel} />;
|
|
975
1084
|
}
|
|
976
1085
|
|
|
977
1086
|
if (error) {
|
|
@@ -1366,7 +1475,7 @@ function TableRenderer({
|
|
|
1366
1475
|
}, [handleExportCsv, onExportCsvChange]);
|
|
1367
1476
|
|
|
1368
1477
|
return (
|
|
1369
|
-
<div className=
|
|
1478
|
+
<div className={`space-y-1 ${TABLE_PANEL_MIN_HEIGHT_CLASS}`}>
|
|
1370
1479
|
<div className="relative overflow-x-auto">
|
|
1371
1480
|
<table className="w-full text-sm">
|
|
1372
1481
|
<thead>
|
|
@@ -1989,7 +2098,9 @@ function HeatmapRenderer({
|
|
|
1989
2098
|
|
|
1990
2099
|
if (rows.length === 0 || !valueKey) {
|
|
1991
2100
|
return (
|
|
1992
|
-
<div
|
|
2101
|
+
<div
|
|
2102
|
+
className={`flex items-center justify-center py-8 ${TABLE_PANEL_MIN_HEIGHT_CLASS}`}
|
|
2103
|
+
>
|
|
1993
2104
|
<p className="text-sm text-muted-foreground text-center">
|
|
1994
2105
|
{t("common.noData")}
|
|
1995
2106
|
</p>
|
|
@@ -2010,7 +2121,7 @@ function HeatmapRenderer({
|
|
|
2010
2121
|
};
|
|
2011
2122
|
|
|
2012
2123
|
return (
|
|
2013
|
-
<div className=
|
|
2124
|
+
<div className={`${TABLE_PANEL_MIN_HEIGHT_CLASS} overflow-x-auto`}>
|
|
2014
2125
|
<table className="w-full border-collapse text-sm">
|
|
2015
2126
|
<thead>
|
|
2016
2127
|
<tr className="border-b border-border">
|
|
@@ -8,6 +8,7 @@ import {
|
|
|
8
8
|
useT,
|
|
9
9
|
} from "@agent-native/core/client";
|
|
10
10
|
import { extensionPath } from "@agent-native/core/client/extensions";
|
|
11
|
+
import { useOrgRole } from "@agent-native/core/client/org";
|
|
11
12
|
import {
|
|
12
13
|
IconFlask,
|
|
13
14
|
IconTool,
|
|
@@ -64,8 +65,8 @@ interface ExtensionSearchItem {
|
|
|
64
65
|
const defaultTools = [
|
|
65
66
|
{
|
|
66
67
|
id: "agents",
|
|
67
|
-
nameKey: "navigation.
|
|
68
|
-
href: "/agents",
|
|
68
|
+
nameKey: "navigation.admin",
|
|
69
|
+
href: "/agents?view=dashboards",
|
|
69
70
|
keywords: [
|
|
70
71
|
"agent monitoring",
|
|
71
72
|
"observability",
|
|
@@ -74,6 +75,8 @@ const defaultTools = [
|
|
|
74
75
|
"feedback",
|
|
75
76
|
"database",
|
|
76
77
|
"db admin",
|
|
78
|
+
"dashboard usage",
|
|
79
|
+
"dashboard audit",
|
|
77
80
|
"ab testing",
|
|
78
81
|
"llm",
|
|
79
82
|
],
|
|
@@ -218,6 +221,7 @@ function persistThemePreference(theme: "light" | "dark") {
|
|
|
218
221
|
|
|
219
222
|
export function CommandPalette() {
|
|
220
223
|
const t = useT();
|
|
224
|
+
const { canManageOrg } = useOrgRole();
|
|
221
225
|
const [open, setOpen] = useState(false);
|
|
222
226
|
const [changelogOpen, setChangelogOpen] = useState(false);
|
|
223
227
|
const [languageOpen, setLanguageOpen] = useState(false);
|
|
@@ -428,20 +432,22 @@ export function CommandPalette() {
|
|
|
428
432
|
</CommandGroup>
|
|
429
433
|
|
|
430
434
|
<CommandGroup heading={t("commandPalette.groupTools")}>
|
|
431
|
-
{defaultTools
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
435
|
+
{defaultTools
|
|
436
|
+
.filter((tool) => tool.id !== "agents" || canManageOrg)
|
|
437
|
+
.map((tool) => (
|
|
438
|
+
<CommandItem
|
|
439
|
+
key={`tool-${tool.id}`}
|
|
440
|
+
onSelect={() => go(tool.href)}
|
|
441
|
+
keywords={commandPaletteKeywords(
|
|
442
|
+
t(tool.nameKey),
|
|
443
|
+
"tool",
|
|
444
|
+
...tool.keywords,
|
|
445
|
+
)}
|
|
446
|
+
>
|
|
447
|
+
<IconTool className="me-2 h-4 w-4 text-muted-foreground" />
|
|
448
|
+
{t(tool.nameKey)}
|
|
449
|
+
</CommandItem>
|
|
450
|
+
))}
|
|
445
451
|
</CommandGroup>
|
|
446
452
|
|
|
447
453
|
<CommandGroup heading={t("commandPalette.groupAppearance")}>
|
|
@@ -21,7 +21,7 @@ const pageTitleKeys: Record<string, string> = {
|
|
|
21
21
|
"/analyses": "navigation.analyses",
|
|
22
22
|
"/sessions": "navigation.sessions",
|
|
23
23
|
"/monitoring": "navigation.monitoring",
|
|
24
|
-
"/agents": "navigation.
|
|
24
|
+
"/agents": "navigation.admin",
|
|
25
25
|
"/dashboards/explorer": "navigation.explorer",
|
|
26
26
|
"/settings": "navigation.settings",
|
|
27
27
|
};
|
|
@@ -14,7 +14,6 @@ import {
|
|
|
14
14
|
IconReportAnalytics,
|
|
15
15
|
IconSearch,
|
|
16
16
|
IconArchive,
|
|
17
|
-
IconActivity,
|
|
18
17
|
IconHeartbeat,
|
|
19
18
|
IconPin,
|
|
20
19
|
IconPlus,
|
|
@@ -27,6 +26,7 @@ import {
|
|
|
27
26
|
IconPlayerPlay,
|
|
28
27
|
IconLayoutSidebarLeftCollapse,
|
|
29
28
|
IconLayoutSidebarLeftExpand,
|
|
29
|
+
IconShieldCheck,
|
|
30
30
|
} from "@tabler/icons-react";
|
|
31
31
|
import {
|
|
32
32
|
useQuery,
|
|
@@ -83,7 +83,7 @@ import {
|
|
|
83
83
|
type ChatThreadSummary,
|
|
84
84
|
} from "@agent-native/core/client";
|
|
85
85
|
import { ExtensionsSidebarSection } from "@agent-native/core/client/extensions";
|
|
86
|
-
import { OrgSwitcher } from "@agent-native/core/client/org";
|
|
86
|
+
import { OrgSwitcher, useOrgRole } from "@agent-native/core/client/org";
|
|
87
87
|
|
|
88
88
|
import {
|
|
89
89
|
AlertDialog,
|
|
@@ -1585,6 +1585,7 @@ export function Sidebar({ mobile }: { mobile?: boolean } = {}) {
|
|
|
1585
1585
|
const navigate = useNavigate();
|
|
1586
1586
|
const t = useT();
|
|
1587
1587
|
const queryClient = useQueryClient();
|
|
1588
|
+
const { canManageOrg } = useOrgRole();
|
|
1588
1589
|
const { setTheme } = useTheme();
|
|
1589
1590
|
|
|
1590
1591
|
const isAskRoute = location.pathname === "/ask";
|
|
@@ -2397,12 +2398,16 @@ export function Sidebar({ mobile }: { mobile?: boolean } = {}) {
|
|
|
2397
2398
|
href: "/monitoring",
|
|
2398
2399
|
active: location.pathname.startsWith("/monitoring"),
|
|
2399
2400
|
},
|
|
2400
|
-
|
|
2401
|
-
|
|
2402
|
-
|
|
2403
|
-
|
|
2404
|
-
|
|
2405
|
-
|
|
2401
|
+
...(canManageOrg
|
|
2402
|
+
? [
|
|
2403
|
+
{
|
|
2404
|
+
icon: IconShieldCheck,
|
|
2405
|
+
label: t("navigation.admin"),
|
|
2406
|
+
href: "/agents?view=dashboards",
|
|
2407
|
+
active: location.pathname.startsWith("/agents"),
|
|
2408
|
+
},
|
|
2409
|
+
]
|
|
2410
|
+
: []),
|
|
2406
2411
|
{
|
|
2407
2412
|
icon: IconDatabase,
|
|
2408
2413
|
label: t("navigation.dataSources"),
|
|
@@ -2618,19 +2623,20 @@ export function Sidebar({ mobile }: { mobile?: boolean } = {}) {
|
|
|
2618
2623
|
{t("navigation.monitoring")}
|
|
2619
2624
|
</Link>
|
|
2620
2625
|
|
|
2621
|
-
{
|
|
2622
|
-
|
|
2623
|
-
|
|
2624
|
-
|
|
2625
|
-
|
|
2626
|
-
|
|
2627
|
-
|
|
2628
|
-
|
|
2629
|
-
|
|
2630
|
-
|
|
2631
|
-
|
|
2632
|
-
|
|
2633
|
-
|
|
2626
|
+
{canManageOrg ? (
|
|
2627
|
+
<Link
|
|
2628
|
+
to="/agents?view=dashboards"
|
|
2629
|
+
className={cn(
|
|
2630
|
+
"flex items-center gap-3 rounded-lg px-3 py-2 transition-all hover:text-primary",
|
|
2631
|
+
location.pathname.startsWith("/agents")
|
|
2632
|
+
? "bg-sidebar-accent text-sidebar-accent-foreground"
|
|
2633
|
+
: "text-muted-foreground hover:bg-sidebar-accent/50",
|
|
2634
|
+
)}
|
|
2635
|
+
>
|
|
2636
|
+
<IconShieldCheck className="h-4 w-4" />
|
|
2637
|
+
{t("navigation.admin")}
|
|
2638
|
+
</Link>
|
|
2639
|
+
) : null}
|
|
2634
2640
|
|
|
2635
2641
|
{/* Data Sources link */}
|
|
2636
2642
|
<Link
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useActionMutation, useActionQuery } from "@agent-native/core/client";
|
|
2
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
export interface AnalysisRevision {
|
|
5
|
+
id: string;
|
|
6
|
+
analysisId: string;
|
|
7
|
+
name: string;
|
|
8
|
+
description: string;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
createdBy: string | null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function useAnalysisRevisions(analysisId: string | null) {
|
|
14
|
+
return useActionQuery<AnalysisRevision[]>(
|
|
15
|
+
"list-analysis-revisions",
|
|
16
|
+
analysisId ? { analysisId } : undefined,
|
|
17
|
+
{
|
|
18
|
+
enabled: !!analysisId,
|
|
19
|
+
select: (data: any) => {
|
|
20
|
+
const revisions = data?.revisions ?? data;
|
|
21
|
+
return Array.isArray(revisions) ? revisions : [];
|
|
22
|
+
},
|
|
23
|
+
placeholderData: (prev: any) => prev,
|
|
24
|
+
} as any,
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function useRestoreAnalysisRevision(analysisId: string) {
|
|
29
|
+
const queryClient = useQueryClient();
|
|
30
|
+
return useActionMutation<
|
|
31
|
+
{ id: string; name: string; updatedAt: string },
|
|
32
|
+
{ analysisId: string; revisionId: string }
|
|
33
|
+
>("restore-analysis-revision", {
|
|
34
|
+
onSuccess: () => {
|
|
35
|
+
queryClient.invalidateQueries({
|
|
36
|
+
queryKey: ["action", "list-analysis-revisions", { analysisId }],
|
|
37
|
+
});
|
|
38
|
+
queryClient.invalidateQueries({
|
|
39
|
+
queryKey: ["analysis-detail", analysisId],
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import {
|
|
2
|
+
deleteClientAppState,
|
|
3
|
+
readClientAppState,
|
|
4
|
+
removeAgentChatContextItem,
|
|
5
|
+
setAgentChatContextItem,
|
|
6
|
+
setClientAppState,
|
|
7
|
+
} from "@agent-native/core/client";
|
|
8
|
+
import { useEffect } from "react";
|
|
9
|
+
|
|
10
|
+
import { TAB_ID } from "@/lib/tab-id";
|
|
11
|
+
|
|
12
|
+
const DASHBOARD_CONTEXT_KEY = "analytics-selected-dashboard";
|
|
13
|
+
const SELECTED_OBJECT_STATE_KEY = "selected-object";
|
|
14
|
+
const SELECTED_OBJECT_SOURCE_FIELD = "__agentNativeSelectedObjectSource";
|
|
15
|
+
|
|
16
|
+
export interface DashboardChatContextArgs {
|
|
17
|
+
id: string | null | undefined;
|
|
18
|
+
kind: "explorer" | "sql";
|
|
19
|
+
title?: string | null;
|
|
20
|
+
panelCount?: number;
|
|
21
|
+
canEdit?: boolean;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function dashboardContext(
|
|
25
|
+
args: Required<Pick<DashboardChatContextArgs, "id" | "kind">> & {
|
|
26
|
+
title: string;
|
|
27
|
+
panelCount?: number;
|
|
28
|
+
canEdit?: boolean;
|
|
29
|
+
},
|
|
30
|
+
): string {
|
|
31
|
+
const lines = [
|
|
32
|
+
`The user currently has this Analytics dashboard selected: ${args.title}.`,
|
|
33
|
+
`Dashboard id: ${args.id}`,
|
|
34
|
+
`Dashboard kind: ${args.kind}`,
|
|
35
|
+
];
|
|
36
|
+
if (typeof args.panelCount === "number") {
|
|
37
|
+
lines.push(`Panel count: ${args.panelCount}`);
|
|
38
|
+
}
|
|
39
|
+
if (typeof args.canEdit === "boolean") {
|
|
40
|
+
lines.push(`User can edit: ${args.canEdit ? "yes" : "no"}`);
|
|
41
|
+
}
|
|
42
|
+
if (typeof window !== "undefined") {
|
|
43
|
+
lines.push(
|
|
44
|
+
`Current URL: ${window.location.pathname}${window.location.search}`,
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
lines.push(
|
|
48
|
+
"Use the Analytics dashboard actions to inspect, edit, or restore this dashboard.",
|
|
49
|
+
);
|
|
50
|
+
return lines.join("\n");
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async function deleteSelectedObjectIfOwned() {
|
|
54
|
+
try {
|
|
55
|
+
const current = await readClientAppState<Record<string, unknown>>(
|
|
56
|
+
SELECTED_OBJECT_STATE_KEY,
|
|
57
|
+
);
|
|
58
|
+
if (current?.[SELECTED_OBJECT_SOURCE_FIELD] !== TAB_ID) return;
|
|
59
|
+
await deleteClientAppState(SELECTED_OBJECT_STATE_KEY, {
|
|
60
|
+
keepalive: true,
|
|
61
|
+
requestSource: TAB_ID,
|
|
62
|
+
});
|
|
63
|
+
} catch {
|
|
64
|
+
// Best effort only; avoid clearing another tab's selected object on errors.
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export function useDashboardChatContext(args: DashboardChatContextArgs): void {
|
|
69
|
+
const { id, kind, title, panelCount, canEdit } = args;
|
|
70
|
+
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
if (!id) return;
|
|
73
|
+
const displayTitle = title?.trim() || id;
|
|
74
|
+
const selection = {
|
|
75
|
+
type: "dashboard",
|
|
76
|
+
id,
|
|
77
|
+
kind,
|
|
78
|
+
title: displayTitle,
|
|
79
|
+
panelCount,
|
|
80
|
+
canEdit,
|
|
81
|
+
[SELECTED_OBJECT_SOURCE_FIELD]: TAB_ID,
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
setAgentChatContextItem({
|
|
85
|
+
key: DASHBOARD_CONTEXT_KEY,
|
|
86
|
+
title: `Dashboard: ${displayTitle}`,
|
|
87
|
+
context: dashboardContext({
|
|
88
|
+
id,
|
|
89
|
+
kind,
|
|
90
|
+
title: displayTitle,
|
|
91
|
+
panelCount,
|
|
92
|
+
canEdit,
|
|
93
|
+
}),
|
|
94
|
+
openSidebar: false,
|
|
95
|
+
focus: false,
|
|
96
|
+
});
|
|
97
|
+
setClientAppState(SELECTED_OBJECT_STATE_KEY, selection, {
|
|
98
|
+
keepalive: true,
|
|
99
|
+
requestSource: TAB_ID,
|
|
100
|
+
}).catch(() => {});
|
|
101
|
+
|
|
102
|
+
return () => {
|
|
103
|
+
removeAgentChatContextItem({
|
|
104
|
+
key: DASHBOARD_CONTEXT_KEY,
|
|
105
|
+
openSidebar: false,
|
|
106
|
+
});
|
|
107
|
+
deleteSelectedObjectIfOwned();
|
|
108
|
+
};
|
|
109
|
+
}, [canEdit, id, kind, panelCount, title]);
|
|
110
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { useActionMutation, useActionQuery } from "@agent-native/core/client";
|
|
2
|
+
import { useQueryClient } from "@tanstack/react-query";
|
|
3
|
+
|
|
4
|
+
export interface DashboardRevision {
|
|
5
|
+
id: string;
|
|
6
|
+
dashboardId: string;
|
|
7
|
+
kind: "explorer" | "sql";
|
|
8
|
+
title: string;
|
|
9
|
+
createdAt: string;
|
|
10
|
+
createdBy: string | null;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function useDashboardRevisions(dashboardId: string | null) {
|
|
14
|
+
return useActionQuery<DashboardRevision[]>(
|
|
15
|
+
"list-dashboard-revisions",
|
|
16
|
+
dashboardId ? { dashboardId } : undefined,
|
|
17
|
+
{
|
|
18
|
+
enabled: !!dashboardId,
|
|
19
|
+
select: (data: any) => {
|
|
20
|
+
const revisions = data?.revisions ?? data;
|
|
21
|
+
return Array.isArray(revisions) ? revisions : [];
|
|
22
|
+
},
|
|
23
|
+
placeholderData: (prev: any) => prev,
|
|
24
|
+
} as any,
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export function useRestoreDashboardRevision(dashboardId: string) {
|
|
29
|
+
const queryClient = useQueryClient();
|
|
30
|
+
return useActionMutation<
|
|
31
|
+
{ id: string; name: string; updatedAt: string },
|
|
32
|
+
{ dashboardId: string; revisionId: string }
|
|
33
|
+
>("restore-dashboard-revision", {
|
|
34
|
+
onSuccess: () => {
|
|
35
|
+
queryClient.invalidateQueries({
|
|
36
|
+
queryKey: ["action", "list-dashboard-revisions", { dashboardId }],
|
|
37
|
+
});
|
|
38
|
+
queryClient.invalidateQueries({
|
|
39
|
+
queryKey: ["dashboard", dashboardId],
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -127,9 +127,14 @@ export function useNavigationState() {
|
|
|
127
127
|
if (cmd.view === "sessions" && cmd.recordingId)
|
|
128
128
|
return `/sessions/${encodeURIComponent(cmd.recordingId)}`;
|
|
129
129
|
if (cmd.view === "sessions") return "/sessions";
|
|
130
|
-
if (
|
|
131
|
-
|
|
132
|
-
|
|
130
|
+
if (
|
|
131
|
+
cmd.view === "agents" &&
|
|
132
|
+
(cmd.agentsView === "database" || cmd.agentsView === "dashboards")
|
|
133
|
+
) {
|
|
134
|
+
const params = new URLSearchParams({ view: cmd.agentsView });
|
|
135
|
+
if (cmd.agentsView === "database" && cmd.dbAdminConnectionId) {
|
|
136
|
+
params.set("db", cmd.dbAdminConnectionId);
|
|
137
|
+
}
|
|
133
138
|
return `/agents?${params.toString()}`;
|
|
134
139
|
}
|
|
135
140
|
if (cmd.view === "agents") return "/agents";
|